private void HandleWorkflow(WorkflowActivity activity) { Console.WriteLine(">>>>> deal with acivity:" + activity.WorkFlowName); var currentNode = activity.CurrentNode; //Console.WriteLine(">>>>> acivity:" + activity.WorkFlowName + " status: " + activity.CurrentActivityStatus + " workksheet: " + activity.CurrentWorksheet); activity.Process(); Console.WriteLine(">>>>> acivity:" + activity.WorkFlowName + " status: " + activity.CurrentActivityStatus + " workksheet: " + activity.CurrentWorksheet); Thread.Sleep(4000); }
public void WorkflowThread() { for (; ;) { if (EngineStop) { return; } Console.WriteLine(">> engine pending list items: " + _workflowPendingList.Count); Console.WriteLine(">> engineQueue items: " + _workflowQueue.Count); lock (_workflowPendingList) { if (_workflowQueue.Count == 0) { foreach (var activity in _workflowPendingList) { Console.WriteLine("-----[ acivity: " + activity.WorkFlowName + " ----- " + activity); if (activity.CurrentActivityStatus == ACTIVITY_STATUS.Started) { _workflowQueue.Enqueue(activity); } } } } if (_workflowQueue.Count > 0) { lock (_workflowQueue) { Console.WriteLine(">> handle workflow..."); WorkflowActivity acivity = _workflowQueue.Dequeue(); //处理工作流 HandleWorkflow(acivity); } } else { Console.WriteLine(">> engineQueue items: " + _workflowQueue.Count); Thread.Sleep(5000); } } }
static void Main(string[] args) { WorkflowEngine workflowEngine = new WorkflowEngine(); //定义工作流活动1 WorkflowActivity file1Activity = new WorkflowActivity("ACT_20180504", "代码检查流程_文件A"); BaseTransitionAdapter transitionAdapter = new CodeCheckTransitionAdapter(); file1Activity.AddTransitionAdapter(transitionAdapter); //定义工作流活动2 WorkflowActivity file2Activity = new WorkflowActivity("ACT_20180506", "代码检查流程_文件Y"); BaseTransitionAdapter transitionAdapter3 = new CodeCheckTransitionAdapter(); file2Activity.AddTransitionAdapter(transitionAdapter3); //引擎开始 workflowEngine.Start(); //模拟一段时间后开始流程操作 Thread.Sleep(5000); workflowEngine.AddAcivity(file1Activity); //活动1 放入工作流引擎开始处理 file1Activity.CreateWorksheet(); Thread.Sleep(8000); file1Activity.ApproveNode(); //容许活动1当前节点 workflowEngine.AddAcivity(file2Activity); //活动2 放入工作流引擎开始处理 file2Activity.CreateWorksheet(); //模拟一段时间后拒绝当前流程 Thread.Sleep(8000); file2Activity.CancelNode(); Thread.Sleep(12000); Console.WriteLine("----------------------------------------------------------------------"); file1Activity.ApproveNode(); //容许活动1当前节点 Console.ReadLine(); workflowEngine.Stop(); }
public void AddAcivity(WorkflowActivity activity) { _workflowPendingList.Add(activity); }