我的任务是弄清楚如何在sharepoint 2007设计器工作流程中自动重新分配任务。我知道这通常是通过在任务完成表单中为用户提供重新分配选项来完成的,但这对我不起作用。以下是当前工作流程的简要概述以及我能够做到的事情。
它实际上是主要工作流程和辅助工作流程。主要检查状态,发送电子邮件和分配任务。每次完成任务时,辅助服务器都会将状态更新为适当的级别。根据主列表中的字段分配任务。例如,他们是PM领域。在创建新列表项时,将填充一个人。工作流程将任务分配给该PM。
我需要做的是,如果在任何时候有人进入主列表并更改PM,我需要将适用的任务重新分配给新的,而无需额外的用户交互。
我不知道该怎么做。有任何想法吗?非常感谢!
答案 0 :(得分:0)
您没有指定主要工作流程的运行位置 - 我假设(并希望)它在此主要列表上运行。
您说过,只要在该列表中创建新的列表项,您的工作流就会运行 - 您需要做的就是修改此工作流以便在修改列表项时运行。启动工作流程时,您只需检查列表项中的某个字段(例如,自定义“MyWorkflow已经运行”)是否已设置 - 然后您知道您正在列表项修改状态下运行。
另一种方法是为项目已更改事件创建另一个工作流程,并让它在原始工作流程中更改您的PM,无论在何处设置。
最后一种方法是使用事件接收器,这将涉及启动Visual Studio,我猜不是你想要的(事件接收器也会监视你的项目更改事件)。
修改强>
如何从任务列表中获取与正在运行的工作流相关的任务项?
当您拥有SPListItem
后,您可以查看通过SPListItem.Workflows
运行的所有工作流程,这些工作流程会返回SPWorkflowCollection
。迭代该集合,您可以找到SPWorkflow
。最后,此工作流程通过SPWorkflow.Tasks
汇总了所有工作流程任务。在SPWorkflow
上查看此MSDN documentation。
完成此操作的一些示例:http://sansanwal.blogspot.com/2009/08/get-workflow-task-item-from-list-item.html
如果要在非代码解决方案中执行此操作,还可以通过SharePoint Designer获取任务。为此,您必须自己创建任务并将任务ID保存在某个工作流变量中,稍后可以通过查询此特定任务ID的任务列表来检索此任务。