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 ループに対して) 試してみましたが、悪い結果ではないにしても同じ結果が得られました。
どんな助けでも大歓迎です。ありがとうございました。