private void AddOrderOnHoldState() { // Get a reference to the WorkflowInstance for the selected workflow WorkflowInstance instance = this.runtime.GetWorkflow(this.GetSelectedWorkflowInstanceID()); // Get a reference to the root activity for the workflow Activity root = instance.GetWorkflowDefinition(); // Create a new instance of the WorkflowChanges class for managing // the in-memory changes to the workflow WorkflowChanges changes = new WorkflowChanges(root); // Create a new State activity to the workflow StateActivity orderOnHoldState = new StateActivity(); orderOnHoldState.Name = "OrderOnHoldState"; // Add a new EventDriven activity to the State EventDrivenActivity eventDrivenDelay = new EventDrivenActivity(); eventDrivenDelay.Name = "DelayOrderEvent"; orderOnHoldState.Activities.Add(eventDrivenDelay); // Add a new Delay, initialized to 5 seconds DelayActivity delayOrder = new DelayActivity(); delayOrder.Name = "delayOrder"; delayOrder.TimeoutDuration = new TimeSpan(0, 0, 5); eventDrivenDelay.Activities.Add(delayOrder); // Add a new SetState to the OrderOpenState SetStateActivity setStateOrderOpen = new SetStateActivity(); setStateOrderOpen.TargetStateName = "OrderOpenState"; eventDrivenDelay.Activities.Add(setStateOrderOpen); // Add the OnHoldState to the workflow changes.TransientWorkflow.Activities.Add(orderOnHoldState); // Apply the changes to the workflow instance try { instance.ApplyWorkflowChanges(changes); } catch (WorkflowValidationFailedException) { // New state has already been added MessageBox.Show("On Hold state has already been added to this workflow."); } }
void ShowTargetState(object activity) { if (activity is CompositeActivity) { CompositeActivity wxd = activity as CompositeActivity; foreach (object temp in wxd.Activities) { ShowTargetState(temp); } } else { if (activity is SetStateActivity) { Activity at = activity as Activity; string s = ""; while (true) { at = at.Parent; if (at is StateActivity) { s = at.Name; break; } } SetStateActivity wxd = activity as SetStateActivity; string ly = ""; if (wxd.Parent is wxwinter.wf.WFLib.条件分支) { ly = ((wxwinter.wf.WFLib.条件分支)wxd.Parent).条件; } ElementRelationList.Add(new ElementRelation() { Name = wxd.Name, 起点 = s, 目标 = wxd.TargetStateName, 说明 = wxd.Description, 路由 = ly }); } } }
protected Basic1StepDialogWorkflow(string formDefinitionFile, string containerLabel) { CanModifyActivities = true; var codecondition1 = new CodeCondition(); var setStateActivity6 = new SetStateActivity(); var setStateActivity5 = new SetStateActivity(); var saveCodeActivity = new CodeActivity(); var ifElseBranchActivity2 = new IfElseBranchActivity(); var ifElseBranchActivity1 = new IfElseBranchActivity(); var ifElseActivity = new IfElseActivity(); var finishHandleExternalEventActivity = new FinishHandleExternalEventActivity(); var setStateActivity4 = new SetStateActivity(); var cancelHandleExternalEventActivity1 = new CancelHandleExternalEventActivity(); var initCodeActivity = new CodeActivity(); var setStateActivity2 = new SetStateActivity(); var drivenActivityOk = new EventDrivenActivity(); var drivenActivityCancel = new EventDrivenActivity(); var initializationActivity = new StateInitializationActivity(); var setStateActivity1 = new SetStateActivity(); var cancelHandleExternalEventActivity2 = new CancelHandleExternalEventActivity(); var stateInitializationActivity = new StateInitializationActivity(); var startState = new StateActivity(); var globalCancelEventDrivenActivity = new EventDrivenActivity(); var finalState = new StateActivity(); var initializationState = new StateActivity(); // // setStateActivity6 // setStateActivity6.Name = "setStateActivity6"; setStateActivity6.TargetStateName = "startState"; // // setStateActivity5 // setStateActivity5.Name = "setStateActivity5"; setStateActivity5.TargetStateName = "finalState"; // // saveCodeActivity // saveCodeActivity.Name = "saveCodeActivity"; saveCodeActivity.ExecuteCode += (sender, e) => { SetCultureInfo(); OnFinish(sender, e); }; // // ifElseBranchActivity2 // ifElseBranchActivity2.Activities.Add(setStateActivity6); ifElseBranchActivity2.Name = "ifElseBranchActivity2"; // // ifElseBranchActivity1 // ifElseBranchActivity1.Activities.Add(saveCodeActivity); ifElseBranchActivity1.Activities.Add(setStateActivity5); codecondition1.Condition += (sender, e) => { SetCultureInfo(); OnValidate(sender, e); }; ifElseBranchActivity1.Condition = codecondition1; ifElseBranchActivity1.Name = "ifElseBranchActivity1"; // // ifElseActivity // ifElseActivity.Activities.Add(ifElseBranchActivity1); ifElseActivity.Activities.Add(ifElseBranchActivity2); ifElseActivity.Name = "ifElseActivity"; // // finishHandleExternalEventActivity // finishHandleExternalEventActivity.EventName = "Finish"; finishHandleExternalEventActivity.InterfaceType = typeof(IFormsWorkflowEventService); finishHandleExternalEventActivity.Name = "finishHandleExternalEventActivity"; // // setStateActivity4 // setStateActivity4.Name = "setStateActivity4"; setStateActivity4.TargetStateName = "finalState"; // // cancelHandleExternalEventActivity1 // cancelHandleExternalEventActivity1.EventName = "Cancel"; cancelHandleExternalEventActivity1.InterfaceType = typeof(IFormsWorkflowEventService); cancelHandleExternalEventActivity1.Name = "cancelHandleExternalEventActivity1"; if (formDefinitionFile != null) { var dataDialogFormActivity = new DataDialogFormActivity { ContainerLabel = containerLabel, FormDefinitionFileName = formDefinitionFile, Name = "dataDialogFormActivity" }; initializationActivity.Activities.Add(dataDialogFormActivity); } // // initCodeActivity // initCodeActivity.Name = "initCodeActivity"; initCodeActivity.ExecuteCode += (sender, e) => { SetCultureInfo(); OnInitialize(sender, e); }; // // setStateActivity2 // setStateActivity2.Name = "setStateActivity2"; setStateActivity2.TargetStateName = "startState"; // // DrivenActivity_Ok // drivenActivityOk.Activities.Add(finishHandleExternalEventActivity); drivenActivityOk.Activities.Add(ifElseActivity); drivenActivityOk.Name = "DrivenActivity_Ok"; // // DrivenActivity_Cancel // drivenActivityCancel.Activities.Add(cancelHandleExternalEventActivity1); drivenActivityCancel.Activities.Add(setStateActivity4); drivenActivityCancel.Name = "DrivenActivity_Cancel"; // // initializationActivity // initializationActivity.Activities.Add(initCodeActivity); initializationActivity.Name = "initializationActivity"; // // setStateActivity1 // setStateActivity1.Name = "setStateActivity1"; setStateActivity1.TargetStateName = "finalState"; // // cancelHandleExternalEventActivity2 // cancelHandleExternalEventActivity2.EventName = "Cancel"; cancelHandleExternalEventActivity2.InterfaceType = typeof(IFormsWorkflowEventService); cancelHandleExternalEventActivity2.Name = "cancelHandleExternalEventActivity2"; // // stateInitializationActivity // stateInitializationActivity.Activities.Add(setStateActivity2); stateInitializationActivity.Name = "stateInitializationActivity"; // // startState // startState.Activities.Add(initializationActivity); startState.Activities.Add(drivenActivityCancel); startState.Activities.Add(drivenActivityOk); startState.Name = "startState"; // // globalCancelEventDrivenActivity // globalCancelEventDrivenActivity.Activities.Add(cancelHandleExternalEventActivity2); globalCancelEventDrivenActivity.Activities.Add(setStateActivity1); globalCancelEventDrivenActivity.Name = "globalCancelEventDrivenActivity"; // // finalState // finalState.Name = "finalState"; // // initializationState // initializationState.Activities.Add(stateInitializationActivity); initializationState.Name = "initializationState"; // // AddFormWorkflow // Activities.Add(initializationState); Activities.Add(finalState); Activities.Add(globalCancelEventDrivenActivity); Activities.Add(startState); CompletedStateName = "finalState"; DynamicUpdateCondition = null; InitialStateName = "initializationState"; Name = "AddFormWorkflow"; CanModifyActivities = false; }
protected Basic1StepDocumentWorkflow(string formDefinitionFile, string containerLabel) { CanModifyActivities = true; var codecondition1 = new CodeCondition(); var saveCodeActivity = new CodeActivity(); var elseBranchActivity = new IfElseBranchActivity(); var ifValidateActivity = new IfElseBranchActivity(); var setStateActivity2 = new SetStateActivity(); var ifElseActivity1 = new IfElseActivity(); var saveHandleExternalEventActivity1 = new SaveHandleExternalEventActivity(); var initCodeActivity = new CodeActivity(); var setStateActivity1 = new SetStateActivity(); var cancelHandleExternalEventActivity1 = new CancelHandleExternalEventActivity(); var eventDrivenActivitySave = new EventDrivenActivity(); var stateInitializationActivity = new StateInitializationActivity(); var globalEventDrivenActivity = new EventDrivenActivity(); var finalState = new StateActivity(); var initializationState = new StateActivity(); // // SaveCodeActivity // saveCodeActivity.Name = "SaveCodeActivity"; saveCodeActivity.ExecuteCode += (sender, e) => { SetCultureInfo(); OnFinish(sender, e); }; // // elseBranchActivity // elseBranchActivity.Name = "elseBranchActivity"; // // ifValidateActivity // ifValidateActivity.Activities.Add(saveCodeActivity); codecondition1.Condition += (sender, e) => { SetCultureInfo(); OnValidate(sender, e); }; ifValidateActivity.Condition = codecondition1; ifValidateActivity.Name = "ifValidateActivity"; // // setStateActivity2 // setStateActivity2.Name = "setStateActivity2"; setStateActivity2.TargetStateName = "initializationState"; // // ifElseActivity1 // ifElseActivity1.Activities.Add(ifValidateActivity); ifElseActivity1.Activities.Add(elseBranchActivity); ifElseActivity1.Name = "ifElseActivity1"; // // saveHandleExternalEventActivity1 // saveHandleExternalEventActivity1.EventName = "Save"; saveHandleExternalEventActivity1.InterfaceType = typeof(IFormsWorkflowEventService); saveHandleExternalEventActivity1.Name = "saveHandleExternalEventActivity1"; if (formDefinitionFile != null) { var documentFormActivity1 = new DocumentFormActivity { ContainerLabel = containerLabel, CustomToolbarDefinitionFileName = String.Empty, FormDefinitionFileName = formDefinitionFile, Name = "documentFormActivity1" }; stateInitializationActivity.Activities.Add(documentFormActivity1); } // // initCodeActivity // initCodeActivity.Name = "initCodeActivity"; initCodeActivity.ExecuteCode += (sender, e) => { SetCultureInfo(); OnInitialize(sender, e); }; // // setStateActivity1 // setStateActivity1.Name = "setStateActivity1"; setStateActivity1.TargetStateName = "finalState"; // // cancelHandleExternalEventActivity1 // cancelHandleExternalEventActivity1.EventName = "Cancel"; cancelHandleExternalEventActivity1.InterfaceType = typeof(IFormsWorkflowEventService); cancelHandleExternalEventActivity1.Name = "cancelHandleExternalEventActivity1"; // // eventDrivenActivity_Save // eventDrivenActivitySave.Activities.Add(saveHandleExternalEventActivity1); eventDrivenActivitySave.Activities.Add(ifElseActivity1); eventDrivenActivitySave.Activities.Add(setStateActivity2); eventDrivenActivitySave.Name = "eventDrivenActivity_Save"; // // stateInitializationActivity // stateInitializationActivity.Activities.Add(initCodeActivity); stateInitializationActivity.Name = "stateInitializationActivity"; // // GlobalEventDrivenActivity // globalEventDrivenActivity.Activities.Add(cancelHandleExternalEventActivity1); globalEventDrivenActivity.Activities.Add(setStateActivity1); globalEventDrivenActivity.Name = "GlobalEventDrivenActivity"; // // finalState // finalState.Name = "finalState"; // // initializationState // initializationState.Activities.Add(stateInitializationActivity); initializationState.Activities.Add(eventDrivenActivitySave); initializationState.Name = "initializationState"; // // EditFormWorkflow // Activities.Add(initializationState); Activities.Add(finalState); Activities.Add(globalEventDrivenActivity); CompletedStateName = "finalState"; DynamicUpdateCondition = null; InitialStateName = "initializationState"; Name = "EditFormWorkflow"; CanModifyActivities = false; }
public T GetFlowObject <T>(FlowChart flowChart) { string lzm = string.Format(Resource.myState, "结束状态", "900", "700"); //------------------------------------------------------------------------- wxwinter.wf.WFLib.状态机模板 workflow = new wxwinter.wf.WFLib.状态机模板(); RuleConditionReference ruleconditionreference1 = new RuleConditionReference(); ruleconditionreference1.ConditionName = "启用"; workflow.SetValue(WorkflowChanges.ConditionProperty, ruleconditionreference1); FlowChartData fcd = flowChart.FlowData as FlowChartData; if (fcd != null) { workflow.模板版本 = fcd.模板版本; workflow.模板编号 = fcd.模板编号; workflow.模板名称 = fcd.模板名称; workflow.模板说明 = fcd.模板说明; workflow.启动时填写的表单 = fcd.启动时填写的表单; workflow.数据表单列表 = fcd.数据表单列表; } //-开始结点 workflow.InitialStateName = "开始状态"; StateActivity 开始状态 = new StateActivity("开始状态"); StateInitializationActivity 开始状态自动容器 = new StateInitializationActivity("开始状态自动容器"); wxwinter.wf.WFLib.初始化 开始启动流程 = new wxwinter.wf.WFLib.初始化(); 开始启动流程.Name = "开始启动流程"; workflow.Activities.Add(开始状态); 开始状态.Activities.Add(开始状态自动容器); 开始状态自动容器.Activities.Add(开始启动流程); //////////////// foreach (var node in flowChart.ElementList) { lzm = lzm + string.Format(Resource.myState, node.Name, node.X坐标, node.Y坐标); if (node.类型 == "头") { var r = flowChart.ElementRelationList.FirstOrDefault(p => p.起点 == node.Name && p.路由 == "开始状态"); if (r != null) { SetStateActivity 启动流程 = new SetStateActivity("启动流程"); 启动流程.TargetStateName = r.目标; 开始状态自动容器.Activities.Add(启动流程); } } } //---------------------------------------------------------------- //-完成结点 StateActivity 结束状态 = new StateActivity("结束状态"); workflow.Activities.Add(结束状态); workflow.CompletedStateName = "结束状态"; StateActivity 归档状态 = new StateActivity("归档状态"); StateInitializationActivity 归档状态自动容器 = new StateInitializationActivity("归档状态自动容器"); wxwinter.wf.WFLib.归档 流程归档 = new wxwinter.wf.WFLib.归档(); 流程归档.Name = "流程归档"; workflow.Activities.Add(归档状态); 归档状态.Activities.Add(归档状态自动容器); 归档状态自动容器.Activities.Add(流程归档); SetStateActivity 完成流程 = new SetStateActivity("完成流程"); 完成流程.TargetStateName = "结束状态"; 归档状态自动容器.Activities.Add(完成流程); // WindowsWorkflowObject wf = new WindowsWorkflowObject(); foreach (var node in flowChart.ElementList) { if (node.类型 == "节") { string n = node.Name; System.Workflow.Activities.StateActivity state = new System.Workflow.Activities.StateActivity(); state.Name = n; System.Workflow.Activities.EventDrivenActivity eda = new System.Workflow.Activities.EventDrivenActivity(); eda.Name = n + "_等待容器"; wxwinter.wf.WFLib.等待提交 waitsubmit = new wxwinter.wf.WFLib.等待提交(); waitsubmit.Name = n + "_处理中"; waitsubmit.状态名称 = n + "_处理中"; WaitControlData wd = node.结点数据 as WaitControlData; waitsubmit.办理查看业务表单 = wd.办理查看业务表单; waitsubmit.办理人员 = wd.办理人员; waitsubmit.办理时限 = wd.办理时限; waitsubmit.办理提交选项 = wd.办理提交选项; waitsubmit.办理添写业务表单 = wd.办理添写业务表单; waitsubmit.处理方式 = wd.处理方式; waitsubmit.接件部门 = wd.接件部门; waitsubmit.接件职能 = wd.接件职能; waitsubmit.启动窗体 = wd.启动窗体; waitsubmit.Description = wd.说明; wxwinter.wf.WFLib.条件容器 ir = new wxwinter.wf.WFLib.条件容器(); ir.Name = n + "_处理分支"; string ts = ""; foreach (var v in node.分支集合) { wxwinter.wf.WFLib.条件分支 fz = new wxwinter.wf.WFLib.条件分支(); fz.Name = n + "_处理分支_" + v.ToString(); fz.条件 = v.ToString(); ir.Activities.Add(fz); ts = ts + v.ToString() + ","; var r = flowChart.ElementRelationList.FirstOrDefault(p => p.起点 == node.Name && p.路由 == v); if (r == null) { wf = null; T tp = (T)((object)wf); return((T)tp); } else { SetStateActivity tp = new SetStateActivity(node.Name + "_到_" + r.目标); tp.TargetStateName = r.目标; fz.Activities.Add(tp); } } if (ts != "") { waitsubmit.办理提交选项 = ts.Remove(ts.Length - 1); } eda.Activities.Add(waitsubmit); eda.Activities.Add(ir); state.Activities.Add(eda); workflow.Activities.Add(state); } } string q = WorkflowClassToXomlString(workflow); wf.Xoml = q.Replace("utf-16", "utf-8"); wf.Rules = Resource.myRule; wf.Layout = string.Format(Resource.myLayout, lzm); T t = (T)((object)wf); return((T)t); }
private void InitializeComponent() { CanModifyActivities = true; CodeCondition codecondition1 = new CodeCondition(); ProofReadSetStateQualityNotOK = new SetStateActivity(); ProofReadSetStateQualityOK = new SetStateActivity(); ProofReadElseBranchActivity2 = new IfElseBranchActivity(); ProofReadElseBranch = new IfElseBranchActivity(); PrintFinalizationCode = new CodeActivity(); PrintSetState = new SetStateActivity(); PrintCode = new CodeActivity(); PrintDelay = new DelayActivity(); ProofReadIfElse = new IfElseActivity(); ProofReadDelay = new DelayActivity(); CreateInitCode = new CodeActivity(); DocumentSetState = new SetStateActivity(); CodeDocument = new CodeActivity(); CreateDelay = new DelayActivity(); PrintFinalization = new StateFinalizationActivity(); PrintEventDriven = new EventDrivenActivity(); ProofReadEventDriven = new EventDrivenActivity(); CreateInitialization = new StateInitializationActivity(); CreateDriven = new EventDrivenActivity(); End = new StateActivity(); Print = new StateActivity(); ProofRead = new StateActivity(); Create = new StateActivity(); // ProofReadSetStateQualityNotOK ProofReadSetStateQualityNotOK.Name = "ProofReadSetStateQualityNotOK"; ProofReadSetStateQualityNotOK.TargetStateName = "Print"; // ProofReadSetStateQualityOK ProofReadSetStateQualityOK.Name = "ProofReadSetStateQualityOK"; ProofReadSetStateQualityOK.TargetStateName = "End"; // ProofReadElseBranchActivity2 ProofReadElseBranchActivity2.Activities.Add(ProofReadSetStateQualityNotOK); ProofReadElseBranchActivity2.Name = "ProofReadElseBranchActivity2"; // ProofReadElseBranch ProofReadElseBranch.Activities.Add(ProofReadSetStateQualityOK); codecondition1.Condition += new EventHandler <ConditionalEventArgs> (ProofReadIfElseConditionFunction); ProofReadElseBranch.Condition = codecondition1; ProofReadElseBranch.Name = "ProofReadElseBranch"; // PrintFinalizationCode PrintFinalizationCode.Name = "PrintFinalizationCode"; PrintFinalizationCode.ExecuteCode += new EventHandler(PrintFinalizationCodeFunction); // PrintSetState PrintSetState.Name = "PrintSetState"; PrintSetState.TargetStateName = "End"; // PrintCode PrintCode.Name = "PrintCode"; PrintCode.ExecuteCode += new EventHandler(PrintCodeFunction); // PrintDelay PrintDelay.Name = "PrintDelay"; PrintDelay.TimeoutDuration = TimeSpan.Parse("00:00:02"); // ProofReadIfElse ProofReadIfElse.Activities.Add(ProofReadElseBranch); ProofReadIfElse.Activities.Add(ProofReadElseBranchActivity2); ProofReadIfElse.Description = "Quality is OK?"; ProofReadIfElse.Name = "ProofReadIfElse"; // ProofReadDelay ProofReadDelay.Name = "ProofReadDelay"; ProofReadDelay.TimeoutDuration = TimeSpan.Parse("00:00:01"); // CreateInitCode CreateInitCode.Name = "CreateInitCode"; CreateInitCode.ExecuteCode += new EventHandler(CreateInitCodeFunction); // DocumentSetState DocumentSetState.Name = "DocumentSetState"; DocumentSetState.TargetStateName = "ProofRead"; // CodeDocument CodeDocument.Name = "CodeDocument"; CodeDocument.ExecuteCode += new EventHandler(CodeDocumentFunction); // CreateDelay CreateDelay.Name = "CreateDelay"; CreateDelay.TimeoutDuration = TimeSpan.Parse("00:00:01"); // PrintFinalization PrintFinalization.Activities.Add(PrintFinalizationCode); PrintFinalization.Name = "PrintFinalization"; // PrintEventDriven PrintEventDriven.Activities.Add(PrintDelay); PrintEventDriven.Activities.Add(PrintCode); PrintEventDriven.Activities.Add(PrintSetState); PrintEventDriven.Name = "PrintEventDriven"; // ProofReadEventDriven ProofReadEventDriven.Activities.Add(ProofReadDelay); ProofReadEventDriven.Activities.Add(ProofReadIfElse); ProofReadEventDriven.Name = "ProofReadEventDriven"; // CreateInitialization CreateInitialization.Activities.Add(CreateInitCode); CreateInitialization.Name = "CreateInitialization"; // CreateDriven CreateDriven.Activities.Add(CreateDelay); CreateDriven.Activities.Add(CodeDocument); CreateDriven.Activities.Add(DocumentSetState); CreateDriven.Name = "CreateDriven"; // End End.Name = "End"; // Print Print.Activities.Add(PrintEventDriven); Print.Activities.Add(PrintFinalization); Print.Name = "Print"; // ProofRead ProofRead.Activities.Add(ProofReadEventDriven); ProofRead.Name = "ProofRead"; // Create Create.Activities.Add(CreateDriven); Create.Activities.Add(CreateInitialization); Create.Name = "Create"; // DocumentCreation Activities.Add(Create); Activities.Add(ProofRead); Activities.Add(Print); Activities.Add(End); CompletedStateName = "End"; InitialStateName = "Create"; Name = "DocumentCreation"; CanModifyActivities = false; }