重新激活流程
示例:
H3.Workflow.Messages.ActivateInstanceMessage activiteinstanceMessage = new H3.Workflow.Messages.ActivateInstanceMessage(this.Request.InstanceId); //传递参数为流程实例ID this.Request.Engine.WorkflowInstanceManager.SendMessage(activiteinstanceMessage);//只会激活流程,并不会触发运行的节点 |
激活某个活动节点
示例:
H3.Workflow.Messages.ActivateActivityMessage activiteMessage = new H3.Workflow.Messages.ActivateActivityMessage(this.Request.InstanceId, "Activity3", H3.Workflow.Instance.Token.UnspecifiedId, new string[] {}, null, false, H3.Workflow.WorkItem.ActionEventType.Adjust);//参数对应描述:流程实例ID,活动节点编码,令牌ID,参与者,前驱令牌,是否检测入口条件,激活类型 this.Request.Engine.WorkflowInstanceManager.SendMessage(activiteMessage);//1.不会取消正在运行的节点。2.进行中的流程才能激活调整。 |
取消某个活动节点
示例:
H3.Workflow.Messages.CancelActivityMessage cancelMessage = new H3.Workflow.Messages.CancelActivityMessage(this.Request.InstanceId, "Activity3", false); this.Request.Engine.WorkflowInstanceManager.SendMessage(cancelMessage); |
取消流程
示例:
H3.Workflow.Messages.CancelInstanceMessage cancelMessage = new H3.Workflow.Messages.CancelInstanceMessage(this.Request.InstanceId,false); this.Request.Engine.WorkflowInstanceManager.SendMessage(cancelMessage); |
结束流程
示例:
H3.Workflow.Instance.WorkflowInstance instance = this.Request.Engine.WorkflowInstanceManager.GetWorkflowInstance(this.Request.InstanceId); //获取当前流程实例对象 |
结束流程时执行特定的业务逻辑
示例:
protected override void OnWorkflowInstanceStateChanged(H3.Workflow.Instance.WorkflowInstanceState oldState, H3.Workflow.Instance.WorkflowInstanceState newState) { //流程审批结束事件(先执行业务规则,在执行该方法)。 if(oldState == H3.Workflow.Instance.WorkflowInstanceState.Running && newState == H3.Workflow.Instance.WorkflowInstanceState.Finished) { //执行业务代码逻辑 }
//流程审批结束后,重新激活事件(先执行业务规则,在执行该方法)。 if(oldState == H3.Workflow.Instance.WorkflowInstanceState.Finished && newState == H3.Workflow.Instance.WorkflowInstanceState.Running) { //执行业务代码逻辑 } base.OnWorkflowInstanceStateChanged(oldState, newState); } 需要注意,如果流程设置的是发起节点直接到结束节点,或者审批节点全部符合自动通过逻辑,流程状态是从草稿变为生效的,见如下代码示例: protected override void OnWorkflowInstanceStateChanged(H3.Workflow.Instance.WorkflowInstanceState oldState, H3.Workflow.Instance.WorkflowInstanceState newState) { //流程审批结束事件(先执行业务规则,在执行该方法)。 if((oldState == H3.Workflow.Instance.WorkflowInstanceState.Running ||oldState == H3.Workflow.Instance.WorkflowInstanceState.Initiated) && newState == H3.Workflow.Instance.WorkflowInstanceState.Finished) { //执行业务代码逻辑 }
//流程审批结束后,重新激活事件(先执行业务规则,在执行该方法)。 if(oldState == H3.Workflow.Instance.WorkflowInstanceState.Finished && newState == H3.Workflow.Instance.WorkflowInstanceState.Running) { //执行业务代码逻辑 } base.OnWorkflowInstanceStateChanged(oldState, newState); } |