在设计工作流时,您可以选择包含要在各阶段和步骤中执行的逻辑。
- 阶段。 阶段可使实时工作流逻辑更加便于理解,并对实时工作流逻辑加以解释。 但是,阶段不会影响工作流的逻辑或行为。 如果某个流程有阶段,则某个阶段必须包含该流程中的所有步骤。
- 步骤。 步骤是工作流中的一个业务逻辑单位。 步骤可以包括条件、操作、其他步骤或这些元素的组合。
实时工作流流程可以执行的操作
实时工作流流程可以执行下表中列出的操作。
| Action | Description |
|---|---|
| 创建行 | 为表创建新行并将您选择的值分配给属性。 |
| 更新行 | 您可以更新正在运行实时工作流的行、与该行在 N:1 关系中关联的任何行或由之前步骤创建的任何行。 |
| 分配行 | 您可以分配当前正在运行实时工作流的行、在 N:1 关系中与该行相关联的任何行,或者由先前步骤创建的任何行。 |
| 发送电子邮件 | 发送电子邮件。 您可以选择创建新电子邮件,或使用电子邮件模板。该模板可以是为正在运行实时工作流的行所在的表配置的,或者配置 עבור 于与该表有 N:1 关系的任何其他表,或适用于由之前步骤创建的任何行的表。 |
| 启动子工作流 | 启动配置为子工作流的实时工作流进程。 |
| 更改状态 | 更改流程正在运行的行状态、与该行通过 N:1 关系关联的任何行,或者由之前步骤创建的任何行。 |
| 停止工作流 | 停止当前工作流。 可以设置成功或取消状态并指定状态消息。 如果为事件配置了实时工作流,则停止状态为“取消”的实时工作流将使事件操作无法完成。 有关详细信息,请转到使用实时工作流。 |
| 自定义步骤 | 开发人员可以创建定义操作的自定义实时工作流步骤。 默认情况下,没有自定义步骤。 |
设置行值
在创建行时,可以设置行的值。 在更新行时,可以设置、追加、减少、增加、加倍或清除值。
选择设置属性时,将打开一个显示表的默认窗体的对话框。
在对话框底部,可以看到窗体中不存在的其他列的列表。
对于任何列,可以设置工作流设置的静态值。
在对话框的右侧,您可以使用窗体助理功能,从当前行的上下文中设置或追加动态值。 其中包括可以通过表的 N:1(多对一)关系访问的关联行中的值。
窗体助理中的可用选项取决于您在窗体中选择的列。 设置动态值时,会看到一个名为“slug”的黄色占位符,该占位符显示动态数据包含的位置。 如果要删除该值,请选择该短链接并将其删除。 对于文本列,可以使用静态和动态数据的组合。
对于动态值,您肯定不知道某个列或相关表具有您要设置的值。 实际上,您可以设置多个列来尝试设置值并使用绿色箭头对其排序。 如果第一列没有数据,请尝试第二列,以此类推。 如果所有列都没有数据,则可指定要使用的默认值。
设置实时工作流操作的条件
应用的操作通常取决于条件。 实时工作流流程提供了多种设置条件和创建分支逻辑来获取所需结果的方法。 您可以检查实时工作流过程针对的行的值、通过 N:1 关系与该行关联的任何行的值,或者检查流程本身中的值。
| 条件类型 | Description |
|---|---|
| 检查条件 | “如果 <条件> 那么”逻辑语句。 您可以检查实时工作流正在运行的行的当前值,与该行具有 N:1 关系的任何关联行,或由之前步骤创建的任何行的值。 根据这些值,您可以定义条件成立时的其他步骤。 在“if <条件> then”语句中,您可以使用以下运算符:Equals、Does Not Equal、Contains Data、Does Not Contain Data、Under 和 Not Under。 注意:Under 和 Not Under 是分层运算符。 只能在定义了层次关系的表中使用它们。 如果尝试在未定义分层关系的表上使用这些运算符,请参阅错误消息:“在未定义分层关系的表上使用分层运算符。 将表分层(通过将关系标记为分层)或使用其他运算符。” 有关分层关系的详细信息,请转到定义和按层次结构查询相关数据。 表后面的屏幕截图是一个使用 Under 和 Not Under 分层操作符的实时工作流程定义的示例。 |
| 条件分支 | 这是一条“else-if-then”的逻辑语句,编辑器使用“否则,如果<条件>,那么:”文本。 选择之前定义的检查条件,并且可以添加条件分支,以在检查条件返回 false 时定义其他步骤。 |
| 默认操作 | “else”逻辑语句。 编辑器将文本“Otherwise:”用于显示。 选择之前定义的检查条件、条件分支、等待条件或并行等待分支,可以使用默认操作来定义与条件或分支元素中定义的条件不匹配的所有事例的步骤。 |
| 等待条件 | 实时工作流不能使用等待条件。 但是,等待条件可用于后台工作流。 详细信息:设置后台工作流操作的条件 |
| 并行等待分支 | 使用仅在满足初始条件时执行的一组对应的额外步骤来定义实时工作流的备选等待条件。 可以使用并行等待分支在实时工作流逻辑中创建时间限制。 它们有助于防止实时工作流无限期地等待,直到满足在等待条件中定义的条件。 |
| 自定义步骤 | 开发人员可以创建定义条件的自定义实时工作流步骤。 默认情况下,没有可用的自定义步骤。 |
以下屏幕截图包含一个使用Under和Not Under分层操作符的工作流过程定义示例。 在示例中,我们对两组客户应用不同的折扣。 在添加步骤中个,我们选择了检查条件以指定包含Under或Not Under操作符的 if-then 条件, 第一个 if-then 条件适用于 Under Alpine Ski House 账户下的所有账户。 这些客户购买产品和服务时可以享受 10% 的折扣。 第二个 if-then 条件适用于所有不在 Alpine Ski House 账户下的账户,并可享受 5% 的折扣。 然后,选择更新行以定义基于条件执行的操作。
在状态变化之前或之后启动实时工作流
在为实时工作流配置自动流程选项时,状态更改事件的启动时间选项可用于选择状态变化时的之后或之前选项。 默认选项为之后。
选择 “之前 ”表示希望在保存更改状态的数据之前应用实时工作流中的逻辑。 这样,在操作之后,您可以在应用其他逻辑之前检查值,防止执行后续逻辑。 例如,你可能在插件或自定义实时工作流操作中具有其他逻辑,该操作可以在另一个系统上启动操作。 通过停止进一步处理,可以避免外部系统受到影响的情况。 在此事件之前应用实时工作流也意味着在取消操作时不需要“回滚”保存数据的其他实时工作流或插件操作。
| Action | 何时启动 | 摘要 |
|---|---|---|
| 已创建行 | 在 | 只有之后可用。 在内部 MainOperation 阶段之后,行才会具有唯一标识符,因此在行创建之前不会出现。 |
| 行状态更改 | 之前 在 |
与用于在状态更改之后或之前应用实时工作流的更新操作对应。 之前对应于操作前阶段。 之后对应于术后阶段。 |
| 已分配行 | 之前 在 |
与用于在状态更改之后或之前应用实时工作流的更新操作对应。 之前对应于操作前阶段。 之后对应于术后阶段。 |
| 行列更改 | 之前 在 |
与用于在状态更改之后或之前应用实时工作流的更新操作对应。 之前对应于操作前阶段。 之后对应于术后阶段。 |
| 行已删除 | 之前 | 只有之前可用。 行删除对应于预操作阶段。 MainOperation 发生后,该行将被删除,并且不会再发生状态更改。 |
有关操作前、主操作和操作后阶段的详细信息,请参阅事件执行管道。
使用实时工作流
您可以配置实时工作流,但是请慎重使用。 一般推荐使用后台工作流,因为当服务器上的资源可用时,系统可以应用它们。 这有助于促进服务器必须完成的工作,有助于让使用系统的每个人保持最佳表现。 缺点是后台工作流定义的操作不是即时的。 无法预测何时应用它们,但通常需要几分钟时间。 对于大多数业务流程自动化,这没有关系,因为使用系统的人不需要有意识地知道流程正在运行。
当业务流程要求某人立即看到流程结果,或者您希望能够取消操作时,请使用实时工作流。 例如,你可能希望在第一次保存行时为某行设置某些默认值,或者希望确保不会删除某些行。
实时工作流和后台工作流之间的转换
通过选择工具栏上的转换为后台工作流,您可以将实时工作流更改为后台工作流。
通过选择工具栏上的转换为实时工作流,您可以将后台工作流更改为实时工作流。 如果后台工作流使用等待条件,它将变得无效,在删除等待条件之前,将无法激活它。
在状态变化之前或之后启动实时工作流
在为实时工作流配置自动流程选项时,状态更改事件的启动时间选项可用于选择状态变化时的之后或之前选项。 默认选项为之后。
选择 “之前”时,表示希望在保存更改状态的数据之前应用实时工作流中的逻辑。 这样,就可以在操作后应用其他逻辑之前检查值,并防止执行进一步的逻辑。 例如,您可能在某个插件或自定义实时工作流操作中有其他逻辑,该逻辑可能会启动对另一个系统的操作。 通过停止进一步处理,可以避免外部系统受到影响的情况。 在事件发生前应用实时工作流这也意味着其他可能保存数据的实时工作流或插件操作在取消操作时不需要“回滚”。
在实时工作流中使用停止工作流操作
当您在实时工作流中应用停止工作流操作时,可以选择指定一个状态条件(可以为成功或取消)。 当您将状态设置为取消时,将会阻止本操作。 此时将会显示一条错误消息,其中包含停止操作状态消息中的文本,标题为业务流程错误 。
配置运行实时工作流的人员
在工作流设计器中,可以将工作流的运行者设置为“工作流的所有者”或“对记录进行更改的用户”。若要将记录的所有者更改为其他用户,请在工作流编辑器中打开 “管理 ”选项卡,并使用查找为工作流选择新的所有者。 您需要系统管理员或系统自定义者安全角色,或者具备prvChangeOwnerIdOfWorkflow权限的角色,才能更改工作流的所有者。