VS 2008 中的 SharePoint 2007 顺序工作流
存在一个问题,如果仅指定一个帐户,我的工作流程将完成,但如果指定多个用户,我的工作流程将失败并仅创建第一个任务。
在我的列表中,我有一个名为RequiredReviewers 的必需人员或组列,其中允许在创建时选择多个用户。
我创建了一个包含以下三个活动的顺序工作流:1)OnWorkflowActivated:onWorkflowActivated1、workflowToken、onWorkflowActivated1_Invoked 2)WhileActivity:whileCreateTasks,(此处没有关联令牌),代码条件:WhileTaskIsNotCompleteCondition 3)在此期间,有一个 CreateTask 活动: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;
}
}
代码将为一位用户正确执行。
代码将导航,并按正确的次数点击 createTask1_methodInvoking 函数。但是,仅创建指定的第一个用户的任务,并且工作流状态将返回“发生错误”,日志中没有任何解释或条目。VS 没有发现任何错误。我已经在复制器中尝试过这个(相对于 while 循环),如果不是更差的话,我得到了相同的结果。
任何帮助表示赞赏。谢谢你。