在工作流内部调用宿主的静态方法终止工作流的执行

在工作流内部调用宿主的静态方法终止工作流的执行

业务说明:张三,李四与王五三人审核一份稿件。如果张三审核通过则提交给李四审核,李四审核通过再提交给王五审核。三个人都通过,则稿件审核通过。如果任意一人不通过则工作流结束。

假设现在张三审核通过,李四审核不通过,然后结束了工作流

下面是工作流图:


工作流的内部方法:

public   sealed  partial  class  Workflow1: SequentialWorkflowActivity

{

    
public  Workflow1()

    {

       InitializeComponent();

    }

 

    
private   void  张三审核_ExecuteCode( object  sender, EventArgs e)

    {

        Console.WriteLine(
" 张三通过 " );

    }

 

    
private   void  李四审核_ExecuteCode( object  sender, EventArgs e)

    {

        Console.WriteLine(
" 李四不通过 " );

//  调用宿主的静态方法终止工作流

        Program.Stop();

    }

 

    
private   void  王五审核_ExecuteCode( object  sender, EventArgs e)

    {

        Console.WriteLine(
" 王五通过 " );

    }

}

宿主类:

class  Program

{

    
static  WorkflowRuntime workflowRuntime;

    
static  WorkflowInstance instance;

    
static  AutoResetEvent waitHandle;

    
static   void  Main( string [] args)

    {

        workflowRuntime 
=   new  WorkflowRuntime();

        waitHandle 
=   new  AutoResetEvent( false );

        workflowRuntime.WorkflowCompleted 
+=   delegate ( object  sender, WorkflowCompletedEventArgs e) { waitHandle.Set(); };

        workflowRuntime.WorkflowTerminated 
+=   delegate ( object  sender, WorkflowTerminatedEventArgs e)

        {

            Console.WriteLine(e.Exception.Message);

            waitHandle.Set();

        };

        instance 
=  workflowRuntime.CreateWorkflow( typeof (BreakWorkflow.Workflow1));

        instance.Start();

        waitHandle.WaitOne();

    }

    
///   <summary>

    
///  终止工作流的实例

    
///   </summary>

    
public   static   void  Stop()

    {

        
//  将阻止工作流的线程继续,否则在执行Terminate()方法时会产生异常

        waitHandle.Set();
//  如果不执行该语句,在执行Terminate()方法时会产生异常

        instance.Terminate(
" 终止信息 " );

    }

}

执行结果如下:

 

转载于:https://www.cnblogs.com/xds/archive/2007/06/11/778791.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值