运行时增加流程步骤

        WF提供运行时修改流程实例的功能,事实上可以在流程运行过程中增加、修改和删除流程步骤,甚至是在流程运行的时候再增加外部的流程。这个功能解决了很多流程引擎不能解决的问题,当用户审批到某个步骤时,突然想改变流程,怎么办呢?原来的方式是重新定义流程,但其他用户想按原来的流程走完,这样可能就要定义两个不同的流程。WF提供运行时修改流程实例的功能将彻底的解决这个问题,用户可以在运行时修改属于他自己的实例,跟其他用户没有关系,流程定义也不用修改。

        接下来我用设备申请审批流程中的实例来说明怎么在运行时增加流程步骤,假如设备申请单到了副总理处,副总经理发现金额比较大,需要总经理审批。副总经理可以自己增加一个步骤,原来的流程不用变化。这里有两个技术要点:

(1)       自定义流程步骤Activity。自定义的流程步骤可以是一个Activity,也可以是一个Activity的组合,还可以使另外一个流程,非常灵活。这里定义的是包括一个外部事件Activity和外部方法Activity的组合,其中外部事件Activity用于触发(唤起)流程,外部方法Activity执行特定的操作。
 
(2)       运行时增加流程步骤。WorkFlowChanges对象用于修改流程步骤,修改步骤之前需要挂起流程实例,修改之后重启即可。
                    //   挂起
     workflowInstance.Suspend( " suspending to add step " );

        
//  get WorkflowChanges
        Activity workflowInstanceDefinition  =  workflowInstance.GetWorkflowDefinition();
       WorkflowChanges workflowChangesToMake 
=   new  WorkflowChanges(workflowInstanceDefinition);

          
//  setup to invoke NewStepActivity type
          System.Workflow.ComponentModel.Activity addActivity  =   new  NewStepActivity();

          
//  insert activity to index 5
                           workflowChangesToMake.TransientWorkflow.Activities.Insert( 5 , addActivity);

          
//  apply transient changes to instance
         workflowInstance.ApplyWorkflowChanges(workflowChangesToMake);

        
// 重启
    workflowInstance.Resume();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值