protected override void OnExecute(SysTask task) { ExecuteSysTaskActivityTask activityTask = new ExecuteSysTaskActivityTask(task); SysTaskProcess process = SysTaskProcessRuntime.GetProcessByActivityID(activityTask.ActivityID); process.CurrentActivity.ExecuteTask(); using (TransactionScope scope = TransactionScopeFactory.Create()) { SysTaskProcessRuntime.Persist(); //没有异常,则继续流转 if (process.Status == SysTaskProcessStatus.Running) { process = SysTaskProcessRuntime.GetProcessByActivityID(activityTask.ActivityID); AutoMoveToNextActivity(process.CurrentActivity); if (process.OwnerActivity != null) AutoMoveToNextActivity(process.OwnerActivity); } scope.Complete(); } if (process.Status == SysTaskProcessStatus.Aborted) throw new ApplicationException(process.CurrentActivity.StatusText); }
public static void ExecuteTask(SysTask task) { Stopwatch sw = new Stopwatch(); sw.Start(); try { SysTask taskLoaded = SysTaskAdapter.Instance.Load(task.TaskID); ISysTaskExecutor executor = SysTaskSettings.GetSettings().GetExecutor(taskLoaded.TaskType); Console.WriteLine("执行任务:ID={0}, Name={1}, Type={2}", taskLoaded.TaskID, taskLoaded.TaskTitle, taskLoaded.TaskType); executor.Execute(taskLoaded); SysAccomplishedTask accomplishedTask = SysAccomplishedTaskAdapter.Instance.Load(taskLoaded.TaskID); Assert.IsNotNull(accomplishedTask); if (accomplishedTask.StatusText.IsNotEmpty()) Console.WriteLine(accomplishedTask.StatusText); } finally { sw.Stop(); Console.WriteLine("执行任务:ID={0}经过的时间为{1:#,##0毫秒}", task.TaskID, sw.ElapsedMilliseconds); Console.WriteLine(); } }
/// <summary> /// 同步执行作业 /// </summary> /// <param name="task"></param> /// <returns>已经完成的任务</returns> public SysAccomplishedTask Execute(SysTask task) { SysAccomplishedTask result = null; Stopwatch sw = new Stopwatch(); sw.Start(); try { BeforeExecute(task); OnExecute(task); result = OnAfterExecute(task); } catch (System.Exception ex) { result = OnError(task, ex); } finally { sw.Stop(); Debug.WriteLine("执行任务,Duration={0:#,##0}ms, ID={1}, Name={2}, Type={3}", sw.ElapsedMilliseconds, task.TaskID, task.TaskTitle, task.TaskType); } return result; }
protected override JobBase GetJobInfo(SysTask task) { JobBase job = StartWorkflowJobAdapter.Instance.LoadSingleDataByJobID(task.ResourceID); (job != null).FalseThrow("不能找到ID为\"{0}\"的启动流程作业(Job)", task.ResourceID); return job; }
/// <summary> /// 执行之前,置执行状态 /// </summary> /// <param name="task"></param> protected virtual void OnBeforeExecute(SysTask task) { // 修改Task的状态为Running if (task.StartTime == DateTime.MinValue) task.StartTime = DateTime.Now; SysTaskAdapter.Instance.UpdateStatus(task.TaskID, SysTaskStatus.Running); }
protected override JobBase GetJobInfo(SysTask task) { InvokeWebServiceJob job = InvokeWebServiceJobAdapter.Instance.LoadSingleDataByJobID(task.ResourceID); (job != null).FalseThrow("不能找到ID为\"{0}\"的调用服务作业(Job)", task.ResourceID); WfServiceInvoker.InvokeContext.Clear(); WfServiceInvoker.InvokeContext["taskID"] = task.TaskID; WfServiceInvoker.InvokeContext["jobID"] = job.JobID; return job; }
private static void ExecuteTask(SysTask task) { try { ISysTaskExecutor executor = SysTaskSettings.GetSettings().GetExecutor(task.TaskType); executor.BeforeExecute(task); Task.Factory.StartNew(() => executor.Execute(task)); } catch (System.Exception ex) { SysTaskAdapter.Instance.MoveToCompletedSysTask(task.TaskID, SysTaskStatus.Aborted, ex.GetRealException().ToString()); } }
/// <summary> /// 构造一个任务活动 /// </summary> /// <param name="sysTaskProcess"></param> /// <param name="index"></param> /// <param name="name"></param> /// <param name="task"></param> /// <returns></returns> public static SysTaskActivity CreateActivity(this SysTaskProcess sysTaskProcess, int index, string name, SysTask task) { sysTaskProcess.NullCheck("sysTaskProcess"); SysTaskActivity activity = new SysTaskActivity(task); activity.ID = UuidHelper.NewUuidString(); activity.ProcessID = sysTaskProcess.ID; activity.Sequence = index; activity.Name = name; SysTaskProcessRuntime.ProcessContext.AffectedActivities.AddOrReplace(activity); return activity; }
protected InvokeProcessServiceTaskBase(SysTask other) : base(other) { }
/// <summary> /// 执行之前 /// </summary> /// <param name="task"></param> public void BeforeExecute(SysTask task) { OnBeforeExecute(task); }
public DispatchCancelProcessTask(SysTask other) : base(other) { }
public DispatchWithdrawProcessTask(SysTask other) : base(other) { }
protected override void OnExecute(SysTask task) { JobBase job = GetJobInfo(task); job.Start(); }
public DispatchCancelBranchProcessesTask(SysTask other) : base(other) { }
/// <summary> /// 执行之后,置执行状态,并且移动到已完成中 /// </summary> /// <param name="task"></param> /// <returns>返回的已完成任务</returns> protected virtual SysAccomplishedTask OnAfterExecute(SysTask task) { //Move,修改Task的状态为Completed return SysTaskAdapter.Instance.MoveToCompletedSysTask(task, SysTaskStatus.Completed, string.Empty); }
public DispatchStartBranchProcessTask(SysTask other) : base(other) { }
/// <summary> /// 执行具体的内容 /// </summary> /// <param name="task"></param> protected abstract void OnExecute(SysTask task);
/// <summary> /// 出现异常,置执行状态,并且移动到已完成中 /// </summary> /// <param name="task"></param> /// <param name="ex"></param> /// <returns>返回的已完成任务</returns> protected virtual SysAccomplishedTask OnError(SysTask task, System.Exception ex) { //Move,修改Task的状态为Aborted return SysTaskAdapter.Instance.MoveToCompletedSysTask(task, SysTaskStatus.Aborted, ex.GetRealException().ToString()); }
public WithdrawProcessTask(SysTask other) : base(other) { }
/// <summary> /// 得到Job信息 /// </summary> /// <param name="task"></param> /// <returns></returns> protected abstract JobBase GetJobInfo(SysTask task);
public ExecuteSysTaskActivityTask(SysTask other) : base(other) { this.AfterLoad(); }
public CancelProcessTask(SysTask other) : base(other) { }
private void SetData(SysTask task) { task.Score = tbxScore.Text.ToInt32(); task.ScoreTime = DateTime.Now; task.Status = (int)TaskStatus.Corrected; }
public InvokeServiceTask(SysTask other) : base(other) { this.AfterLoad(); }
public StartBranchProcessTask(SysTask other) : base(other) { }