/* (non-Javadoc) * @see org.fireflow.engine.ITaskInstance#abortEx(java.lang.String, org.fireflow.engine.taskinstance.DynamicAssignmentHandler) */ public void abortEx(String targetActivityId, DynamicAssignmentHandler dynamicAssignmentHandler) { if (this.CurrentWorkflowSession == null) { new EngineException(this.ProcessInstanceId, this.WorkflowProcess, this.TaskId, "The current workflow session is null."); } if (this.RuntimeContext == null) { new EngineException(this.ProcessInstanceId, this.WorkflowProcess, this.TaskId, "The current runtime context is null."); } if ((this.State == TaskInstanceStateEnum.COMPLETED) || (this.State == TaskInstanceStateEnum.CANCELED)) { throw new EngineException(this.ProcessInstanceId, this.WorkflowProcess, this.TaskId, "Abort task instance failed . The state of the task instance [id=" + this.Id + "] is " + this.State); } if (dynamicAssignmentHandler != null) { this.CurrentWorkflowSession.setDynamicAssignmentHandler(dynamicAssignmentHandler); } ITaskInstanceManager taskInstanceMgr = this.RuntimeContext.TaskInstanceManager; taskInstanceMgr.abortTaskInstanceEx(this.CurrentWorkflowSession, this.AliveProcessInstance, this, targetActivityId); }
/// <summary> /// <para>结束当前WorkItem;并由工作流引擎根据流程定义决定下一步操作。引擎的执行规则如下</para> /// <para>1、工作流引擎首先判断该WorkItem对应的TaskInstance是否可以结束。</para> /// <para> 如果TaskInstance的assignment策略为ANY,或者,assignment策略为ALL且它所有的WorkItem都已经完成</para> /// <para> 则结束当前TaskInstance</para> /// <para>2、判断TaskInstance对应的ActivityInstance是否可以结束。如果ActivityInstance的complete strategy为ANY,</para> /// <para> 或者,complete strategy为ALL且他的所有的TaskInstance都已经结束,则结束当前ActivityInstance</para> /// <para>3、根据流程定义,启动下一个Activity,并创建相关的TaskInstance和WorkItem</para> /// </summary> /// <param name="dynamicAssignmentHandler">通过动态分配句柄指定下一个环节的操作者。</param> /// <param name="comments">备注信息</param> public void complete(DynamicAssignmentHandler dynamicAssignmentHandler, String comments) { if (this._workflowSession == null) { new EngineException(this.TaskInstance.ProcessInstanceId, this.TaskInstance.WorkflowProcess, this.TaskInstance.TaskId, "The current workflow session is null."); } if (this.RuntimeContext == null) { new EngineException(this.TaskInstance.ProcessInstanceId, this.TaskInstance.WorkflowProcess, this.TaskInstance.TaskId, "The current runtime context is null."); } if (this.State != WorkItemEnum.RUNNING) { TaskInstance thisTaskInst = (TaskInstance)this.TaskInstance; // System.out.println("WorkItem的当前状态为"+this.State+",不可以执行complete操作。"); throw new EngineException(thisTaskInst.ProcessInstanceId, thisTaskInst.WorkflowProcess, thisTaskInst.TaskId, "Complete work item failed . The state of the work item [id=" + this.Id + "] is " + this.State); } if (dynamicAssignmentHandler != null) { this._workflowSession.setDynamicAssignmentHandler(dynamicAssignmentHandler); } ITaskInstanceManager taskInstanceManager = this.RuntimeContext.TaskInstanceManager; taskInstanceManager.completeWorkItem(this, null, comments); }
public DynamicAssignmentHandler consumeCurrentDynamicAssignmentHandler() { DynamicAssignmentHandler handler = this.dynamicAssignmentHandler; this.dynamicAssignmentHandler = null; return(handler); }
public void completeWorkItemAndJumpToEx(String workItemId, String targetActivityId, DynamicAssignmentHandler dynamicAssignmentHandler, String comments) { IWorkItem wi = this.findWorkItemById(workItemId); wi.jumpToEx(targetActivityId, dynamicAssignmentHandler, comments); }
public void jumpToEx(String targetActivityId, DynamicAssignmentHandler dynamicAssignmentHandler, String comments) { if (this._workflowSession == null) { new EngineException(this.TaskInstance.ProcessInstanceId, this.TaskInstance.WorkflowProcess, this.TaskInstance.TaskId, "The current workflow session is null."); } if (this.RuntimeContext == null) { new EngineException(this.TaskInstance.ProcessInstanceId, this.TaskInstance.WorkflowProcess, this.TaskInstance.TaskId, "The current runtime context is null."); } if (dynamicAssignmentHandler != null) { this._workflowSession.setDynamicAssignmentHandler(dynamicAssignmentHandler); } ITaskInstanceManager taskInstanceManager = this.RuntimeContext.TaskInstanceManager; taskInstanceManager.completeWorkItemAndJumpToEx(this, targetActivityId, comments); }
public void setCurrentDynamicAssignmentHandler(DynamicAssignmentHandler handler) { this.dynamicAssignmentHandler = handler; }
public void completeWorkItem(String workItemId, DynamicAssignmentHandler dynamicAssignmentHandler, String comments) { IWorkItem wi = this.findWorkItemById(workItemId); wi.complete(dynamicAssignmentHandler, comments); }
public void setDynamicAssignmentHandler(DynamicAssignmentHandler dynamicAssignmentHandler) { this.dynamicAssignmentHandler = dynamicAssignmentHandler; }