コード例 #1
0
        public override void AfterWorkflowPersistAction(WfActionParams actionParams)
		{
			WfRuntime.ProcessContext.FireRestoreProcessPersistAction();

			UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.MoveToUserTasks);
			UserTaskAdapter.Instance.DeleteUserTasks(WfRuntime.ProcessContext.DeletedUserTasks);

			AppCommonInfoAdapter.Instance.UpdateProcessStatus(WfRuntime.ProcessContext.AffectedProcesses.FindAll(p => p.IsApprovalRootProcess));

			WfRuntime.ProcessContext.PendingActivities.ForEach(act =>
			{
				WfPendingActivityInfo data = new WfPendingActivityInfo(act);

				WfPendingActivityInfoAdapter.Instance.Update(data);
			});

			ClearCache();
		}
コード例 #2
0
        public override void AfterWorkflowPersistAction(WfActionParams actionParams)
        {
            WfRuntime.ProcessContext.FireRestoreProcessPersistAction();

            UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.MoveToUserTasks);
            UserTaskAdapter.Instance.DeleteUserTasks(WfRuntime.ProcessContext.DeletedUserTasks);

            AppCommonInfoAdapter.Instance.UpdateProcessStatus(WfRuntime.ProcessContext.AffectedProcesses.FindAll(p => p.IsApprovalRootProcess));

            WfRuntime.ProcessContext.PendingActivities.ForEach(act =>
            {
                WfPendingActivityInfo data = new WfPendingActivityInfo(act);

                WfPendingActivityInfoAdapter.Instance.Update(data);
            });

            ClearCache();
        }
コード例 #3
0
        public override void AfterWorkflowPersistAction(WfActionParams actionParams)
		{
			WfRuntime.ProcessContext.FireEnterActivityPersistAction();

			WfRuntime.ProcessContext.MoveToUserTasks.DistinctByActivityUserAndStatus();
			UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.MoveToUserTasks);

			WfRuntime.ProcessContext.NotifyUserTasks.DistinctByActivityUserAndStatus();
			UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.NotifyUserTasks);

			WfPendingActivityInfoAdapter.Instance.DeleteByProcesses(WfRuntime.ProcessContext.AbortedProcesses);
			WfPendingActivityInfoAdapter.Instance.DeleteByProcesses(WfRuntime.ProcessContext.ClosedProcesses);

			AppCommonInfoAdapter.Instance.UpdateProcessStatus(WfRuntime.ProcessContext.AffectedProcesses.FindAll(p => p.IsApprovalRootProcess));

			WfRuntime.ProcessContext.PendingActivities.ForEach(act =>
			{
				WfPendingActivityInfo data = new WfPendingActivityInfo(act);

				WfPendingActivityInfoAdapter.Instance.Update(data);
			});

			this.ClearCache();
		}
コード例 #4
0
        public override void AfterWorkflowPersistAction(WfActionParams actionParams)
        {
            WfRuntime.ProcessContext.FireEnterActivityPersistAction();

            WfRuntime.ProcessContext.MoveToUserTasks.DistinctByActivityUserAndStatus();
            UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.MoveToUserTasks);

            WfRuntime.ProcessContext.NotifyUserTasks.DistinctByActivityUserAndStatus();
            UserTaskAdapter.Instance.SendUserTasks(WfRuntime.ProcessContext.NotifyUserTasks);

            WfPendingActivityInfoAdapter.Instance.DeleteByProcesses(WfRuntime.ProcessContext.AbortedProcesses);
            WfPendingActivityInfoAdapter.Instance.DeleteByProcesses(WfRuntime.ProcessContext.ClosedProcesses);

            AppCommonInfoAdapter.Instance.UpdateProcessStatus(WfRuntime.ProcessContext.AffectedProcesses.FindAll(p => p.IsApprovalRootProcess));

            WfRuntime.ProcessContext.PendingActivities.ForEach(act =>
            {
                WfPendingActivityInfo data = new WfPendingActivityInfo(act);

                WfPendingActivityInfoAdapter.Instance.Update(data);
            });

            this.ClearCache();
        }
コード例 #5
0
ファイル: WfRuntime.cs プロジェクト: jerryshi2007/AK47Source
        public static void ProcessPendingActivity(WfPendingActivityInfo pendingActivityInfo)
        {
            pendingActivityInfo.NullCheck("pendingActivityInfo");

            IWfProcess process = GetProcessByActivityID(pendingActivityInfo.ActivityID);
            bool needToDeletePendingInfo = true;

            if (process != null)
            {
                IWfActivity currentActivity = process.CurrentActivity;

                process.ProcessPendingActivity();

                if (currentActivity != null)
                {
                    needToDeletePendingInfo = false;

                    //已经不存在Pending状态
                    if (currentActivity.Status != WfActivityStatus.Pending)
                    {
                        WfRuntime.ProcessContext.AffectedProcesses.AddOrReplace(process);

                        using (TransactionScope scope = TransactionScopeFactory.Create())
                        {
                            WfRuntime.PersistWorkflows();
                            WfPendingActivityInfoAdapter.Instance.Delete(pendingActivityInfo);

                            scope.Complete();
                        }
                    }
                }
            }

            if (needToDeletePendingInfo)
            {
                WfPendingActivityInfoAdapter.Instance.Delete(pendingActivityInfo);
            }
        }