2

我寻找一个用 php 编写的工作流引擎,并找到了 ez components 工作流类(http://ezcomponents.org/docs/api/latest/introduction_Workflow.html)。在处理完这些示例后,我在理解(一般)工作流功能方面遇到了两个一般性问题:

1.) 如果我定义了一个通用的工作流程(例如,在审查后发布一篇文章)——每一篇发布的文章实际上都开始了我的通用发布工作流程的一个新“实例”。这是正确的吗?或者,当相同的工作流程用于许多不同的文章/数据集时,我该如何处理?

2.) 基础应用程序如何与工作流组件一起工作?如果在发布过程中必须将电子邮件发送给必须审阅文章的人——发送此电子邮件的代码放在哪里?直接在工作流中发送电子邮件是否正确,例如在 WorkflowServiceObject 中的执行方法中?或者电子邮件的发送是否只是放在应用程序代码中(在保存文章或设置文章状态之后)并且工作流的状态必须在发送电子邮件后设置到下一个节点/级别?

感谢您的回答(对不起我的英语不好;-))!

蒂莫

4

1 回答 1

1

我也是 eZc 工作流程的新手,但我想我可以提供帮助,至少我也希望如此。

  1. 在 eZ Components 工作流中,首先很明显,您需要使用ezcWorkflowDatabaseDefinitionStorage类将工作流定义保存到数据库,对于每篇文章,您必须通过ezcWorkflowDatabaseExecution开始执行工作流,正如您所说,您必须为每篇文章启动一个实例。但是,当您有很多文章时,如何跟踪每个实例?您有一个工作流正在处理的实体,这里您的实体是您的文章,因此您需要将您的文章链接到您的工作流实例,例如您的文章可以具有您的工作流实例的 Id。
  2. 当你想要做一些事情比如发送电子邮件或者......你需要使用WorkflowServiceObject然后当我们想要在工作流的一个节点中做某事时,我们使用ezcWorkflowNodeAction并给它一个基于ezcWorkflowServiceObject的类。

还有一件事,我知道你的问题是一个样本,但让我说,在用户服务过程中发送电子邮件不是一个好主意,最好将电子邮件放在队列中并有一个 cron 工作在预定的过程中从队列中发送电子邮件。

于 2012-10-18T17:18:50.843 回答