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());
        }
Example #2
0
        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);
        }
Example #6
0
        /// <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));
        }
Example #7
0
        /// <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));
        }
Example #8
0
        public static WfClientProcess GetClientProcessByActivityID(string activityID)
        {
            IWfProcess process = WfRuntime.GetProcessByActivityID(activityID);

            return(GetClientProcess(process));
        }
Example #9
0
        public static WfClientProcess GetClientProcessByProcessID(string processID)
        {
            IWfProcess process = WfRuntime.GetProcessByProcessID(processID);

            return(GetClientProcess(process));
        }
Example #10
0
        private IWfActivity GetAssociatedActivity(string ownerActivityId)
        {
            IWfProcess proc1 = WfRuntime.GetProcessByActivityID(ownerActivityId);

            return(proc1.Activities[ownerActivityId]);
        }
Example #11
0
        private static IWfProcess StartProcess(IWfProcessDescriptor processDesp)
        {
            WfProcessStartupParams startupParams = GetInstanceOfWfProcessStartupParams(processDesp);

            return(WfRuntime.StartWorkflow(startupParams));
        }
Example #12
0
 public void DeleteOriginalData(ArchiveBasicInfo info)
 {
     WfRuntime.DeleteProcessByResourceID(info.ResourceID);
 }