我应该使用工作流程还是事件接收器?

时间:2009-03-23 15:55:47

标签: sharepoint moss workflow wss

我想构建一个自定义内容类型,它将成为具有多个状态的列表项的基础。各种状态将确定哪个列表将实例化该项。它将根据用户操作在状态之间移动,从而在列表之间移动。

我有几个选择来实现这个:

  1. 在每个列表上创建处理与该列表相关的特定功能的工作流。必要时将项目移动到另一个列表(将项目复制到新列表,删除原始项目),然后启动该工作流程。
  2. 在我们将使用的自定义内容类型上创建工作流,并让它在各个列表之间移动项目。不确定内容类型上的工作流是否可以从列表移动到列表,更不用说跨网站集了。
  3. 使用自定义内容类型上的事件接收器来管理状态。用户对项目进行操作,更改其状态,因此事件接收者在另一个列表上创建自己的副本,然后在当前列表中删除自身。我知道这适用于网站集。
  4. 哪种方式最好,为什么?什么绝对不行?我忽略了任何方法吗?

4 个答案:

答案 0 :(得分:3)

在我看来,使用事件接收器,因为它们遵循项目而不是列表。您仍然需要为接收列表启用内容类型,但这种方法比根据某些内容类型的存在与否更新和删除列表中的工作流要容易得多。

但是,为什么不结合这些方法呢?让内容类型事件接收器处理内容类型特定的活动,并让列表处理任何列表特定的活动。事件接收器既便宜又灵活。

.B

答案 1 :(得分:3)

一般来说: 在SharePoint工作流和事件接收器是相关的(如果您查看带有附加工作流的列表上的事件,您将找到启动工作流的事件接收器..)

工作流程的优点是用户可以检查日志(假设您使用了日志活动)

事件接收器的优点是事件数量更多;它们比工作流程更灵活。

根据您的描述,我可能会选择工作流程,因此用户可以检查他们的项目是否处理正确。

答案 2 :(得分:1)

我使用与每个列表方法相关联的工作流,因为我需要将工作流历史记录作为用户执行操作的审计跟踪。我更喜欢内容类型的工作流程的想法,回想起来,这将是我所做的更清晰的解决方案。

答案 3 :(得分:0)

这是完成工作流程和事件接收器之间决定的完美流程图:

http://msdn.microsoft.com/en-us/library/ff648492.aspx