0

VS 2008 での SharePoint 2007 シーケンシャル ワークフロー

アカウントが 1 つしか指定されていない場合はワークフローが完了しますが、複数のユーザーが指定されている場合は失敗し、最初のタスクしか作成されないという問題があります。

私のリストには、作成時に複数のユーザーを選択できる RequiredReviewers という必須の Person または Group 列があります。

次の 3 つのアクティビティを使用してシーケンシャル ワークフローを作成しました。 : createTask1、taskToken、createTask1_MethodInvoking

public sealed partial class Workflow1 : SequentialWorkflowActivity
{
    public Workflow1()
    {
        InitializeComponent();
    }

    public Guid workflowId = default(System.Guid);
    public SPWorkflowActivationProperties workflowProperties = new SPWorkflowActivationProperties();
    public int _numRequiredReviewers = 0;
    public SPFieldUserValueCollection RequiredReviewers = null;

    public Dictionary<Guid, bool> TaskCompleted = new Dictionary<Guid, bool>();
    public const string ApproverGroupName = "Approvers - ATC";
    public SPUserCollection ApproverGroupUsers = null;

    private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
    {
        _numRequiredReviewers = 0;
        RequiredReviewers = (SPFieldUserValueCollection)((SPItem)workflowProperties.Item)["RequiredReviewers"];
        ApproverGroupUsers = workflowProperties.Web.SiteGroups[ApproverGroupName].Users;
    }

    private void createTask1_MethodInvoking(object sender, EventArgs e)
    {
        CreateTask task = sender as CreateTask;

        task.TaskId = Guid.NewGuid();
        task.TaskProperties = new SPWorkflowTaskProperties();

        task.TaskProperties.TaskType = 0;
        task.TaskProperties.Title = string.Format("{0} - {1} - {2}", workflowProperties.List.Title, workflowProperties.Item.File.Name, RequiredReviewers[_numRequiredReviewers].User.Name);
        task.TaskProperties.AssignedTo = workflowProperties.Originator;

        task.TaskProperties.PercentComplete = 0F;

        task.TaskProperties.SendEmailNotification = false; //default email communication;

        task.TaskProperties.ExtendedProperties["User"] = workflowProperties.OriginatorUser.LoginName;


        _numRequiredReviewers++;
        TaskCompleted.Add(task.TaskId, false);

    }

    private void createTasksWhileCondition(object sender, ConditionalEventArgs e)
    {
        e.Result = RequiredReviewers.Count != _numRequiredReviewers;
    }
}

コードは 1 人のユーザーに対して適切に実行されます。

コードはナビゲートし、createTask1_methodInvoking 関数を正しい回数ヒットします。ただし、指定された最初のユーザーのタスクのみが作成され、ワー​​クフロー ステータスは「エラーが発生しました」を返し、ログ内に説明やエントリはありません。VS はエラーをキャッチしません。これをレプリケーター内で (while ループに対して) 試してみましたが、悪い結果ではないにしても同じ結果が得られました。

どんな助けでも大歓迎です。ありがとうございました。

4

1 に答える 1

2

sequenceActivity 要素を while ブロックに配置し、「タスクの作成」要素を配置する必要があります。次に、「Create Task」要素の ownerActivityName プロパティを sequenceActivity の名前に設定します。

于 2011-12-06T12:30:56.320 に答える