閱讀英文

共用方式為


使用活動

使用 BAM 最簡易的方式就是使用 BAM API 傳送明確里程碑或資料。 您可以將 BAM 活動視為與實際工作單位保持同步的一筆 SQL 資料表記錄。

重要

處置事件資料流之前必須先予以排清。 EventStream 物件在受處置時不會自動排清資料。 這表示若依照一般常見的程式碼寫法,總是等到活動處理完成後才排清資料流,則一旦發出排清呼叫前發生例外狀況,可能就會造成資料遺失。

為避免資料遺失,建議您將處理和排清作業封裝在 try/finally 區塊中,如以下的虛擬程式碼所示:

BufferedEventStream es = new BufferedEventStream(…)  
Try  
{  
   // Do the activity processing here.  
}  
Finally  
{  
   if (es != null ) es.Flush();  
}  

下列範例程式碼顯示如何使用 BeginActivity、UpdateActivity 和 EndActivity 處理採購單工作單位。 在此範例中,我們假設字串變數 poid 會識別目前處理中的採購單:

using Microsoft.BizTalk.BAM.EventObservation;  
...   
EventStream es=new DirectEventStream(connectionString,1);  
...  
// At the beginning of the processing of a new work:  
//    Here poid is a string variable that has the current   
//    Purchase Order identifier (e.g. PO number)  
es.BeginActivity("PurchaseOrder",poid);  
es.UpdateActivity("PurchaseOrder",poid,  
    "POReceived",DateTime.UtcNow,  
    "POAmount",100,  
    "CustomerName",""Joe",  
    "CustomerCity","Seattle");  
...  
// few days later  
es.UpdateActivity("PurchaseOrder",poid,  
    "POApproved",DateTime.UtcNow,  
    "ProductName","Widget");  
...  
// and another few days later  
es. UpdateActivity("PurchaseOrder",poid,  
    "POShipped",DateTime.UtcNow);  
...  
// and finally  
es. UpdateActivity("PurchaseOrder",poid,  
    "Delivered",DateTime.UtcNow);  
es.EndActivity("PurchaseOrder",poid);  

另請參閱

使用事件資料流實作 BAM 活動
活動接續
BAM 動態基礎結構
BAM API (BizTalk Server 範例)