SharePoint 2007圖文開發教程【圖片更新中】

簡介
   Microsoft Office SharePoint Server 2007 是一個服務器功能集成套件,它提供全面的內容管理和企業搜索、加速共享業務流程並便利跨界限信息共享以更好地瞭解業務,從而有助於提高組織的工作效率。

Office SharePoint Server 2007通過一個集成平臺而不是依靠分散的系統來支持整個企業內的所有 IntranetExtranet Web 應用程序。

 

此外,該協作和內容管理服務器還爲 IT專業人員和開發人員提供了實現服務器管理、應用程序可擴展性和互操作性所需的平臺和工具。

 

當然,現在最新版本的SharePoint2010,並且Visual Studio 2010中也集成了SharePoint的開發,所以學習如何使用SharePoint開發是很有必要的!

 

SharePoint 主要應用領域

 

簡單的介紹就到這裏,開始我們的SharePoint之旅。

 

安裝

安裝SharePoint可以說相當的簡單,但是前提是需要一些必要的條件:

1、安裝Microsoft Windows 2003
2
、安裝Microsoft SQL Server 2005
3
、安裝Microsoft Visual Studio 2005
4
、接着是最輕易忘記的一環:安裝Microsoft Windows Workflow Foundation 2.2以上的版本。
5
、最後就是安裝Microsoft Office SharePoint Server 2007Microsoft Office SharePoint Designer 2007


具體的安裝參照另外一篇文章:

http://blog.csdn.net/qq823011051/article/details/7578366

 

 

創建Web應用程序

接下來我們利用SharePoint創建第一個Web應用程序。配置完成後會自動跳轉到一個網頁:http://gao:14000/default.aspx

 

這裏是SharePoint的管理中心,很多操作會在這裏完成,以後我們會經常到這個頁面

 

 

點擊操作,選擇服務器上的服務

服務器上的服務中我們可以更改多需要的服務項

點擊應用程序管理,選擇創建或擴展Web應用程序

在這裏我們就可以新建一個Web應用程序

Web應用程序經行相應的配置

 

 

點擊確定後就可以耐心的等待,直到應用程序創建成功

 

小結:通過此文和大家一起了解了SharePoint的簡單介紹,安裝和配置,還有通過SharePoint創建Web應用程序的方法。

 

 

 

上文簡單介紹了有關SharePoint的安裝,配置等內容的介紹。此文我們繼續SharePoint之旅,通過SharePoint創建網站。

 

創建網站

來到熟悉的應用程序管理界面,在SharePoint網站管理中,我們就可以創建網站:

   

 點擊創建網站集進入創建網站集的管理界面,SharePoint爲我們提供了很多網站類型的模板,如發佈網站,會議工作區....

 

根據自己的需求,選擇合適的網站類型。

這裏我們以發佈門戶網站爲例,進行網站配置:

 

點擊確定,稍作等待。看待下面的界面,我們的網站就創建成功啦!

點擊上圖中的鏈接,就會訪問剛剛創建的發佈網:

 從圖中我們也可以看出,我們可以對網站的訪問權限等進行相應的設置。

  修改網站內容

 1)修改網站導航

點擊上圖的鏈接,我們就可以進行相應的管理:

添加完畢後,點擊確定,在首頁就可以看到添加後的效果。

2)管理網站的內容和結構

進入網站內容和結構管理界面,在這裏我們可以對網站進行更多內容的修改:

這裏簡單舉個小例子,修改網站的徽標。點擊根節點就會彈出下拉框,點擊常規設置:

 這裏我們就可以修改網站的徽標:

小結:通過SharePoint創建網站就簡單的介紹到這裏,通過SharePoint可以很容易的創建自己的門戶網站。並且對網站的參數進行修改,希望能對新手有幫助。

 

 

在前面的文章中,我們講解了很多基礎的內容,主要包括安裝配置、簡單的創建網站等。相對來說比較簡單。此文實現簡單的WebPart,繼續我們的SharePoint之旅。

WebPart

WebPart大家應該不會陌生,WebPartASP.NET 2.0中一個非常令人激動的特性。它爲創建動態的網頁接口提供了一系列的可用控件,使得用戶很容易地進行配置或者個性化頁面。並且,用戶可以象在桌面應用中一樣自由地顯示、隱藏或者移動WebPart組件。

如果想向SharePoint中添加WebPart,大體上分爲:創建WebPart,部署WebPart DLL,在SharePoint站點中添加WebPart等步驟。下面逐一說明。

創建WebPart

WebPart也是服務器控件的一種,也就是說創建WebPart和創建一般的服務器控件沒有什麼太大的區別,我們只需要創建一個類庫應用程序,在其中實現就可以了。

using System;
using
 System.Collections.Generic;
using
 System.Text;
using System.Web.UI.WebControls.WebParts;//添加WebParts命名空間


namespace Brian_HelloWebPart
{
    
public class
 Hello : WebPart
    {
        
private string _Text = "Say Hello To Everyone !"
;

        [WebBrowsable(
true), Personalizable(true
)]
        
public string
 Text
        {
            
get { return
 _Text; }
            
set
 { _Text = value; }
        }

        
protected override void
 Render(System.Web.UI.HtmlTextWriter writer)
        {
            writer.Write(_Text);
        }
    }
}

然後我們需要設定下程序集的權限,在AssemblyInfo.cs中添加命名空間:System.Security,然後加上了[assembly: AllowPartiallyTrustedCallers()]這一行代碼。由於現在的程序集是部分信任程序集,所以在向SharePoint中添加的時候會有錯誤,所以這裏需要添加[assembly: AllowPartiallyTrustedCallers()]

這樣,一個簡單的WebPart就完成了。

部署WebPart

右鍵我們工程---屬性---簽名:

選中爲程序集簽名---選擇強名稱密鑰文件:

添加密鑰的目的是爲了使我們的程序集變成強簽名的程序集。編譯我們的工程,生成DLL

接下來將這個DLL放到SharePoint網站工程bin文件夾中。由於WebPart在頁面中運行時必須是一個安全的Control,所以我們必須在Web.config中把它註冊成爲安全的控件。在測試Web Parts之前在Web.config中添加入口點。找到項目文件,打開Web.config

Web.config中添加如下代碼:

<SafeControl Assembly="Brian_HelloWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c53a25ce64c488e1" Namespace="Brian_HelloWebPart" TypeName="Hello" Safe="True" />

可能會有人問上面的PublicKeyToken怎麼獲得,這裏簡單說一下:運行VS2005的命令提示符,執行下面的命令:

要注意需要進入dll文件所在的路徑。到此,我們的WebPart就部署完畢了!

SharePoint站點中添加WebPart

進入我們上文創建的網站,進入網站設置:

點擊web控件,進入添加WebPart界面,點擊新建

進入Web部件庫中我們就可以看到要添加的HelloWebPart,選中後點擊導入庫

然後,網站控制---編輯網頁:

回到首頁,點擊頁面--添加Web部件--瀏覽:

選中Hello,點擊添加

Ok,看到了吧,我們簡單的WebPart就添加成功啦!

  使用WSS開發模板

這裏補充一點,我們可以使用開發模板來完成我們的開發,模板下載。安裝完模板後,再次運行VS2005,就會看到模板:

使用模板,我們可以更方便的實現我們的開發,比如模板會自動爲我們創建密鑰文件等,大家可以試試。

 

小結:至此,簡單的WebPart的實現就基本完成了,相信通過此文,大家可以很容易的掌握WebPart的基本開發。望對新手有幫助。

 

 

前面的文章中,我們編寫了一個非常簡單的WebPart,只是在網頁中輸出一段字符串。在實際的應用中沒有什麼作用。此文和大家分享如何開發高級的WebPart,爲控件添加事件,實現有複合控件的WebPart等,使我們的WebPart更佳實用。

如果大家有開發服務器控件的基礎,此文對你來說沒有什麼難度。想了解相關內容,參看我的ASP.NET的服務器控件開發》系列。廢話不多說,直接進入今天的主題。

Demo 1

第一個例子也很簡單,點擊一個按鈕,顯示當前系統時間。如何創建WebPart就不細說了,不清楚的朋友可以參看SharePoint 2007圖文開發教程(3)---實現簡單的WebPart

直接看代碼:

using System;
using
 System.Runtime.InteropServices;
using
 System.Web.UI;
using
 System.Web.UI.WebControls.WebParts;
using
 System.Web.UI.WebControls;
using
 System.Web.UI.HtmlControls;
using
 System.Xml.Serialization;

using
 Microsoft.SharePoint;
using
 Microsoft.SharePoint.WebControls;
using
 Microsoft.SharePoint.WebPartPages;

namespace
 GetNow
{
    [Guid(
"0708695c-869c-4e8f-a6e9-cfcf148f404c"
)]
    
public class
 GetNow : System.Web.UI.WebControls.WebParts.WebPart, INamingContainer
    {
        
private string
 _text;
        
private HtmlTableCell _tablecell = new
 HtmlTableCell();
        
private Label lb = new
 Label();
        
private Button btn = new
 Button();

        [WebBrowsable(
true), Personalizable(true
)]
        
public string
 Text
        {
            
get { return
 _text; }
            
set
 { _text = value; }
        }
        
public
 GetNow()
        {
            
this.btn.Click += new
 EventHandler(btn_Click);
            
this
.ExportMode = WebPartExportMode.All;
        }
        
/// <summary>

        
/// 重寫OnLoad
        
/// 
</summary>
        protected override void
 OnLoad(EventArgs e)
        {
            
base
.OnLoad(e);

            
if (this.Page.IsPostBack == true
)
            {
                
this
.AddControls();
            }
        }
        
/// <summary>

        
/// 重寫CreateChildControls
        
/// 
</summary>
        protected override void
 CreateChildControls()
        {
            
this.Controls.Add(new LiteralControl("<table>" + "\n"
));
            
this.Controls.Add(new LiteralControl("    <tr>" + "\n"
));
            
this.Controls.Add(this
._tablecell);
            
this.Controls.Add(new LiteralControl("    </tr>" + "\n"
));
            
this.Controls.Add(new LiteralControl("</table>" + "\n"
));

            
if (this.Page.IsPostBack == false
)
            {
                
this
.AddControls();
            }
        }
        
/// <summary>

        
/// click處理函數
        
/// </summary>
        void btn_Click(object
 sender, EventArgs e)
        {
            
this
._text = DateTime.Now.ToString();
            
this._tablecell.InnerHtml = ""
;
            
this
.AddControls();
        }
        
/// <summary>

        
/// 重寫Render
        
/// 
</summary>
        protected override void
 Render(HtmlTextWriter writer)
        {
            
base
.Render(writer);
        }

        
private void
 AddControls()
        {
            
this.lb.ID = this.ID + "Label"
;
            
this.lb.Text = this
._text;
            
this._tablecell.Controls.Add(this
.lb);
            
this._tablecell.Controls.Add(new LiteralControl("<br>"
));
            
this.btn.ID = this.ID + "Button"
;
            
this.btn.Text = "獲取當前時間:"
;
            
this._tablecell.Controls.Add(this
.btn);
        }
    }
}

按照上文的部署方法,將GetNowWebPart添加到SharePoint網站中:測試一下,獲取時間成功!

Demo 2

第二個例子我們來實現WebPart的聯動控制,也就是說通過一個WebPart來控制另外一個WebPart。還是直接看代碼:

using System;
using
 System.Runtime.InteropServices;
using
 System.Web.UI;
using
 System.Web.UI.HtmlControls;
using
 System.Web.UI.WebControls;
using
 System.Web.UI.WebControls.WebParts;
using
 System.Xml.Serialization;
using
 System.Collections;
using
 System.Drawing;

using
 Microsoft.SharePoint;
using
 Microsoft.SharePoint.WebControls;
using
 Microsoft.SharePoint.WebPartPages;
using
 GetNow;

namespace
 SetColor
{
    [Guid(
"803617a2-9dc9-4eb8-b05c-3e064bc16642"
)]
    
public class
 SetColor : System.Web.UI.WebControls.WebParts.WebPart, IPostBackEventHandler
    {
        
private IList _colorlist = new
 ArrayList();
        
private HtmlTableCell _TableCell = new
 HtmlTableCell();

        
public
 SetColor()
        {
            
this
.GetItems();

            
this
.ExportMode = WebPartExportMode.All;
        }

        
private void
 GetItems()
        {
            
this._colorlist.Add("紅色"
);
            
this._colorlist.Add("黃色"
);
            
this._colorlist.Add("藍色"
);
            
this._colorlist.Add("綠色"
);
            
this._colorlist.Add("紫色"
);
        }

        
private void
 AddRows()
        {
            
for (int i = 0
; i < _colorlist.Count; i++)
            {
                
this._TableCell.Controls.Add(new LiteralControl("<table>" + "\n"
));
                
this._TableCell.Controls.Add(new LiteralControl("    <tr>" + "\n"
));
                
this._TableCell.Controls.Add(new LiteralControl("        <td style=\"cursor:hand\" οnclick=\"" + this.Page.ClientScript.GetPostBackEventReference(this, this._colorlist[i].ToString()) + "\">" + this._colorlist[i].ToString() + "</td>" + "\n"
));
                
this._TableCell.Controls.Add(new LiteralControl("    </tr>" + "\n"
));
                
this._TableCell.Controls.Add(new LiteralControl("</table>" + "\n"
));
            }
        }

        
protected override void
 CreateChildControls()
        {
            
this.Controls.Add(new LiteralControl("<table>" + "\n"
));
            
this.Controls.Add(new LiteralControl("    <tr>" + "\n"
));
            
this.Controls.Add(this
._TableCell);
            
this.Controls.Add(new LiteralControl("    </tr>" + "\n"
));
            
this.Controls.Add(new LiteralControl("</table>" + "\n"
));

            
if (this.Page.IsPostBack == false
)
            {
                
this
.AddRows();
            }
        }

        
protected override void
 OnLoad(EventArgs e)
        {
            
base
.OnLoad(e);

            
if (this.Page.IsPostBack == true
)
            {
                
this
.AddRows();
            }
        }

        
protected override void
 Render(HtmlTextWriter writer)
        {
            
base
.Render(writer);
        }

        
public void RaisePostBackEvent(string
 eventArgument)
        {

            
for (int i = 0
; i < WebPartManager.WebParts.Count; i++)
            {

                
if (WebPartManager.WebParts[i].Title == "GetNow"
)
                {
                    GetNow.GetNow instance = (GetNow.GetNow)WebPartManager.WebParts[i];
                    
switch
 (eventArgument)
                    {
                        
case "紅色"
:
                            instance.BackColor = Color.Red;
                            
break
;
                        
case "黃色"
:
                            instance.BackColor = Color.Yellow;
                            
break
;
                        
case "藍色"
:
                            instance.BackColor = Color.Blue;
                            
break
;
                        
case "綠色"
:
                            instance.BackColor = Color.Green;
                            
break
;
                        
case "紫色"
:
                            instance.BackColor = Color.Purple;
                            
break
;
                        
default
:
                            
break
;
                    }
                }

            }
        }
    }
}


代碼不是很難,創建一個WebPart,向其中添加一個List,提供用戶幾種顏色的選擇情況,然後通過用戶選擇的情況改變我們上面GetNow這個WebPart的背景顏色。

按照前面的方法加到SharePoint網站中:

選擇紅色:

選擇紫色:

 ok。我們想要的效果已經實現啦!

小結:上面只是自己拋磚引玉的小例子,希望對新手有幫助。對於WebPart的開發部分就介紹這些吧,望支持。有什麼不得當的地方還望大家指教。根據自己的業務需要,大家可以開發出更實用的WebPart。還有建議大家多看看服務器控件開發的文章,會有幫助!

 

前面兩篇文章介紹了有關WebPart的相關內容,此文繼續SharePoint之旅,體驗下Event Handler的相關內容。

Event Handler

Event HandlerSharePoint中與文檔庫或列表相關聯的事件處理程序,當我們對項目進行某些操作時,Event Handler就會截獲這個事件,然後相應的進行操作。功能上比較像數據庫中的觸發器。比如:刪除某個文件時向管理員發送一個郵件,添加一個列表時進行其他操作等等。
2.0相比,WSS3.0Event Handler提供了更強大的支持,如:列表,文檔庫,內容類型。並且支持同步和異步的操作等。

SharePoint提供一個Event Handler並不是很費力,主要包括:開啓Event Handler支持,編寫Event Handler程序,向SharePoint中部署Event Handler。接下來逐一說明一下。

開啓Event Handler支持

默認情況下是不開啓Event Handler支持的,需要我們手動開啓:進入應用程序管理---進入Web應用程序常規設置。

開啓事件處理程序:

這樣就完成了對Event Handler開啓的支持。

編寫Event Handler程序

SharePointEvent Handler其實是一個類,這個類主要繼承WSS中的SPWebEventReceiverSPEmailEventReceiverSPListEventReceiverSPItemEventReceiverIListEventSink類,並且重寫相應的方法來完成我們的需求。

這裏做個簡單的例子,當我們刪除一個Items時,向日志文件中添加一條記錄。

直接看代碼:

using System;
using
 System.Collections.Generic;
using
 System.Text;
using
 System.IO;

using
 Microsoft.SharePoint;

namespace
 EventHandlerText
{
    
public class
 ItemLogEvent : SPItemEventReceiver
    {
        
/// <summary>

        
/// 重寫ItemDeleting,向日志文件寫數據
        
/// </summary>
        public override void
 ItemDeleting(SPItemEventProperties properties)
        {
            
string path = @"c:\Log.txt"
;

            
string text = "刪除Item" + ":"
 + DateTime.Now.ToString();

            StreamWriter writer = 
new
 StreamWriter(path);

            writer.Write(text);

            writer.Close();
        }

    }
}
是不是很簡單,接下來我們按照爲WebPart添加密鑰文件的方法,爲我們的Event Handler添加密鑰文件,添加的目的我在部署的時候再說。這樣,簡單的Event Handler就完成了。

SharePoint中部署Event Handler

WebPart有所不同的是,Event Handlerdll需要放到GACGlobal Assembly Cache)中,而不能放在SharePoint網站的bin文件夾中,所以我們生成的dll必須進行強簽名,這也就是上面爲什麼添加密鑰文件的目的。

GAC的系統路徑爲:C:\WINDOWS\assembly,直接將生成的Event Handler dll拖入到這個路徑中即可。

先來看下SharePoint中的情況:

在我們先前創建的網站中,我創建了一個文檔庫的List,並且上傳了一個word文件,我們的Event Handler就是要添加到這裏。

接下來就是將這個Event Handler部署到SharePoint中。可以通過代碼的形式,也可以通過Feature的形式。這裏介紹下代碼的形式。

創建一個批處理程序(當然win程序也可以),添加如下代碼:

using System;
using
 System.Collections.Generic;
using
 System.Text;

using
 Microsoft.SharePoint;

namespace
 RegisterEvent
{
    
class
 Program
    {
        
static void Main(string
[] args)
        {
            
try

            {
                SPSite site = 
new SPSite("http://gao:8000/sites/Brian_Publication/");//指定網站

                SPWeb web = site.OpenWeb();

                SPList list = web.Lists[
"文檔庫"];//指定List

                list.EventReceivers.Add(SPEventReceiverType.ItemDeleting, 
"EventHandlerText, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9d965453379ac249""EventHandlerText.ItemLogEvent");//添加Event Handler

                Console.WriteLine(
"發佈完成");

                Console.ReadLine();
            }
            
catch
 (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }
           
        }
    }
}

代碼很容易,想必大家一看就能明白,找到工程生成的可執行文件,運行:

 這樣就代表我們的Event Handler發佈成功啦!至此,Event Handler的部署工作也就完成啦!

最後我們來測試下,進入文檔庫,刪除那個“LINQ中文教程”word文件。到C:\下看下Log.txt

OK,我們的Event Handler執行了,實現了我們想要的效果。

 

小結:有關Event Handler的內容就介紹到這裏,相信大家認真的看一邊就可以很輕鬆的掌握,當然有關Event Handler的內容還不止這些,需要在平時的應用中多多積累。

 

  

此文和大家分享如何在SharePoint中實現Search的功能。

SharePoint中爲我們提供了Search的功能,和Event Handler的實現比較類似,還是需要啓動支持,定製服務,運行服務幾部分內容,下面逐一說下。

啓動Search服務

 我們進入SharePoint的管理中心,進入操作界面,選擇服務器上的服務

進入到服務器上的服務界面後,就會看到當前SharePoint所啓動的服務:

可以看到默認情況下Office SharePoint Server搜索是停止狀態的,所以需要我們手動的開啓搜索服務,點擊啓動後,配置服務器上Office SharePoint Server 搜索服務設置:

點擊開始後,就可以開啓Office SharePoint Server搜索,這裏要注意的是,用戶名需要寫成:域名+用戶名的形式。否則啓動服務時就會出錯。開啓成功後會自動返回服務器上的服務界面:

可以看到,我們的Office SharePoint Server搜索開啓成功。

創建共享提供服務程序

從新回到應用程序管理界面,在Office SharePoint Server共享服務中,選擇創建或配置此服務器的共享服務

進入後進行填寫:

點擊確定,稍作等待:

這樣,我們的共享服務提供程序就創建成功啦!

運行爬網

這一部分有點像蜘蛛的功能,在我們指定的站點內實現抓取資源,並放到數據庫中,爲了能看到明顯的效果,我提前在我前面創建的網站中上傳了一個Word文件:

然後就是對SharePoint中爬網的設置,進入管理中心,可以看到上面創建的共享服務程序:

點擊進入:

選擇搜索設置

進入內容源和爬網計劃,這裏就可以指定我們要爬行的數據源:

這裏只有本地的SharePoint網站,點擊開始所有爬網,就可以進行數據的採集。數據採集的時候會稍微慢些,內存和CPU的使用量都不小,由於SharePoint是服務器端得產品,這點也難免。

OK,我們回到網站進行測試一下,在搜索框中輸入檢索內容:

簡單的查詢:

效果還不錯,至此,SharePoint中提供的Search服務我們就基本上完成啦~

 

小結SharePoint爲我們提供了方便的數據檢索的服務,至於內部的實現手段這裏沒有做深究,但是從運行的結果上看,關鍵詞的索引,中文的分詞,高亮顯示等實現的都還是比較OK的,很值得學習,有機會定要好好研究下內部實現的方法!話說微軟現在有了Bing,在SharePoint中融入BingAPI也是不錯的選擇。

  

 

繼續我們的SharePoint之旅,體驗Workflow的應用,由於以前也很少弄WF,望有什麼問題WF的高手多多指教。

SharePoint 2007圖文開發教程(1)---簡介,安裝,配置及創建Web應用程序中,我介紹了SharePoint所需要安裝的軟件,裏面提到了需要安裝Microsoft Windows Workflow Foundation 2.2以上的版本,目的也就是爲對WF的支持。

Workflow

工作流(Workflow就是業務過程的部分或整體在計算機應用環境下的自動化,它主要解決的是使在多個參與者之間按照某種預定義的規則傳遞文檔、信息或任務的過程自動進行,從而實現某個預期的業務目標,或者促使此目標的實現。簡單地說,工作流就是一系列相互銜接、自動進行的業務活動或任務。一個工作流包括一組任務(或活動)及它們的相互順序關係,還包括流程及任務(或活動)的啓動和終止條件,以及對每個任務(或活動)的描述。

SharePoint中實現Workflow

實現工作流可以有多種方式,SharePoint中爲我們提供了一些內置的Workflow,我們也可以利用SharePoint Desigener來實現定製的工作流,但是這兩種方法都會有一定的侷限性,往往在我們的開發中不能滿足我們的需求,但是我們還有第三種方法,那就是利用Vistual Studio開發工作流,然後添加到SharePoint中。

簡單的看下SharePoint中提供的Workflow模板,我們可以向文檔等中添加工作流模板:

接下來重點說說利用SharePoint Desigener創建工作流,借鑑了網上的一些例子,雖然不是很成熟,但是可以說明問題了:

首先做一些準備條件:

我在我的網站中創建一個請假申請的列表,並在設置中創建欄

創建欄:

點擊確定,我們得準備工作就完成了。下面我們利用SharePoint Desigener創建工作流,打開網站:新建---工作流

下面就是對工作流的設置:

爲工作流起一個名字,然後將這個工作流添加到SharePoint中我們前面創建好的那個請假申請列表。這裏我選擇的是手動啓動工作流,當然也可以選擇自動開啓。

點擊下一步:

在這裏我們對條件和操作經行設置,也就是說對工作流程的描述,填寫完畢後點擊完成

這裏設想的工作流程就是:如果有普通員工請假,給部門經理髮郵件,如果有部門經理請假,就向總經理髮郵件。點擊完成後就會將工作流添加到SharePoint中。

OK,這樣我們就成功的在SharePoint中添加了我們自己設計的一個工作流。

測試工作流

最後要做的就是測試下我們的工作流,回到SharePoint中的請假申請列表,新建一個項目:

由於創建工作流時是設置的手動開啓工作流,所以這裏需要我們自己開下,選擇下圖的工作流

點擊開啓,這樣這個工作流就執行了。

於是乎我高高興興的跑到自己郵箱裏看有沒有發郵件,遺憾的是沒有!爲什麼呢?回來看了下工作流的最後執行狀態:

原來是由於SharePoint電子郵件設置不正確,在網上找了下解決方案:http://office.microsoft.com/zh-cn/sharepointdesigner/HA102379122052.aspx#44

這裏還包括了許多其他問題的解決方案,大家可以參考下。

 

小結:在SharePoint中實現Workflow就簡單說這麼多,如何利用Vistual Studio開發工作Workflow就不說了,水平有限,就不獻醜了,希望通過此文,能夠對學習SharePoint的朋友們有幫助。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章