Example #1
0
        /// <summary>
        /// 创建一个缺省的审批流模板
        /// </summary>
        /// <param name="key"></param>
        /// <param name="processDespKey">流程描述的Key</param>
        /// <param name="execSequence"></param>
        /// <param name="blockingType"></param>
        /// <param name="users"></param>
        /// <returns></returns>
        public static IWfBranchProcessTemplateDescriptor CreateDefaultApprovalTemplate(
            string key,
            string processDespKey,
            WfBranchProcessExecuteSequence execSequence,
            WfBranchProcessBlockingType blockingType,
            IEnumerable <IUser> users)
        {
            key.CheckStringIsNullOrEmpty("key");
            users.NullCheck("users");

            WfBranchProcessTemplateDescriptor template = new WfBranchProcessTemplateDescriptor(key);

            template.BranchProcessKey = WfProcessDescriptorManager.DefaultApprovalProcessKey;
            template.ExecuteSequence  = execSequence;
            template.BlockingType     = blockingType;

            users = users.Distinct(new OguObjectIDEqualityComparer <IUser>());

            foreach (IUser user in users)
            {
                template.Resources.Add(new WfUserResourceDescriptor(user));
            }

            return(template);
        }
Example #2
0
        public static IWfBranchProcessTemplateDescriptor CreateConsignTemplate(WfBranchProcessExecuteSequence execSequence, WfBranchProcessBlockingType blockingType)
        {
            WfBranchProcessTemplateDescriptor template = new WfBranchProcessTemplateDescriptor("ConsignTemplateKey");

            template.BranchProcessKey = WfProcessDescriptorManager.DefaultConsignProcessKey;
            template.ExecuteSequence  = execSequence;
            template.BlockingType     = blockingType;
            return(template);
        }
Example #3
0
        private static IWfProcess GetProcessInstanceWithBranchProcessRunning(WfBranchProcessExecuteSequence sequence, WfBranchProcessBlockingType blockingType)
        {
            IWfProcess       process = WfProcessTestCommon.StartupProcessWithAssignee();
            WfTransferParams tp      = ProcessTestHelper.GetInstanceOfWfTransferParams(process, sequence, blockingType);

            process.MoveTo(tp);

            WfRuntime.PersistWorkflows();

            return(WfRuntime.GetProcessByProcessID(process.ID));
        }
Example #4
0
        public WfConsignExecutor(IWfActivity operatorActivity,
                                 IWfActivity targetActivity,
                                 WfAssigneeCollection assignees,
                                 IEnumerable <IUser> consignUsers,
                                 IEnumerable <IUser> circulateUsers,
                                 WfBranchProcessBlockingType blockingType,
                                 WfBranchProcessExecuteSequence sequence)
            : base(operatorActivity, targetActivity, WfControlOperationType.Consign)
        {
            assignees.NullCheck("assignees");
            consignUsers.NullCheck("users");

            (consignUsers.Count() > 0).FalseThrow <WfRuntimeException>("参与会签的用户数必须大于零");

            this.Assignees.CopyFrom(assignees);
            this.ConsignUsers   = consignUsers;
            this.CirculateUsers = circulateUsers;
            this.BlockingType   = blockingType;
            this.Sequence       = sequence;
        }
		public WfConsignExecutor(IWfActivity operatorActivity,
								IWfActivity targetActivity,
								WfAssigneeCollection assignees,
								IEnumerable<IUser> consignUsers,
								IEnumerable<IUser> circulateUsers,
								WfBranchProcessBlockingType blockingType,
								WfBranchProcessExecuteSequence sequence)
			: base(operatorActivity, targetActivity, WfControlOperationType.Consign)
		{
			assignees.NullCheck("assignees");
			consignUsers.NullCheck("users");

			(consignUsers.Count() > 0).FalseThrow<WfRuntimeException>("参与会签的用户数必须大于零");

			this.Assignees.CopyFrom(assignees);
			this.ConsignUsers = consignUsers;
			this.CirculateUsers = circulateUsers;
			this.BlockingType = blockingType;
			this.Sequence = sequence;
		}
		/// <summary>
		/// 构造缺省的会签模板
		/// </summary>
		/// <param name="key"></param>
		/// <param name="blockingType"></param>
		/// <returns></returns>
		public static IWfBranchProcessTemplateDescriptor CreateDefaultConsignTemplate(
			string key, 
			WfBranchProcessExecuteSequence execSequence,
			WfBranchProcessBlockingType blockingType,
			IEnumerable<IUser> users)
		{
			key.CheckStringIsNullOrEmpty("key");
			users.NullCheck("users");

			WfBranchProcessTemplateDescriptor template = new WfBranchProcessTemplateDescriptor(key);

			template.BranchProcessKey = WfProcessDescriptorManager.DefaultConsignProcessKey;
			template.ExecuteSequence = execSequence;
			template.BlockingType = blockingType;

			users = users.Distinct(new OguObjectIDEqualityComparer<IUser>());

			foreach (IUser user in users)
				template.Resources.Add(new WfUserResourceDescriptor(user));
			
			return template;
		}
		private static IWfProcess GetProcessInstanceWithBranchProcessRunning(WfBranchProcessExecuteSequence sequence, WfBranchProcessBlockingType blockingType)
		{
			IWfProcess process = WfProcessTestCommon.StartupProcessWithAssignee();
			WfTransferParams tp = ProcessTestHelper.GetInstanceOfWfTransferParams(process, sequence, blockingType);

			process.MoveTo(tp);

			WfRuntime.PersistWorkflows();

			return WfRuntime.GetProcessByProcessID(process.ID);
		}
Example #8
0
        /// <summary>
        /// 获取参数实例,即设置即将流转的节点为带分支流程
        /// </summary>
        /// <param name="process"></param>
        /// <param name="sequence"></param>
        /// <param name="blockingType"></param>
        /// <returns></returns>
        public static WfTransferParams GetInstanceOfWfTransferParams(IWfProcess process, WfBranchProcessExecuteSequence sequence, WfBranchProcessBlockingType blockingType)
        {
            WfTransferParams tp = new WfTransferParams(process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity);

            tp.Assignees.Add((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object);

            tp.BranchTransferParams.Add(new WfBranchProcessTransferParams(
                                            CreateConsignTemplate(sequence, blockingType),
                                            new IUser[] { (IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object,
                                                          (IUser)OguObjectSettings.GetConfig().Objects["approver2"].Object }));

            return(tp);
        }
Example #9
0
 public static WfClientBranchProcessExecuteSequence ToClientBranchProcessExecuteSequence(this WfBranchProcessExecuteSequence sequence)
 {
     return((WfClientBranchProcessExecuteSequence)sequence);
 }
		private static IWfBranchProcessTemplateDescriptor CreateConsignTemplate(WfBranchProcessExecuteSequence execSequence, WfBranchProcessBlockingType blockingType)
		{
			string key = "WfBranchProcessTemplateDescriptorKey";

			WfBranchProcessTemplateDescriptor template = new WfBranchProcessTemplateDescriptor(key);

			template.BranchProcessKey = WfProcessDescriptorManager.DefaultConsignProcessKey;
			template.ExecuteSequence = execSequence;
			template.BlockingType = blockingType;

			return template;
		}
		/// <summary>
		/// 获取参数实例,即设置即将流转的节点为带分支流程
		/// </summary>
		/// <param name="process"></param>
		/// <param name="sequence"></param>
		/// <param name="blockingType"></param>
		/// <returns></returns>
		public static WfTransferParams GetInstanceOfWfTransferParams(IWfProcess process, WfBranchProcessExecuteSequence sequence, WfBranchProcessBlockingType blockingType)
		{
			WfTransferParams tp = new WfTransferParams(process.CurrentActivity.Descriptor.ToTransitions[0].ToActivity);

			tp.Assignees.Add((IUser)OguObjectSettings.GetConfig().Objects["requestor"].Object);

			tp.BranchTransferParams.Add(new WfBranchProcessTransferParams(
					CreateConsignTemplate(sequence, blockingType),
					new IUser[] {(IUser)OguObjectSettings.GetConfig().Objects["approver1"].Object,
						(IUser)OguObjectSettings.GetConfig().Objects["approver2"].Object}));

			return tp;
		}