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