本文章是由機器翻譯。

協同作業的工作流程

SharePoint 2010 的改進

Paul Andrew

SharePoint 2007 引進了合作應用程式的工作流程,許多組織有好幾藉由移動到 SharePoint 工作流程的手動程序。 主要的理由為什麼我們在軟體設計中使用工作流程是管理長時間執行的處理程序。 並電腦硬體設計完成處理序如快速為儘可能等待完成表單的人做出決策,或共用時外部動作的結果永遠花較長的時間比保留一個 CPU 的忙碌中所需的毫秒數回應時間。 SharePoint 工作流程是軟體的理想的方式自動執行這些手動處理程序的先前所需紙張或使用複雜,來記錄和監視任何長時間執行的活動。

Windows 工作流程基礎首次引入 2005年中,且原先已包含在 Microsoft.NET Framework 3.0。 今天,SharePoint 2010 提供了許多新的改進工作流程開發人員,並在 SharePoint 2007 中的工作流程的熱門程度上建置。 長時間執行人力工作流程完成工作的人通常其中等候我們建議使用 SharePoint 工作流程。 本文將為您介紹主要概念,並描述新的功能。 請先,我會討論在 SharePoint 2010 新功能的相關工作流程開發人員,然後我將會引導完成幾個新的使用者案例。

工作流程模型設計工具的改進

SharePoint 2010 可提供更多選擇工具中,以更滿足這些建立和維護工作流程模型的需要。 工作流程開發工具包括 Visual Studio 2010、 SharePoint 設計工具 2010年和 Visio 2010。

請注意 SharePoint 2010 需要.NET Framework 3.5。 下一版的.NET Framework 4.0 目前開發但產品時刻表意味著 SharePoint 2010 未依存於它。

Visual Studio 2010 包括特別為工作流程專案的 SharePoint 專案的許多工具改良。 新的 SharePoint 解決方案 (WSP) 封裝可以幫助部署您輕鬆地到可讓您新增至 Visual Studio 2010 工作流程專案 (圖 1 ) ASPX 工作流程初始及關聯表單在 SharePoint 伺服器上的工作流程。 在本篇文章稍後的逐步解說,我會告訴您如何新增起始表單。


圖 1 的 Visual Studio 2010 SharePoint 專案範本

SharePoint 設計工具 2010年也會有新的圖形化的工作流程設計工具來設計工作流程和部署直接到 SharePoint。 它也可作為建立原型工具之前 Visual Studio 2010 進一步開發工作流程。

在 SharePoint 設計工具 2010年其他改良是它現在可讓您編輯 SharePoint 會隨附的全新的工作流程。 它將也使用 InfoPath 表單如果已安裝 InfoPath] 或 [資料表單網頁組件如果沒有安裝 InfoPath ; 先前,只 ASPX 表單已由 SharePoint 設計工具 2007年。 因為您現在可以使用 InfoPath 表單,它,很容易非常編輯那些表單稍後與 InfoPath 加以改進。 如果您在工作流程中指定的新資料行它們會自動新增到清單中就會與工作流程關聯的結構描述。 這些稱為關聯資料行,並且可以用於整個 SharePoint 設計工具工作流程。 使用者設定檔資料可以繫結至使得取得 SharePoint 使用者設定檔的相關資訊的工作流程中的屬性。 比方說您可以查閱核准直接的管理員名稱。

SharePoint 設計工具 2010年包括新的工作處理序設計工具會在工作流程中建立的活動,但可讓您如何管理核准程序,全部都在該一個活動內的彈性。 這包括定義逐步提升處理定義核准需求和語意的如果核准期間變更基礎的文件,會發生什麼事的委派。

可以在 Visio 2010 進行進一步編輯在 SharePoint 設計工具 2010年建立工作流程模型。 Visio 2010 支援商務程序模型表示法。 它也支援子和容器以分割圖表和分析圖表中,以確保正確建構的驗證。

在 SharePoint 2010 中新的工作流程模型

網站工作流程

網站工作流程釋放工作流程開發人員從需要清單項目或文件項目來執行對工作流程。 這可以用於當實作工作流程處理序不會啟動清單項目或文件的結果。 這是這種常見的案例開發人員會建立空的清單和以的項目,只是要新增工作流程。 在 Visual 的 Studio 2010 您只需要挑選站台工作流程時建立工作流程專案項目,如 的 圖 2 所示。


圖 2 的站台/清單工作流程] 對話方塊頁面

您可以從在 SharePoint 中的 [網站動作] 功能表中選擇 [網站工作流程) 來取得啟動站台工作流程。 它會顯示您工作新流程可以啟動任何正在執行的站台工作流程和已完成的工作流程。 因為站台工作流程 don’t 有清單項目或從啟動的文件,它們必須以手動方式透過 SharePoint 使用者介面或啟動透過 SharePoint API。

可重複使用宣告式工作流程

在 SharePoint 設計工具 2010年您可以建立可重複使用宣告式工作流程。 在 SharePoint 2007 在 SharePoint 設計工具中建立的工作流程模型可能只是一份清單相關聯。 這些可重複使用工作流程並不依賴特定的清單,但可以是任何清單相關聯。 工作流程設計可重複使用和多個清單相關聯。 而且,另存範本] 命令可用來建立一個包含可重複使用的工作流程,其中可以移到另一個 SharePoint 伺服器或 Visual Studio 2010 WSP 檔案。 在 SharePoint 設計工具中這表示您 don’t 有存取到清單的欄位,以存取資料,因為沒有特定清單結構已連線。

執行階段與裝載的改進

高特殊權限工作流程

在 SharePoint 2007 工作流程執行作為登入使用者的身分識別。 在 SharePoint 2010 高特殊權限可以指定帳戶來執行工作流程,讓它額外的工作流程需要權限 (請參閱 的 圖 3)。 建立工作流程在 SharePoint 設計工具 2010年時, 個別步驟可以加入,啟用它以作者的登入的使用者而不是工作流程執行。


圖 3 的 原稿高特殊權限模擬步驟的 SharePoint 設計工具工作流程

SPTimer 位置

SharePoint 會在其中一個最後的動作而定的兩個位置中執行工作流程執行個體。 如果工作流程中最後的動作已等候使用者輸入,會工作流程繼續執行 Web 前端使用者完成該輸入的位置。 如果工作流程會繼續從延遲計時器或接收到的其他地方事件,它執行 SPTimer 服務中。 使用 [SharePoint 管理中心] 中的 [新的選項],您現在可以設定慣用的伺服器 SPTimer 服務執行。 若要執行此動作按一下 [SharePoint 管理中心] 的 [應用程式管理] 區段的 [管理內容資料庫] 功能表。 然後按一下內容資料庫,然後向下捲動到的 Timer 作業的慣用伺服器設定 (如 的 圖 4 所示)。 您也以手動方式可以停止 SPTimer 服務 don’t 想它在執行任何伺服器上。


圖 4 的 工作流程 Timer 作業的慣用伺服器設定

工作流程通訊改良 

SharePoint 2010 新增四個新工作流程事件接收器的基礎清單的工作流程。 可用之四個工作流程事件接收者是開始]、 [已啟動]、 [Postponed] 和 [已完成 (如 的 [圖 5] 所示)。 這些是類似於其他 SharePoint 事件接收者和它們回應事件在伺服器上執行程式碼。 若要簡化開發,Visual Studio 2010 包含事件接收者的專案類型,讓使用這些事件相當簡單。 新的事件附加至特定的清單,並引發每當事件發生時就該表示上網站的工作流程 can’t 引發這些事件接收者的清單相關聯的工作流程執行個體上。 事件接收者也需要一個清單。


圖 5 的 那可以在 Visual Studio 2010 請建造的事件接收器

但是 SharePoint 2007 產生容易牽涉到在工作流程中的人很難傳送和接收訊息與外部系統。 建議的方法,就是使用工作項目,將訊息傳送至外部系統使用 Web 服務有外部系統更新工作來傳回的結果。

SharePoint 2010 加入支援可外掛式工作流程服務。 這些會是以 Windows 工作流程基礎 (WF) 開發人員熟悉,並藉由建立包含方法和事件介面定義。 這個介面被連線到一組稱為 CallExternalMethod 及 HandleExternalEvent 的活動。 一種工具隨附 WF 在.NET Framework 中稱為 WCA.exe 產生強型別來傳送及接收介面為基礎的活動。 這些產生的活動可以用於在 SharePoint 流程也。 它們並不需要介面來設定屬性為而且而是可以拖曳直接從工具箱至工作流程設計介面。

與 SharePoint 工作流程整合的服務程式碼載入到 GAC 的存取工作流程。 它需要從 SPWorkflowService 基底類別繼承,它必須在 web.config 中參考。

使用這些新活動,您可以傳送非同步訊息給外部系統右從 SharePoint 工作流程之內。 我會調查建立和本文稍後在第二個逐步解說中使用這些活動。

建立簡單的工作流程,Visual Studio 2010 中的逐步解說

SharePoint 工作流程中的重點是互動人,因此在最簡單的事是指派工作給某人,並等待其回應。 下列示範如何新的 Visual Studio 2010 SharePoint 工具讓該工作分派真的容易建置。

步驟 1-建立新的 SharePoint 循序工作流程專案

建立新的 SharePoint 工作流程專案是容易的。 如先前 的 圖 1 中所示,請選擇新的專案範本選取器上的循序工作流程。 這也可以使用狀態機器工作流程樣式來完成。

新的工作流程專案精靈已擁有四個頁面。 第一個是所有的 SharePoint 工具專案範本有共通的網頁,則您想要使用來部署和偵錯您的方案,如 的 圖 6 所示您用來識別本機的 SharePoint 網站的 URL。


圖 6 的 新增工作流程專案精靈] 的第一頁

第二個是您提供工作流程的名稱並選擇是否要與清單或為網站建立關聯的網頁。 此網頁會顯示先前的 的 圖 2

第三個頁面是讓您決定如果 Visual Studio 會自動為您關聯工作流程,或者您可以手動操作之後已部署。 如果選擇工具] 核取方塊中有選取項目清單 (如果您先前選擇清單為基礎的工作流程) 關聯]、 [工作流程歷程記錄清單,以使用] 和 [工作清單中使用 (請參閱 圖 7) 。 通常,歷程記錄] 和 [工作清單並不需要變更。


圖 7 的 新增工作流程專案精靈] 的第三頁

第四個也是最後一個頁面是在選取工作流程可以被啟動方式 (請參閱 的 [圖 8]) 的位置。  您不應該取消選取所有三個這些,否則您的工作流程將會很難開始。 網站工作流程則只能選擇以手動方式啟動工作流程。 以清單為基礎的工作流程,您也可以選擇啟動工作流程執行個體,當您建立的文件或開始文件變更時。


圖 8 的 新增工作流程專案精靈] 的第四頁

新的空白的工作流程模型會看起來像 Visual Studio 2010 在設計介面中的 圖 9 。 啟動工作流程活動衍生自 HandleExternalEvent 活動,並提供從 SharePoint 的初始設定資料至工作流程執行個體。 我會稍後探討更多 HandleExternalEvent 活動。


圖 9 的 原稿 WorkflowActivated 活動的空白工作流程的預設值

步驟 2 – 將初始表單新增至工作流程

初始化表單可以顯示給使用者時它們啟動工作流程。 它可讓工作流程來收集參數之前啟動它。 這可以加入 Visual Studio 2010 中輕鬆地以滑鼠右鍵按一下在 [方案總管] 中的工作流程項目上,並選擇 [加入 [新增項目 的 圖 10 所示。 選取工作流程初始化表單範本,然後新的表單會自動與工作流程產生關聯。 它是在 HTML 中編輯的 ASPX 表單 (請參閱 的 圖 11] 所示)。


圖 10 加入工作流程初始表單

一種方法稱為 GetInitiationData 需要在程式碼後置 ASPX 檔中編輯。 這個方法只傳回字串 ; 如果個多個值建議您序列化它們到 XML 片段傳回它們之前。 一旦執行工作流程執行個體很容易就只是藉由參考 workflowProperties.InitiationData 取得到這個字串。 多個值必須是 de-serialized 從 XML 片段,如果它們以 GetInitiationData 序列化。


圖 11 的 [預設的工作流程 ASPX 初始表單

初始] 表單會加入一個文字欄位中,並且再從 GetInitiationData 方法傳回該欄位。 下列程式碼中的標記加入第一個的 ASP: 內容標籤內如下:

<asp:TextBox ID="MyID" runat="server" /> <br />

GetInitiationData 方法已經存在,且只需要有程式碼加入至傳回 MyID.Text 屬性。 下列程式碼顯示更新的方法程式碼:

private string GetInitiationData()
{
  // TODO: Return a string that contains the initiation data that will be passed to the workflow. Typically , this is in XML format.
  return MyID.Text;
}

步驟 3 – 新增工作流程記錄活動

LogToHistoryList 活動是使用相當簡單。 建立每個工作流程執行個體都有可以在 SharePoint 使用者介面中顯示其歷程記錄清單。 在活動採用單一字串參數,並將項目加入至該清單。 它可用於在生產環境中向使用者報告工作流程執行個體的狀態。 只是將 LogToHistoryList 活動從工具箱拖曳到工作流程設計,並將 [描述] 屬性設定 (請參閱 的 圖 12)。


圖 12 的 原稿 SharePoint 工作流程活動的 Visual Studio 工具箱

在 [工作流程的屬性稱為相依性屬性。 這些會在執行階段結合到另一個活動屬性、 欄位、 屬性或方法。 這個處理程序通常稱為配線往上,而且是什麼讓活動,即使它們 don’t 有編譯時期的彼此的特定型別資訊一起處理在工作流程中。 在 Visual Studio 中的 [屬性] 視窗中每個屬性有線類別欄位或工作流程類別中的類別屬性。 欄位是最容易建立和線路圖的接工作流程屬性允許建立新的欄位、 建立新的屬性或線路圖現有的是來自 [] 對話方塊。


圖 13 的 相依性屬性繫結至建立的欄位

圖 13 顯示新增新欄位以預設名稱。 下面顯示新增的程式碼,以活動,以將屬性設定為工作流程初始資料 MethodInvoking 事件處理常式:

public String logToHistoryListActivity1_HistoryDescription1 = default(System.String);

private void logToHistoryListActivity1_MethodInvoking(object sender, EventArgs e)
{
  logToHistoryListActivity1_HistoryDescription1 = workflowProperties.InitiationData;
}

您實際上可以設定在程式碼中直接 HistoryDescription 屬性,因為這個屬性 doesn’t 連線之間的活動,但是,稍微深入了解相依性屬性是很好的簡單活動。

步驟 4 – 新增 CreateTask 活動

這個的下一步就是主要部分的人力工作流程互動稱為 「 SharePoint 工作項目。 建立任務時、 將它指派給一個人,然後等候的變更會套用到該工作人員。 CreateTask 活動就被拖曳至工作流程設計介面上,然後設定包含所有必要的屬性。 圖 14 顯示 CreateTask 屬性視窗中,在拖曳至該活動出之後。


圖 14 的 原稿 CreateTask 活動的內容窗格

這裡所需的第一件事就是工作的相互關聯語彙基元。 相互關聯語彙基元用於工作流程中的郵件相互關聯。 它提供可讓特定的工作流程執行個體中的一個工作物件及工作流程執行階段在 SharePoint 中的之間的對應的唯一識別項。 這使用,因此當 SharePoint 接收工作流程執行個體的訊息可以找出正確的任務在正確的工作流程執行個體中。 CorrelationToken 屬性必須設定,它不建議這樣做工作,使用 [WorkflowToken 雖然這 isn’t 禁止工具中。 當 TaskToken 並按輸入,請輸入新的名稱為相互關聯語彙基元。 展開 (+) 就會出現並按一下要 OwnerActivityName 右邊向下拖放,然後選擇工作流程的符號。

必須設定 [TaskId 及新的 GUID 指定的任務識別碼。 方法是選取 TaskId 屬性並按一下 […] 省略符號以帶出屬性編輯器。 按一下 [繫結至新的成員] 索引標籤、 選擇建立欄位,然後按一下 [確定]。 相同必須透過來完成 TaskProperties 屬性再次選取屬性]、 [省略符號及新增新欄位。 接下來,按兩下新 CreateTask 活動帶出 createTask1_MethodInvoking 處理常式程式碼,並在程式碼中設定該屬性之工作流程設計介面上。

新任務必須要賦予一個標題,並且很好的量值我將設定工作描述成得到初始表單中的字串。 一旦設定這些屬性這是新增程式碼:

public Guid createTask1_TaskId1 = default(System.Guid);
public SPWorkflowTaskProperties createTask1_TaskProperties1 = new
  Microsoft.SharePoint.Workflow.SPWorkflowTaskProperties();

private void createTask1_MethodInvoking(object sender, EventArgs e)
{
  createTask1_TaskId1 = Guid.NewGuid();
  createTask1_TaskProperties1.Title = "Hello";
  createTask1_TaskProperties1.Description = workflowProperties.InitiationData;
}

步驟 5 – 新增 [OnTaskChanged 和 CompleteTask 活動

使用 While 活動等候工作的多個變更,直到您看到所需的變更。 While 活動必須包含如 OnTaskChanged 活動的另一個活動。 待命活動也可用來藉由新增與實際的事件接收器活動內待命分支是待命的活動接聽的多個事件一次。 或者,您可以只是等候 OnTaskDeleted 活動與刪除該任務。

常見的要求是擴大或等待事件逾時。 這會完成,只要使用待命活動來接聽這兩個任務的變更訊息及計時器訊息使用的延遲活動。 第一個的訊息接收的任一個包含工作流程及其他活動停止等候活動履歷表。 當在逾時,就會發生的延遲活動是傳送郵件。

有很多的上面所描述的選項,不過最簡單是使用 OnTaskChanged 等候對工作項目所做的任何變更,並接著繼續。 若要進行 [OnTaskChanged 您需要電傳向上 [CorrelationToken 和 TaskId 屬性為 [CreateTask 相同的欄位。

上次,新增 CompleteTask 活動,並再次設定 [CorrelationToken 和 TaskId 屬性。 如 的 圖 15 所示,綠色是等候訊息的活動而傳送訊息的活動是藍色。 這是整個 SharePoint 工作流程一致。


圖 15 的 「 已完成的簡單工作工作流程模型

步驟 6 – 部署及測試工作流程

現在工作流程已接近完成,所以在按下 F5 鍵,並等候部署]。 按 F5 將編譯工作流程、 封裝成一個 WSP 的工作流程、 部署該 WSP 到 SharePoint、 啟動 SharePoint 功能、 Visual Studio 2010 偵錯工具附加至 SharePoint 及 Internet Explorer 開頭 SharePoint 網站。

一旦出現 SharePoint 網站,站台工作流程從 [網站動作] 功能表選擇 []。 您會看到所有的站台工作流程,而您可以按一下 [在您啟動它。 一旦它被選取您會看到您的工作流程起始表單,如 的 圖 16 所示。


圖 16 的工作流程初始化表單

其他改進可加入至這個基本入門] 工作流程模型例如使用內容類型來定義您指派給使用電子郵件通知使用者他們已被指派一個任務的一個人的工作,並甚至使用 InfoPath 表單建立更複雜的表單,供使用者完成電子郵件或線上。

建置可外掛式的工作流程服務的逐步解說

新在 SharePoint 2010 是的隨插即用的工作流程服務加入 SharePoint 能力。 這一定已經可能在 [Windows 工作流程基礎但 SharePoint 裝載工作流程執行階段已鎖定,先前 didn’t 允許這。 主要是隨插即用的工作流程服務是專為傳送及接收訊息的工作流程執行個體而設計。 但是它們也是寶貴任何長時間執行的系統作業例如長時間執行計算。

這是工作流程執行階段用它來當作一般化的傳訊管理長時間執行工作的機制。 它只是執行短執行工作內的活動,並會暫停工作流程,直到長時間執行的動作已完成或接收到訊息來指出某個人完成工作。 因此等待人回覆,工作流程執行個體凍結而並不會向上它正在執行的伺服器上的 CPU 或記憶體資源。 (凍結只是工作流程執行個體的狀態會寫入至這類一種方法可以被回解除凍結,以及稍後再繼續上的資料庫記錄的方式)。

所有類型的長時間執行的工作是由工作流程都處理相同的方式。 第一次,它開始長時間執行工作,或傳送訊息並再它暫停工作流程直到完成長時間執行工作或接收到回應。 相互關聯語彙基元用來確保正確的工作流程執行個體已繼續收到回應時。

做為範例考慮兩個常見的長期執行的工作範例。 一個是例子同步的 Web 服務要求呼叫端就會其中封鎖,直到在通道收到回應。 這並不適合用來在工作流程活動內執行。 工作流程服務需要等待 Web 服務呼叫完成而再傳送一則訊息回到與回應一起工作流程執行個體。 另一個範例是需要執行一個 CPU 耗用工作項目,但因為它可能需要花較長的時間比第二個執行外部的工作流程活動所需。 再次,可以使用工作流程服務,並建立工作流程服務執行 CPU 耗用工作項目中的執行緒。 新的執行緒可以傳送訊息,在完成時它。

這兩個這些範例使用相同的模式來實作。 下列逐步解說將示範如何建立新的 SharePoint 循序工作流程,並呼叫因素來識別多少質數數字有都是在 [100,000,000 質數的隨插即用的工作流程服務。 這項工作太長而無法執行活動主要一行中時。

步驟 1-建立隨插即用的工作流程服務

若要在 Visual Studio 2010 中建立可外掛式工作流程服務,您需要實作服務介面和類別在您的專案中。 圖 17 顯示的隨插即用的工作流程服務可以加入至您的專案在一個稱為 MyService.cs 的類別檔案中的範例。 在程式碼介面定義中 IMyService,介面實作類別 MyService 和 MessageOut 方法中的個別的執行緒上透過匿名方法委派執行大部分的邏輯。 在個別執行緒中對 RaiseEvent 呼叫會將訊息傳送給等候 HandleExternalMessage 活動回。

圖 17 的插即用的工作流程服務

// Interface declaration
[ExternalDataExchange]
public interface IMyService
{
  event EventHandler<MyEventArgs> MessageIn;
  void MessageOut(string msg);
}

// Arguments for event handler
[Serializable]
public class MyEventArgs : ExternalDataEventArgs
{
  public MyEventArgs(Guid id) : base(id) { }
  public string sAnswer;
}

// Class for state
class FactoringState
{
  public SPWeb web;
public Guid instanceId;
  public FactoringState(Guid instanceId, SPWeb web)
  {
    this.instanceId = instanceId;
    this.web = web;
  }
}

// Interface implementation
class MyService : Microsoft.SharePoint.Workflow.SPWorkflowExternalDataExchangeService,
                  IMyService
{
  public event EventHandler<MyEventArgs> MessageIn;
  public void MessageOut(string msg)
  {
    ThreadPool.QueueUserWorkItem(delegate(object state)
      {
        FactoringState factState = state as FactoringState;
        DateTime start = DateTime.Now;
        int topNumber = 100000000;
        BitArray numbers = new System.Collections.BitArray(topNumber, true);

        for (int i = 2; i < topNumber; i++)
        { if (numbers[i]) { for (int j = i * 2; j < topNumber; j += i)
          numbers[j] = false; } }
        int primes = 0; for (int i = 2; i < topNumber; i++)
        { if (numbers[i]) primes++; }

        string sAnswer = "Found " + primes + " in " +
          Math.Round(DateTime.Now.Subtract(start).TotalSeconds, 0) + " seconds";

        // Send event back through CallEventHandler
        RaiseEvent(factState.web, factState.instanceId, typeof(IMyService),
                   "MessageIn", new object[] { sAnswer });
      }, new FactoringState(WorkflowEnvironment.WorkflowInstanceId,
                            this.CurrentWorkflow.ParentWeb));
    }

    // Plumbing that routes the event handler
    public override void CallEventHandler(Type eventType, string eventName,
      object[] eventData, SPWorkflow workflow, string identity,
      System.Workflow.Runtime.IPendingWork workHandler, object workItem)
    {
      var msg = new MyEventArgs(workflow.InstanceId);
      msg.sAnswer = eventData[0].ToString();
      msg.WorkHandler = workHandler;
      msg.WorkItem = workItem;
      msg.Identity = identity;
      // If more than one event - you'd need to switch based on parameters
      this.MessageIn(null, msg);
    }
    public override void CreateSubscription(MessageEventSubscription subscription)
    { throw new NotImplementedException(); }
    public override void DeleteSubscription(Guid subscriptionId)
    { throw new NotImplementedException(); }

步驟 2 – 更新 web.config

一旦建構可外掛式工作流程服務它需要使用在 SharePoint 中執行工作流程執行階段註冊。 這是藉由編輯工作流程服務 web.config 區段。 應該完成所需的 web.config 編輯使用呼叫 SPWebApplication.WebConfigModifications.Add 一個功能接收器。 下列程式碼顯示要加入額外的組態項目:

<WorkflowServices><WorkflowService Assembly="WorkflowProject1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=YOURPUBLICKEY" Class="WorkflowProject1.MyService">
</WorkflowService></WorkflowServices>

組件名稱和公開金鑰資訊使用可獲得 GACUTIL.EXE/l。

步驟 3 – 建立工作流程模型

工作的其餘部分是簡單的。 將呼叫外部方法和處理外部事件活動新增到工作流程,並設定它們來指向此服務,如 的 [圖 18] 所示。 呼叫外部方法活動會呼叫 MessageOut 服務中,並處理外部事件活動將會等候事件 MessageIn。 這牽涉到在兩個活動的每個中設定 InterfaceType 和 EventName 屬性。


圖 18 的 使用插即用的工作流程服務的已完成工作流程


圖 19 完成質數計算插即用的工作流程服務

步驟 4 – 以執行工作流程

執行此工作流程時它會啟動個別的執行緒可外掛式工作流程服務來進行質數計算中。 10-15 秒執行後, 一個工作流程的歷程記錄項目會顯示如 圖 19它顯示都 5,761,455 質數之下 100,000,000。

如所示,沒有為隨插即用的工作流程服務撰寫一些程式碼和更多的程式碼,可以為您連線到每一個系統寫入。 有兩個選項可用來減少與外部服務通訊所需的程式碼數量。 其中一個是以 BizTalk Server 和 BizTalk 配接器程式庫的使使用連接其他系統的介面。 另正在使用商務連線服務在 SharePoint 2010 其中提供的方法來公開資料來自另一個系統透過外部的清單。

簡單又成功

在新工具在 Visual Studio 2010、 SharePoint 設計工具 2010年和 Visio 2010 工作流程中進行 SharePoint 2010 著手進行,並將其成功的開發人員更容易。 SharePoint 2010 工作流程主機中的新功能讓 SharePoint 同時更穩定且適用於解決更多種類的軟體中的工作流程問題。

工作流程皆現在可輕鬆地建置和部署使用標準 SharePoint WSP 檔案封裝工具隨附 Visual Studio 2010 SharePoint。 能夠部署到許多大型公司表示工作流程中常見的標準 SharePoint 網站可以被採用更容易。 在 SharePoint 中的工作流程可以輕鬆建置通訊的長期執行程序與透過工作和電子郵件的人。 在 SharePoint 中的工作流程也現在更容易傳達與透過可外掛式工作流程服務的商務連線服務的系統,以及與 BizTalk Server。

本文中的兩個逐步解說程式碼可從我的部落格,在 blogs.msdn.com/pandrew 下載。

Paul Andrew 是在 Microsoft 的 SharePoint 的資深技術產品經理。 他負責的 SharePoint 開發人員對象。 在 2005,他是書籍"展示 Windows 工作流程基礎,"SAMS 發佈的前置重疊時間作者。 他中的電腦系統工程從 Massey 大學,紐西蘭,持有 Bachelor 的技術,也有 MCSD、 MCSE 和 MCDBA 認證。