.net WCF WF4.5 狀態機、書簽與持久化
阿新 • • 發佈:2018-04-04
定義 ica 添加 www. syn title setevent new pan
想看源碼請直接翻到最後,使用方式如下圖
如果同時需要多個書簽可以直接在需要的位置創建書簽,會認為是同一個實例。
若需要實現的效果是同時需要好幾個部門審核,那麽只要在對應的位置同時創建多個書簽即可。
編寫書簽代碼活動
註意幾個地方,創建書簽需要繼承NativeActivity,隨之要修改的就是Execute的參數類型
如下所有註釋部分
public sealed class BookmarkActivity : NativeActivity { // 定義一個字符串類型的活動輸入參數 public InArgument<string> Text { get; set; } public OutArgument<string> bookMark{get;set;} // 如果活動返回值,則從 CodeActivity<TResult> // 並從 Execute 方法返回該值。 //2.修改上下文類型 protected override void Execute(NativeActivityContext context) { // 獲取 Text 輸入參數的運行時值 string text = context.GetValue(this.Text); //3.創建書簽並設置書簽恢復會的回調函數 context.CreateBookmark("name", new BookmarkCallback(final)); } //4.重寫CanInduceIdle protected override bool CanInduceIdle { get { return true; } } //5.通過恢復書簽時自動調用此函數來將書簽傳遞給外部變量protected void final(NativeActivityContext context,Bookmark bookmark,object obj) { Dictionary<string, object> o = (Dictionary<string, object>)obj; context.SetValue(bookMark, context.ActivityInstanceId); }
1.使用WorkflowApplication啟動活動
//與主線程同步 AutoResetEvent syncEvent = new AutoResetEvent(false); var act = new Activity1(); Dictionary<string, object> dictionary = new Dictionary<string, object>(); dictionary.Add("pic","1"); WorkflowApplication app = new WorkflowApplication(act, dictionary); //運行活動 app.Run(); //等待信號 syncEvent.WaitOne();
2.持久化的sql路徑
C:\Windows\Microsoft.NET\Framework\v4.0.30319\SQL\en
3.添加程序集
3.添加引用
using System.Activities.DurableInstancing;
4.在合適位置綁定數據持久化使用的數據庫
SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore(@"Server=DESKTOP-OIGV51O\SQLEXPRESS;database=WFTest;uid=sa;pwd=123"); //綁定數據庫 app.InstanceStore = store;
到這一步數據庫中便已經能夠查看到數據了,接下來要在需要的位置獲取我們的書簽
5.繼續執行後續步驟
//繼續執行 //此處使用數據庫中工作流的ID,而不是使用書簽名 app.Load(Guid.Parse(textBox2.Text)); app.ResumeBookmark(textBox1.Text,null);
代碼:下載
上一篇:.net WCF WF4.5
.net WCF WF4.5 狀態機、書簽與持久化