【发布时间】:2011-08-22 19:34:35
【问题描述】:
一点背景知识:我在一家生产产品的公司工作,该公司的产品具有用于具有许多“并发”运行任务的项目的工作流程。对于本次讨论,假设项目 A 创建了 4 个子项目。
主项目和 4 个子项目工作流都会在主任务列表中创建任务。我遇到的主要问题是如何将子项目工作流创建的任务关联回主项目。
例如:
项目 A 在项目列表中创建。该列表有一个与之关联的工作流,称为“项目开始”。此工作流程是手动启动工作流程,启动时会在子项目列表中创建四个子项目 - 这些子项目需要同时运行,因此我将它们创建在具有自己工作流程的辅助列表中。子项目列表有 4 个与之关联的工作流来管理 4 个子项目 - 当在子项目列表中创建子项目时,每个“自动启动”。
所以无论如何,为了节省一些输入,我将子项目称为 UNITS 1 - 4。
我创建项目 A 并手动启动它的工作流程。项目启动工作流在子项目列表中创建 Unit 1、Unit 2、Unit 3 和 Unit 4 项(同时因为,正如我前面所说,这些项需要同时运行)。每个单元管理器工作流都会启动并开始在任务列表中创建他们的待办任务。我正在使用“分配待办事项”任务活动,因为要让工作流完成其步骤,我只需要知道工作是否完成。
一旦所有 4 个单元工作流都完成,项目开始工作流现在将开始管理项目的最后部分,在完成之前使用其他任务项(经理批准等)。
现在我遇到的问题是我为任务列表设置的视图显示了“标题、开始日期、结束日期、完成状态和链接”列。链接列显示一个链接,该链接指向创建列表项。对于此示例,Unit 1 manager 工作流在由 Project A 创建的 UNIT 1 项目上运行。因此,对于由 unit manager 工作流创建的“示例任务 1”,链接为“Unit 1”。这并不完全有帮助,因为当有人查看他们的任务列表时,他们可能有来自多个项目的多个“示例任务 1”。将 UNIT 1 显示为参考主条目对用户没有任何意义。我想要显示的是主项目标题,以便他们可以按项目对任务进行排序。按“单位 x”排序没有任何意义。
现在我最初的解决方案是在任务列表上创建一个“项目”列。在本专栏中,我可以创建另一个子工作流,它所要做的就是通过查找和引用工作流和项目 ID 来查找最初创建的项目,并将这个新的“项目”变量设置为启动主项目(项目 a - for这个例子)。该工作流程有效!
但是,这似乎是一个在 MOSS 2007 中“并不少见”的问题,在任务列表上运行此子工作流可能(并且已经)创建多个锁定错误,这些错误显示 - “此项目无法修改,因为它已被已运行的工作流锁定”。此错误会使工作流停止,并且不是可恢复的错误。我已经研究过这个错误,这是一个无法避免的错误,没有单一且易于部署的解决方案。它与后端数据库以及如何/何时存储更新任务项变量等有关。一旦工作流锁定,您就完成了。
所以,我真正需要的是一个巧妙的解决方案,将主项目与所有子任务关联起来。如果任务是由“项目启动”工作流程创建的,那会自动完成,因为“链接”列会自动将此任务与创建项目相关联......在这种情况下是“项目 a” - 很简单。但是,由于我需要单独列表中的其他子项目以及它们自己的工作流程.....我失去了那个参考。
有没有一种方法可以将子项目列表工作流创建的任务关联到主项目,而无需调用另一个子工作流来设置该变量。 (即:一种避免“此项目被正在运行的工作流锁定”问题的方法)。
我认为我在这个解决方案上考虑得太多了,再也看不到森林了。
【问题讨论】:
-
坦率地说,没有人会阅读这篇文章。如果你尽可能地浓缩你的问题,你会得到更好的结果。
-
我尽量压缩它,同时尽可能多地留下相关信息。此特定解决方案有某些要求,这些要求对于其他类似情况并不“常见”。因此,为什么帖子比大多数帖子要长一些。
标签: sharepoint sharepoint-2007 workflow moss sharepoint-designer