private static int SubmitFormTask() { using (var client = new IntermediaryInboundExternalBasicClient()) { var fts = new FormTaskShipmentBE { ExternalShipmentReference = "uniqueReference" + DateTime.Now.ToLongTimeString(), Reportee = ConfigurationManager.AppSettings["orgNo"] }; var ft = new FormTask { ServiceCode = ConfigurationManager.AppSettings["serviceCode"], ServiceEdition = int.Parse(ConfigurationManager.AppSettings["serviceEdition"]) }; var form = new Form { DataFormatId = ConfigurationManager.AppSettings["DataFormatId"], DataFormatVersion = int.Parse(ConfigurationManager.AppSettings["DataFormatVersion"]), FormData = ConfigurationManager.AppSettings["formData"], EndUserSystemReference = "uniqueReferenceee" + DateTime.Now.ToLongTimeString(), Completed = true }; var formList = new Form[1]; formList[0] = form; ft.Forms = formList; fts.FormTasks = ft; var receipt = client.SubmitFormTaskBasic(ConfigurationManager.AppSettings["systemUserName"], ConfigurationManager.AppSettings["systemPassword"], null, null, null, null, fts); return(receipt.ReceiptId); } }
private void Form1_Load(object sender, EventArgs e) { FormTask f = new FormTask(); f.MdiParent = this; f.AutoSize = true; f.Show(); }
public void run(IWorkflowSession currentSession, RuntimeContext runtimeContext, IProcessInstance processInstance, ITaskInstance taskInstance) // throws EngineException, KernelException { if (taskInstance.TaskType != TaskTypeEnum.FORM) //!Task.FORM.Equals(taskInstance.TaskType)) { throw new EngineException(processInstance, taskInstance.Activity, "DefaultFormTaskInstanceRunner:TaskInstance的任务类型错误,只能为FORM类型"); } DynamicAssignmentHandler dynamicAssignmentHandler = ((WorkflowSession)currentSession).consumeCurrentDynamicAssignmentHandler(); FormTask task = (FormTask)taskInstance.Task; // performer(id,name,type,handler) Participant performer = task.Performer; if (performer == null || performer.AssignmentHandler.Trim().Equals("")) { throw new EngineException(processInstance, taskInstance.Activity, "流程定义错误,Form类型的 task必须指定performer及其AssignmentHandler"); } assign(currentSession, processInstance, runtimeContext, taskInstance, task, performer, dynamicAssignmentHandler); }
/// <summary>分配, 按照当前任务的参与者插入工单</summary> /// <param name="currentSession"></param> /// <param name="processInstance"></param> /// <param name="runtimeContext"></param> /// <param name="taskInstance"></param> /// <param name="formTask"></param> /// <param name="part"></param> /// <param name="dynamicAssignmentHandler"></param> protected void assign(IWorkflowSession currentSession, IProcessInstance processInstance, RuntimeContext runtimeContext, ITaskInstance taskInstance, FormTask formTask, Participant part, DynamicAssignmentHandler dynamicAssignmentHandler)// throws EngineException, KernelException { //如果有指定的Actor,则按照指定的Actor分配任务 if (dynamicAssignmentHandler != null) { dynamicAssignmentHandler.assign((IAssignable)taskInstance, part.Name); } else { IPersistenceService persistenceService = runtimeContext.PersistenceService; List <ITaskInstance> taskInstanceList = persistenceService.FindTaskInstancesForProcessInstance(taskInstance.ProcessInstanceId, taskInstance.ActivityId); ITaskInstance theLastCompletedTaskInstance = null; for (int i = 0; taskInstanceList != null && i < taskInstanceList.Count; i++) { ITaskInstance tmp = (ITaskInstance)taskInstanceList[i]; if (tmp.Id.Equals(taskInstance.Id)) { continue; } if (!tmp.TaskId.Equals(taskInstance.TaskId)) { continue; } if (tmp.State != TaskInstanceStateEnum.COMPLETED) { continue; } if (theLastCompletedTaskInstance == null) { theLastCompletedTaskInstance = tmp; } else { if (theLastCompletedTaskInstance.StepNumber < tmp.StepNumber) { theLastCompletedTaskInstance = tmp; } } } //如果是循环且LoopStrategy==REDO,则分配个上次完成该工作的操作员 if (theLastCompletedTaskInstance != null && (LoopStrategyEnum.REDO == formTask.LoopStrategy || currentSession.isInWithdrawOrRejectOperation())) { List <IWorkItem> workItemList = persistenceService.FindCompletedWorkItemsForTaskInstance(theLastCompletedTaskInstance.Id); ITaskInstanceManager taskInstanceMgr = runtimeContext.TaskInstanceManager; for (int k = 0; k < workItemList.Count; k++) { IWorkItem completedWorkItem = (IWorkItem)workItemList[k]; IWorkItem newFromWorkItem = taskInstanceMgr.createWorkItem(currentSession, processInstance, taskInstance, completedWorkItem.ActorId); newFromWorkItem.claim();//并自动签收 } } else { IBeanFactory beanFactory = runtimeContext.BeanFactory; //从spring中获取到对应任务的Performer,创建工单 //201004 add lwz 参与者通过业务接口实现默认获取用户 switch (part.AssignmentType) { case AssignmentTypeEnum.Current: runtimeContext.AssignmentBusinessHandler.assignCurrent( currentSession, processInstance, (IAssignable)taskInstance); break; case AssignmentTypeEnum.Role: runtimeContext.AssignmentBusinessHandler.assignRole( currentSession, processInstance, (IAssignable)taskInstance, part.PerformerValue); break; case AssignmentTypeEnum.Agency: runtimeContext.AssignmentBusinessHandler.assignAgency( currentSession, processInstance, (IAssignable)taskInstance, part.PerformerValue); break; case AssignmentTypeEnum.Fixed: runtimeContext.AssignmentBusinessHandler.assignFixed( currentSession, processInstance, (IAssignable)taskInstance, part.PerformerValue); break; case AssignmentTypeEnum.Superiors: runtimeContext.AssignmentBusinessHandler.assignSuperiors( currentSession, processInstance, (IAssignable)taskInstance); break; default: IAssignmentHandler assignmentHandler = (IAssignmentHandler)beanFactory.GetBean(part.AssignmentHandler); //modified by wangmj 20090904 ((IAssignmentHandler)assignmentHandler).assign((IAssignable)taskInstance, part.PerformerValue); break; } } } }
protected Task createTask(IWFElement parent, XElement xElement) { Task task = null; TaskTypeEnum type = (TaskTypeEnum)Enum.Parse(typeof(TaskTypeEnum), GetAttributeValue(xElement, TYPE), true); switch (type) { case TaskTypeEnum.FORM: task = new FormTask(parent, GetAttributeValue(xElement, NAME)); ((FormTask)task).AssignmentStrategy = (FormTaskEnum)Enum.Parse(typeof(FormTaskEnum), GetAttributeValue(xElement, COMPLETION_STRATEGY), true); ((FormTask)task).DefaultView = (DefaultViewEnum)Enum.Parse(typeof(DefaultViewEnum), GetAttributeValue(xElement, DEFAULT_VIEW), true); break; case TaskTypeEnum.TOOL: task = new ToolTask(parent, GetAttributeValue(xElement, NAME)); break; case TaskTypeEnum.SUBFLOW: task = new SubflowTask(parent, GetAttributeValue(xElement, NAME)); break; default: return(null); } task.Sn = Guid.NewGuid().ToString(); task.DisplayName = GetAttributeValue(xElement, DISPLAY_NAME); task.TaskInstanceCreator = GetAttributeValue(xElement, TASK_INSTANCE_CREATOR); task.TaskInstanceRunner = GetAttributeValue(xElement, TASK_INSTANCE_RUNNER); task.TaskInstanceCompletionEvaluator = GetAttributeValue(xElement, TASK_INSTANCE_COMPLETION_EVALUATOR); task.LoopStrategy = GetEnum <LoopStrategyEnum>(GetAttributeValue(xElement, LOOP_STRATEGY)); int priority = 0; try { priority = Int32.Parse(GetAttributeValue(xElement, PRIORITY)); } catch { } task.Priority = priority; if (task is FormTask) { ((FormTask)task).Performer = createPerformer(xElement.Element("{" + FPDL_URI + "}" + PERFORMER)); ((FormTask)task).EditForm = createForm(xElement.Element("{" + FPDL_URI + "}" + EDIT_FORM)); ((FormTask)task).ViewForm = createForm(xElement.Element("{" + FPDL_URI + "}" + VIEW_FORM)); ((FormTask)task).ListForm = createForm(xElement.Element("{" + FPDL_URI + "}" + LIST_FORM)); } if (task is ToolTask) { ((ToolTask)task).Application = createApplication(xElement.Element("{" + FPDL_URI + "}" + APPLICATION)); } if (task is SubflowTask) { ((SubflowTask)task).SubWorkflowProcess = createSubWorkflowProcess(xElement.Element("{" + FPDL_URI + "}" + SUB_WORKFLOW_PROCESS)); } task.Description = GetElementValue(xElement, "{" + FPDL_URI + "}" + DESCRIPTION); task.Duration = createDuration(xElement.Element("{" + FPDL_URI + "}" + DURATION)); loadExtendedAttributes(task.ExtendedAttributes, xElement.Element("{" + FPDL_URI + "}" + EXTENDED_ATTRIBUTES)); loadEventListeners(task.EventListeners, xElement.Element("{" + FPDL_URI + "}" + EVENT_LISTENERS)); return(task); }