<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ★33°空間‰


                           ----★七彩服飾  【最潮拜☆日單精品】【Esprit】【Hotwind】滿150包郵-女裝-流行女裝    www.7color.hb.cn

                           ----智力比知識(shí)重要,素質(zhì)比智力重要,覺(jué)悟比素質(zhì)更重要
    posts - 110,comments - 35,trackbacks - 0

    1、? 從宿主程序啟動(dòng) Workflow 實(shí)例(不帶參數(shù)):

    Type type = typeof(WorkflowClass);

    WorkflowInstance workflow = wfRuntime.CreateWorkflow(type).Start();

    ?

    ?

    2、? 從宿主程序啟動(dòng) Workflow 實(shí)例(帶有參數(shù)):

    Dictionary <string, object> parms = newDictionary<string, object>();

    parms.Add("Para1Name", Para1Value);?? //Para1Name 對(duì)應(yīng)于WorkflowClass同類型的屬性

    parms.Add("Para2Name", Para2Value); ? //Para2Name 對(duì)應(yīng)于WorkflowClass同類型的屬性

    ?

    Type type = typeof(WorkflowClass);

    WorkflowInstance workflow = wfRuntime.CreateWorkflow(type, parms).Start();

    ?

    ?

    3、? Workflow 調(diào)用外部方法(多為宿主程序的方法):

    A、?? 定義一個(gè)注明 [ExternalDataExchange] 的接口,申明調(diào)用的方法( Local Service 實(shí)現(xiàn))

    [ExternalDataExchange]

    public interface IApproveService

    {

    string GetApprover(LVInfo obj);

    }

    B、?? 定義一個(gè)實(shí)現(xiàn)了 A 之接口的類(即 Local Service

    public class ApproveService : IApproveService

    {

    public string ? GetApprover(LVInfo obj)

    {

    ???? // 具體業(yè)務(wù)邏輯的實(shí)現(xiàn)

    }

    }

    C、 Workflow 中的調(diào)用實(shí)現(xiàn) ==> 具體的參數(shù)決定了對(duì)應(yīng)的屬性

    a .在 WorkflowClass 中定義屬性“ string Approver , LVInfo ObjLVInfo

    b .使用 CallExternalMethodAcitivity ,其屬性中 InterfaceType IApproveService , MethodName GetApprover ,其對(duì)應(yīng)的 Parameter ReturnValue Approver Parameter ObjLVInfo 。

    ?

    ?

    4、? Workflow 響應(yīng)外部事件(可單獨(dú)響應(yīng),亦可用 Listen 偵聽(tīng)) ==> 3 可并于一起實(shí)現(xiàn):

    A、 定義一個(gè)繼承 System.Workflow.Activities. ExternalDataEventArgs 類的事件參數(shù)類

    public class ApproveEventArgs : ExternalDataEventArgs

    {

    ????????????? public ApproveEventArgs(Guid instanceId, …… ) : base(instanceId)

    {

    // 構(gòu)造函數(shù)業(yè)務(wù)邏輯

    }

    // 其他業(yè)務(wù)邏輯的屬性

    }

    B、?? 定義一個(gè)注明 [ExternalDataExchange] 的接口,申明響應(yīng)的 event Local Service 實(shí)現(xiàn))

    [ExternalDataExchange]

    public interface IApproveService// 具體種類根據(jù)業(yè)務(wù)邏輯需要而定

    {

    event EventHandler<ApproveEventArgs> Approved;

    event EventHandler<ApproveEventArgs> Rejected;

    }

    C、 定義一個(gè)實(shí)現(xiàn)了 B 之接口的類,并實(shí)現(xiàn)各個(gè)具體的事件響應(yīng)(即 Local Service

    ??????? public void Approve()??? // Called by the host to approve an order

    ??????? {

    ??????????? ThreadPool.QueueUserWorkItem(CallBackForApproval);?? // 此處是為了線程的優(yōu)化

    ??????? }

    ??????? private void CallBackForApproval(object o)

    ??????? {

    ???????? ??? EventHandler<ApproveEventArgs> orderApproved = this.Approved;

    ??????????? if (orderApproved != null)

    ??????????????? orderApproved(null, newApproveEventArgs(instanceId.InstanceId, ……));

    ??????? }

    ?

    ??????? public void Reject()???? // Called by the host to reject an order

    ??????? {

    ??????????? ThreadPool.QueueUserWorkItem(CallBackForRejection); // 此處是為了線程的優(yōu)化

    ??????? }

    ??????? private void CallBackForRejection(object o)

    ??????? {

    ??????????? EventHandler<ApproveEventArgs> orderRejected = this.Rejected;

    ??????????? if (orderRejected != null)

    ??????????????? orderRejected(null, newApproveEventArgs(instanceId.InstanceId, ……));

    ??????? }

    ?

    // Events that handled within a workflow by HandleExternalEventActivity activities

    public event EventHandler<ApproveEventArgs> Approved;

    public event EventHandler<ApproveEventArgs> Rejected;

    D、 Workflow 中的調(diào)用實(shí)現(xiàn)

    使用 HandleExternalEventAcitivity ,其屬性中 InterfaceType IApproveService EventName 為其對(duì)應(yīng)的事件名稱(如 Approved Rejected )。

    ?

    ?

    5、? 關(guān)于 Listen 的使用說(shuō)明:

    A、 MS 對(duì) Listen 的說(shuō)明:

    Makes the workflow wait for any one of several possible events before the activity proceeds.

    B、 Wait For

    Listen 對(duì)于事件的處理,僅僅起到 wait 的作用。其要求 Local Service 暴露所有的事件處理方法,如 Approve() 、 Reject ;并且要求外界調(diào)用者知道每個(gè)方法具體對(duì)應(yīng)的事件。

    C、 偵聽(tīng):

    Listen 對(duì)于事件的偵聽(tīng),其實(shí)就是通過(guò) Local Service 對(duì)象的方法觸發(fā)。但 Listen 只能偵聽(tīng) WorkflowRuntime Services 集合元素(類型為 ExternalDataExchangeService )中 Service 實(shí)例觸發(fā)的事件。對(duì)于非其中 Local Service 實(shí)例,則不能觸發(fā) Listen Acitivity HandleExternalEventAcitivity Invoked 中指定的方法,即 Local Service 實(shí)例的 event 委托為 null

    D、 添加偵聽(tīng)服務(wù)的代碼實(shí)現(xiàn):

    static OrderServiceImpl orderService;

    static void Main()

    ??????? {

    orderService = newOrderServiceImpl();

    ?

    WorkflowRuntime workflowRuntime = newWorkflowRuntime();

    ExternalDataExchangeService dataService = newExternalDataExchangeService();

    workflowRuntime.AddService(dataService);

    dataService.AddService(orderService);

    ?

    // 針對(duì)C的說(shuō)明,只有此orderService實(shí)例調(diào)用ApproveReject方法,才能觸發(fā)相應(yīng)事件;而如果其他的實(shí)例,則只能調(diào)用ApproveReject方法,但其event委托為null

    }

    ?

    6、? 聲明: WFF 學(xué)習(xí)的初步階段,有可能本人對(duì)一些理解的概念存在偏頗甚至錯(cuò)誤;此文僅做學(xué)習(xí)探討之用,不負(fù)其他責(zé)任 。

    posted on 2006-09-25 17:27 圣域飛俠 閱讀(196) 評(píng)論(0)  編輯  收藏 所屬分類: 轉(zhuǎn)載
    主站蜘蛛池模板: 国产真人无码作爱视频免费| 免费国产黄网站在线看| 国产免费一区二区视频| 国产亚洲情侣一区二区无| 有色视频在线观看免费高清在线直播| 精品剧情v国产在免费线观看 | 亚洲av无码成人影院一区| 在线免费观看一区二区三区| 四虎亚洲精品高清在线观看| 国产精品自在自线免费观看| 在线观看免费亚洲| 亚洲国产成人久久综合碰| 一级毛片免费一级直接观看| 亚洲日韩精品射精日| 日本免费久久久久久久网站| 亚洲精品国产福利片| 成人性生活免费视频| 亚洲av成人一区二区三区观看在线| 全黄a免费一级毛片人人爱| jizz免费在线观看| 久久精品7亚洲午夜a| 曰曰鲁夜夜免费播放视频| 亚洲国产成人精品无码区花野真一| 永久在线毛片免费观看| 一本到卡二卡三卡免费高 | 亚洲色av性色在线观无码| 国产在线观看免费观看不卡| 亚洲AV无码XXX麻豆艾秋| 国产精品亚洲二区在线观看| 无码一区二区三区免费| 中文有码亚洲制服av片| 亚洲一本大道无码av天堂| 一级毛片免费观看不卡视频 | 又长又大又粗又硬3p免费视频| 亚洲毛片αv无线播放一区| 中文免费观看视频网站| 美女黄频a美女大全免费皮| 亚洲动漫精品无码av天堂| 67194成是人免费无码| 成人免费av一区二区三区| 亚洲国产综合第一精品小说|