public WfAddApproverExecutor(IWfActivity operatorActivity, IWfActivity targetActivity, WfAssigneeCollection assignees)
			: base(operatorActivity, targetActivity, WfControlOperationType.AddApprover)
		{
			assignees.NullCheck("assingees");

			this.Assignees.CopyFrom(assignees);
		}
        public void ServerToClient(WfAssigneeCollection server, WfClientAssigneeCollection client)
        {
            server.NullCheck("server");
            client.NullCheck("client");

            client.Clear();

            foreach (WfAssignee s in server)
            {
                WfClientAssignee c = null;

                WfClientAssigneeConverter.Instance.ServerToClient(s, ref c);

                client.Add(c);
            }
        }
        public void ClientToServer(WfClientAssigneeCollection client, WfAssigneeCollection server)
        {
            client.NullCheck("client");
            server.NullCheck("server");

            server.Clear();

            foreach (WfClientAssignee c in client)
            {
                WfAssignee s = null;

                WfClientAssigneeConverter.Instance.ClientToServer(c, ref s);

                server.Add(s);
            }
        }
        public void ServerToClient(WfAssigneeCollection server, WfClientAssigneeCollection client)
        {
            server.NullCheck("server");
            client.NullCheck("client");

            client.Clear();

            foreach (WfAssignee s in server)
            {
                WfClientAssignee c = null;

                WfClientAssigneeConverter.Instance.ServerToClient(s, ref c);

                client.Add(c);
            }
        }
        public void ClientToServer(WfClientAssigneeCollection client, WfAssigneeCollection server)
        {
            client.NullCheck("client");
            server.NullCheck("server");

            server.Clear();

            foreach (WfClientAssignee c in client)
            {
                WfAssignee s = null;

                WfClientAssigneeConverter.Instance.ClientToServer(c, ref s);

                server.Add(s);
            }
        }
		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;
		}