public void BasicAdminDeleteTransitionExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); IWfActivityDescriptor targetDesp = process.Descriptor.Activities["NormalActivity"]; IWfTransitionDescriptor transitionDesp = targetDesp.ToTransitions.FirstOrDefault(); IWfActivityDescriptor nextActDesp = transitionDesp.ToActivity; WfAdminDeleteTransitionExecutor executor = new WfAdminDeleteTransitionExecutor(process.CurrentActivity, process.Descriptor, transitionDesp, false); executor.Execute(); process = WfRuntime.GetProcessByProcessID(process.ID); IWfProcessDescriptor processDesp = process.Descriptor; targetDesp = processDesp.Activities[targetDesp.Key]; nextActDesp = processDesp.CompletedActivity; Assert.IsNull(targetDesp.ToTransitions.FirstOrDefault()); Assert.IsNull(nextActDesp.FromTransitions.FirstOrDefault()); }
public void ActivityConditionTest() { WfPendingActivityInfoAdapter.Instance.ClearAll(); TestContext.Properties["Amount"] = 1000; IWfProcessDescriptor processDesp = ProcessHelper.CreateSimpleProcessDescriptor(); processDesp.Activities["NormalActivity"].Condition.Expression = "Amount > 5000"; WfRuntime.ProcessContext.EvaluateActivityCondition += new Expression.CalculateUserFunction(ProcessContext_EvaluateTransition); IWfProcess process = processDesp.StartupProcess(); IWfActivity normalActivity = process.MoveToNextDefaultActivity(); Console.WriteLine(normalActivity.Status); Assert.AreEqual(WfActivityStatus.Pending, normalActivity.Status); WfRuntime.PersistWorkflows(); string activityID = process.CurrentActivity.ID; WfPendingActivityInfoCollection pendingActivities = WfPendingActivityInfoAdapter.Instance.Load(builder => builder.AppendItem("ACTIVITY_ID", process.CurrentActivity.ID)); Assert.IsTrue(pendingActivities.Count > 0); TestContext.Properties["Amount"] = 8000; pendingActivities.ForEach(pa => WfRuntime.ProcessPendingActivity(pa)); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.AreEqual(WfActivityStatus.Completed, process.Activities[activityID].Status); }
public void BasicAdminAddActivityExecutorTest() { IWfProcess process = WfProcessTestCommon.StartupSimpleProcess(); const string targetName = "修改后的名称"; IWfActivityDescriptor targetDesp = new WfActivityDescriptor(process.Descriptor.FindNotUsedActivityKey(), WfActivityType.NormalActivity); targetDesp.Properties.SetValue("Name", targetName); process.Descriptor.Activities.Add(targetDesp); WfActivityBase.CreateActivityInstance(targetDesp, process); WfAdminAddActivityExecutor executor = new WfAdminAddActivityExecutor(process.CurrentActivity, process, null, targetDesp, false); executor.Execute(); process = WfRuntime.GetProcessByProcessID(process.ID); targetDesp = process.Descriptor.Activities[targetDesp.Key]; Assert.IsNotNull(targetDesp); Assert.AreEqual(targetName, targetDesp.Properties.GetValue("Name", string.Empty)); }
public void StartBranchProcessTaskTest() { IWfProcessDescriptor processDesp = CreateProcessWithAutoMaintainProperty(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); MoveToExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); IWfActivity ownerActivity = process.CurrentActivity; Console.WriteLine("OwnerActivityID: {0}", ownerActivity.ID); WfBranchProcessTransferParams transferParams = new WfBranchProcessTransferParams(ownerActivity.Descriptor.BranchProcessTemplates[0]); ExecuteAndAssertTask(() => StartBranchProcessTask.SendTask(ownerActivity.ID, transferParams)); WfRuntime.ClearCache(); process = WfRuntime.GetProcessByProcessID(process.ID); Assert.IsTrue(process.CurrentActivity.BranchProcessGroups.Count > 0); Assert.IsTrue(process.CurrentActivity.BranchProcessGroups[0].Branches.Count > 0); }
public void BuildCancelProcessTaskProcessTest() { IWfProcessDescriptor processDesp = WfProcessTestCommon.CreateSimpleProcessDescriptorWithBranchTemplate(); IWfProcess process = WfProcessTestCommon.StartupProcess(processDesp); MoveToExecutor(process); process = WfRuntime.GetProcessByProcessID(process.ID); IWfActivity ownerActivity = process.CurrentActivity; process.EntrtMaintainingStatus(); WfRuntime.PersistWorkflows(); DispatchCancelProcessSysTaskProcessBuilder builder = new DispatchCancelProcessSysTaskProcessBuilder(process.ID, true); SysTaskProcess sysTaskProcess = builder.Build(); Console.WriteLine(sysTaskProcess.Activities.Count); Assert.AreEqual(3, sysTaskProcess.Activities.Count); }
/// <summary> /// 带上下文参数的启动流程 /// </summary> /// <param name="processDesp"></param> /// <param name="runtimeParameters"></param> /// <returns></returns> public static IWfProcess StartupProcess(this IWfProcessDescriptor processDesp, Dictionary <string, object> runtimeParameters = null) { WfProcessStartupParams startupParams = PrepareStartupParams(processDesp, runtimeParameters); return(WfRuntime.StartWorkflow(startupParams)); }
/// <summary> /// 设置被挂起节点的状态为Running /// </summary> /// <param name="activityID"></param> public static void ProcessPendingActivity(string activityID) { WfPendingActivityInfoCollection pendingActivities = WfPendingActivityInfoAdapter.Instance.Load(builder => builder.AppendItem("ACTIVITY_ID", activityID)); pendingActivities.ForEach(pai => WfRuntime.ProcessPendingActivity(pai)); }
public static WfClientProcess GetClientProcessByActivityID(string activityID) { IWfProcess process = WfRuntime.GetProcessByActivityID(activityID); return(GetClientProcess(process)); }
public static WfClientProcess GetClientProcessByProcessID(string processID) { IWfProcess process = WfRuntime.GetProcessByProcessID(processID); return(GetClientProcess(process)); }
private IWfActivity GetAssociatedActivity(string ownerActivityId) { IWfProcess proc1 = WfRuntime.GetProcessByActivityID(ownerActivityId); return(proc1.Activities[ownerActivityId]); }
private static IWfProcess StartProcess(IWfProcessDescriptor processDesp) { WfProcessStartupParams startupParams = GetInstanceOfWfProcessStartupParams(processDesp); return(WfRuntime.StartWorkflow(startupParams)); }
public void DeleteOriginalData(ArchiveBasicInfo info) { WfRuntime.DeleteProcessByResourceID(info.ResourceID); }