技術的には、異なるフィールドを使用するカスタムタスクタイプを作成し、その中にすべてのユーザー名を格納し、カスタムタスクフォームで1つずつチェックすることができます。実際はもっと簡単です複数のタスクを並行して作成します。
これはどのようにするのですか?http://msdn.microsoft.com/en-us/library/hh128696.aspx(ビデオも見てください)しかし、彼の例の一部は悪い習慣です:InitialChildData IListをReplicatorアクティビティのInitialzedイベントの中で初期化します...それで、最初の子を初期化し、ChildInitializedイベントの残りの部分を初期化する必要があります...正しい方法は、リプリケータに到達してIListを設定する直前にコードアクティビティを実行することです。その後、実際の初期化コードをすべてchildInitializedハンドラに残すことができます。私の実際の生活の中では、レプリケータを初期化したハンドラはまったくありません。
私は、上記のリンク先のScot Hilierと一緒になって、正誤表型のような例に入るつもりです。このコードがソリューション全体ではないことに気がついたら、気にならないでください。
たとえば、複数の承認者リストが、割り当て済みのワークフローのカンマ区切りの文字列プロパティを使用している場合(多分私はワークフローの初期化データから多分以前のタスクフォームを取得します...それは、あなた自身のビジネスだ)氏ヒリアーでわずか小さな見落とし
private void prepareCodeActivity_Invoked(object sender, EventArgs e) {
Assignees = DesignatedApprovers.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
}
譲受人が、この場合は一覧<文字列>ある、と私は
private void replicateTasks_ChildInitialized(object sender, ReplicatorChildEventArgs e) {
// do all of your task setup here (e.InstanceData is the single string for this child)
// note I'm setting properties of my custom activity, not the task itself
// each child instance of the replicator gets it's own instance of it.
generalApprovalTask.TaskAssignedTo = e.InstanceData.ToString();
generalApprovalTask.TaskTitle = string.Format(MyStrings.GeneralApprovalTaskTitle,
workflowProperties.Item.File.Name)
// log something!
}
それにレプリケータのInitialChildDataプロパティをバインドしていますそれは一般的に良い例なので、私たちは彼を許します。
結果を調べる場合は、リプリケータのChildCompletedハンドラで行います。 (ヒラリー氏もこの部分をカバーしていません)
public int FailedApprovals { get; set; }
/// <summary>
/// This is called upon the completion of the child tasks. Here is where we check the outcome.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void replicateTasks_ChildCompleted(object sender, ReplicatorChildEventArgs e) {
if (e.Activity is MyGeneralApprovalTaskActivity) {
var act = e.Activity as MyGeneralApprovalTaskActivity;
if (act.TheTaskOutcome != MyStrings.ApprovedString) {
FailedApprovals++;
}
// log something!
}
}