Asp.net工作流workflow實戰之書簽(二)


1、winform(web程序)下使用工作流

怎樣才能像控制台那樣讓winform或web頁面窗體阻塞等待工作流的繼續執行呢

2、BookMark書簽

書簽:和一般的書簽看書的時候方便查看上次看的內容,工作流中的書簽意思是讓工作流停頓下來,等待用戶在當前狀態繼續操作。

3、書簽的制作

在項目中點擊右鍵→添加新建項→代碼活動。名稱為BookMarkCodeActivity.cs//代碼活動的一個基類是CodeActivity

下面的代碼是創建出來的一個代碼活動

namespace EazyBPMS.WorkFlow
{

    public sealed class ceshi : CodeActivity
    {
        // 定義一個字符串類型的活動輸入參數
        public InArgument<string> Text { get; set; }

        // 如果活動返回值,則從 CodeActivity<TResult>
        // 並從 Execute 方法返回該值。
        protected override void Execute(CodeActivityContext context)
        {
            // 獲取 Text 輸入參數的運行時值
            string text = context.GetValue(this.Text);
        }
    }
}

但是如果是做為書簽使用必須做以下修改

//1、改基類將CodeActivity 改為NativeActivity
//2、重寫屬性CanInduceIdle
//3、修改傳入參數CodeActivityContext修改為NativeActivityContext
//4、創建書簽

namespace EazyBPMS.WorkFlow
{
    //1、改基類將CodeActivity 改為NativeActivity
    //2、重寫屬性CanInduceIdle
    //3、修改傳入參數CodeActivityContext修改為NativeActivityContext
    //4、創建書簽
    public sealed class WaitInputDataActivity<T> : NativeActivity
    {//這個屬性的意思是是否允許工作流空閑/停頓下來
        protected override bool CanInduceIdle
        {
            get
            {
                return true;
            }
        }
        // 定義一個字符串類型的活動輸入參數
        public InOutArgument<string> BookMarkName { get; set; }
        public OutArgument<T> OutResult { get; set; }

        // 如果活動返回值,則從 CodeActivity<TResult>
        // 並從 Execute 方法返回該值。
        protected override void Execute(NativeActivityContext context)
        {
            // 獲取 BookMarkName 輸入參數的運行時值
            string text = context.GetValue(this.BookMarkName);
context.CreateBookmark(text,
new BookmarkCallback(MyCallback)); } //把傳過來的數據value作為輸出參數outResult的值 傳到書簽外面 private void MyCallback(NativeActivityContext context, Bookmark bookmark, object value) { var data = value as BaseResumeBookMarkValue; if (data != null) { context.SetValue(OutResult, (T)data.value); context.SetValue(BookMarkName, data.BookMarkName); } } } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM