流程设计
# 流程设计
流程设计模块中,可以设定工作流信息,指定用户在工作流中参与的任务,这个模块是企业工作流程的核心模块,所有与工作流程相关的信息都可以在此处进行设定。
# 1. 创建工作流程
点击[BPM流程管理]-[流程设计]
,打开流程设计模块。点击[新增]
按钮,新增一个工作流程,填写流程名称、流程说明、流程标准完成时间等信息,填写完成后,点击[保存]
按钮。

# 2. 设置流程用户
用于设置当前创建的工作流程会参与的用户组别信息。目前最多支持4个用户组别。此处选择的用户组别是为流程设计环节筛选审批用户。
# 3. 设计流程
点击[设计流程]
,打开流程设计界面。以下将介绍设计界面的元素。

# 3.1. 流程图设计器
在流程图设计器中,可以操作执行多项工作。以下是最常见的任务:
向图标中添加节点
要向图表中添加节点,请单击节点工具栏中的某个节点,然后单击图表中要插入节点的位置(或者按下鼠标按钮,移动鼠标并释放按钮,以插入具有指定大小的节点)。
在节点之间创建流转连接
可以通过在工具栏中选择以下图示中的其中一种流转连接类型来在节点之间创建流转连接:
选择流转连接类型后,在源节点的任何流转连接点(流转连接点是图表节点中显示的蓝色“x”)中按下鼠标按钮,拖动鼠标,然后在目标节点的任何流转连接点中松开鼠标按钮。将创建一个流转连接,将源节点流转连接到目标节点。
更改图表节点的外观
可以使用菜单和工具栏中的某些选项来更改图表节点的视觉外观。您可以更改背景颜色、边框颜色、边框样式、画笔样式、笔宽、字体等。图表节点的外观不会影响工作流定义的行为方式,它只是为了视觉美观的目的。
保存
构建图表后,通过选择菜单选项[文件]
-[保存]
,或按工具栏中的保存按钮。
工作流定义选项
点击菜单栏中的工作流
,可以操作工作流定义的特定选项,比如工作流变量与工作流附件。
工作流验证
通过按 Ctrl+F9 或选择菜单选项[工作流]-[检查流程图]
时,将调用工作流定义验证器,该验证器将检查工作流中的问题。如果工作流定义有任何问题,编辑器底部将显示一个包含错误和警告的面板:
# 3.2. 运行工作流
在FastBPM中,可通过以下方式,实现工作流的运行:
# 4. 流程图节点
节点是您放置在工作流图表中的内容。它可以是执行指定操作、流转连接或控制执行流程的一些特殊节点。以下将对工作流中使用的节点进行说明。
# 4.1. 开始节点
- 概述:用于指示从哪个位置开始运行流程。
- 允许的输入数量:0
- 允许的输出数量:1
- 描述:一个工作流的流程图中只能存在一个开始节点。
# 4.2. 结束节点
- 概述:用于指示结束流程运行的位置。
- 允许的输入数量:多个
- 允许的输出数量:0
- 描述:一个工作流的流程图中只能存在一个结束节点。
# 4.3. 错误节点
- 概述:当在执行工作流时发生错误,将执行错误节点。
- 允许的输入数量:0
- 允许的输出数量:1
- 描述:一个工作流的流程图中只能存在一个错误节点。每当在工作流执行过程中发生错误时,执行流程都会转到错误块,然后按照它指定的路径(错误块之后的下一个块)进行操作。您可以使用错误块来执行一些清理,然后完成工作流的执行。
# 4.4. 源连接器
- 概述:源连接器是一个直通模块,用来提高图表的可读性,用来将运行流程指向目标连接器。
- 允许的输入数量:多个
- 允许的输出数量:0
- 描述:如果运行的流程到达源连接器,则运行的流程会跳转至与源连接器相关联的目标连接器。源连接器与目标连接器之间的关联是由它们内部设置的文本实现的,如果源连接器与目标连接器中显示的文本相同,则建立起连接。比如,当流程图运行至标记为
A
的源连接器时,它会跳转到标记为A
的目标连接器。这样,您可以在单个关系图中拥有多个源-目标连接。
# 4.5. 目标连接器
- 概述:目标连接器是一个直通模块,用来提高图表的可读性,用来将运行流程指向源连接器。
- 允许的输入数量:0
- 允许的输出数量:1
- 描述:如果运行的流程到达源连接器,则运行的流程会跳转至与源连接器相关联的目标连接器。源连接器与目标连接器之间的关联是由它们内部设置的文本实现的,如果源连接器与目标连接器中显示的文本相同,则建立起连接。比如,当流程图运行至标记为
A
的源连接器时,它会跳转到标记为A
的目标连接器。这样,您可以在单个关系图中拥有多个源-目标连接。
# 4.6. 流转连接
概述:将一个节点连接至另一个节点,用来指示图标的执行流程。
描述:使用流转连接将一个节点连接至另一个节点,表示执行的流程,就是从源节点流向目标节点。可以通过按住鼠标按钮在源块的一个连接点(块中的蓝色"x")上,拖动鼠标,并在目标块的一个连接点上释放按钮来创建流转连接。
箭头指示的是执行的流程。创建的流转连接类型有普通流转连接、侧边流转连接以及弧形流转连接。他们的行为是相同的,仅在视觉效果上有差异。
根据节点允许的输入和输出数量,可能无法流转连接到部分节点。比如,您无法创建一个目标为开始节点的流转连接,因为开始节点不允许输入。
一些节点允许多个流转连接作为输出,在这种情况下,每个流转连接都需要被标记,以便流程图根据指定的条件判断要执行哪个流转连接,流程在离开节点时只能执行其中一个流转连接。比如两个流转连接都连接到了决策节点的输出,其中一个被标记为
是
,另一个标记为否
,以便图表知道根据决策条件的结果应该执行哪个连接。还可以为流转连接指定运行的脚本,当执行流转连接的时候,其中的脚本将被执行。在流转连接的对话框中有一个名为脚本的标签,可以在其中编写要使用的脚本。当流转连接中使用了脚本,在流转连接的起始位置可以看到一个小闪电的图标。
# 4.7. 分叉对象
- 概述:创建并行执行的路径。
- 允许的输入数量:多个
- 允许的输出数量:多个
- 描述:分叉对象用于创建并行执行路径。当一个工作流实例的图表启动时,有一个单一的执行路径(由开始节点启动)。如果执行到达一个分叉对象,流程就会根据分叉的输出数量被分割成多个并行路径,并同时执行。最终,所有的执行路径都必须在同一个合并对象处结束,否则图表就是不正确的。一旦所有并行执行路径完成,主执行路径将再次从合并对象处开始。
# 4.8. 合并对象
- 概述:结束由分叉对象创建的并行执行路径。
- 允许的输入数量:多个
- 允许的输出数量:1
- 描述:合并对象用于结束并合并并行执行路径。当一个工作流实例的图表启动时,存在一个单一的执行路径(由开始节点启动)。如果执行到达一个分叉对象,流程会根据分叉的输出数量被分割成多个并行路径,并同时执行。最终,所有执行路径都必须在同一个合并对象处结束,否则图表就是不正确的。一旦所有并行执行路径完成,主执行路径将再次从合并对象处开始。主执行路径将在合并对象处重新启动,通过连接到其输出的下一个节点继续执行。只有在由分叉对象创建的所有执行路径都完成后,主执行路径才会重新启动。
# 4.9. 决策节点
- 概述:根据布尔条件(是与否)更改执行流程。
- 允许的输入数量:多个
- 允许的输出数量:2(是或否)
- 描述:使用决策节点根据布尔条件改变执行流程。当执行流程到达决策节点时,会评估该节点的条件。如果条件为是,则执行路径通过标记为“是”的流转连接。如果条件为否,则通过标记为“否”的流转连接。
# 4.10. 任务节点
概述:根据任意定义为用户创建任务实例。
允许的输入数量:多个
允许的输出数量:多个(仅限于状态列表)
描述:任务节点是关系图中更重要的节点类型之一。 使用任务节点,您可以指定要为其创建的任务定义用户。当执行流到达任务节点时,它会创建任务每个任务定义的实例。任务节点本身只不过是一组任务定义。因此,要使用任务节点,只需创建一个或多个任务定义并设置任务定义属性。
工作流执行将在任务节点处暂停,直到所有任务实例完成。当任务实例的状态变为完成状态时,任务实例即被视为完成。所有任务实例完成后,执行流程将继续,根据以下规则:
- 任务节点只有一个输出:执行流程将通过该路径。
- 任务节点有两个或更多输出:每个输出流转连接必须用一个完成状态的名称标记。执行路径将通过标记与任务节点输出相同文本的流转连接,即任务实例的完成状态,例如,如果任务实例以“批准”(一个有效的完成状态)完成,则执行路径将通过标记为“批准”的转换。
如果任务节点创建了多个任务实例,无论是来自同一任务定义还是来自不同的任务定义,那么任务节点的输出将是任务实例中最普遍的完成状态。例如,如果两个任务实例完成为“拒绝”,而一个任务实例完成为“批准”,那么任务节点的输出将是“拒绝”,执行路径将跟随标记为“拒绝”的流转连接。
# 4.10.1. 任务定义属性
任务定义是在任务节点的任务定义编辑器(任务对话框)中创建的。当双击任务节点时,会显示一个对话框。可以使用[添加]
或[删除]
按钮来添加或删除任务定义。对话框左侧的列表视图显示了节点现有的任务定义。任务定义的名称会显示出来。
左侧显示的内容为任务定义的名称,它是唯一标识任务定义的有效标识符。在以下示例为SetDateTask
。
常规
状态:
- 状态列表:包含任务有效状态的列表。任务的初始状态将是列表中的第一个状态。通过勾选“完成”选项,一些状态可以被标记为完成状态。当任务实例的状态变为完成状态时,任务被认为已完成。您可以有多个状态被标记为完成状态。勾选了“隐藏”选项的状态是任务的一个可能状态,但不会在用户界面中显示以供更改任务状态(比如在状态下拉框中)。当任务实例被创建时,有效状态会在任务列表对话框中的一个下拉框里显示,然后用户可以更改任务的状态。如果您的应用程序中预定义了状态模板,用户将能够使用
[增加]
按钮右侧的向下箭头按钮选择其中一个模板。
- 状态列表:包含任务有效状态的列表。任务的初始状态将是列表中的第一个状态。通过勾选“完成”选项,一些状态可以被标记为完成状态。当任务实例的状态变为完成状态时,任务被认为已完成。您可以有多个状态被标记为完成状态。勾选了“隐藏”选项的状态是任务的一个可能状态,但不会在用户界面中显示以供更改任务状态(比如在状态下拉框中)。当任务实例被创建时,有效状态会在任务列表对话框中的一个下拉框里显示,然后用户可以更改任务的状态。如果您的应用程序中预定义了状态模板,用户将能够使用
附件:定义了用户在处理附件时的权限。
- 显示附件:在任务列表中显示附件标签。如果设置为未勾选,用户将无法进行任何与附件相关的操作
[添加]
、[查看]
等)。如果设置为勾选,用户至少能够打开并查看附件。 - 允许移除附件:如果设置为勾选,允许用户从任务实例中移除附件。
- 允许插入附件:如果设置为勾选,允许用户向任务实例中插入新的附件。
- 允许编辑附件:如果设置为勾选,允许用户打开现有附件进行编辑,并更新其内容。
- 显示附件:在任务列表中显示附件标签。如果设置为未勾选,用户将无法进行任何与附件相关的操作
字段:用来设定在工作流程环节流转时需要传递的字段信息。
- 文本标题:在任务环节显示的字段标题名称。
- 工作流变量:该字段绑定的工作流的变量名称。
- 编辑器类型:字段编辑使用的编辑器的类型,比如文本输入框、复选框等。
- 只读:当前设定的字段是否为只读字段。
- 必修:表示当前设定的字段是否为必须填写或必须修改的项目。
过期:设置当前任务的过期状态设定。如果设置了任务过期,则在任务过期后,会自动选择过期设定的状态,继续执行后续的工作流任务。
- 任务不过期:除非通过代码或者认为去操作改变任务的状态,否则任务不会过期。
- 过期类型:任务在执行到此处时,超过多少时间无操作时,设置为任务过期。
- 过期日期时间:表示该任务在特定时间点过后过期。
- 过期时间表达式:使用时间表达式,自行定义任务的过期时间点。
- 过期状态:设定任务过期时要切换的状态。
# 4.11. 审批节点
- 概述:这是一个特殊的任务节点,具有单个审批任务定义。
- 允许的输入数量:多个
- 允许的输出数量:多个(仅限于状态列表)
- 描述:审批块只是一个任务块,它有一个 任务定义。此任务定义是审批任务定义,并且是常规任务 定义,不同之处在于某些属性已经存在 已初始化,包含主题、描述,特别是状态 列表。审批任务的状态列表中有三个有效状态:“已打开”、“已批准”和“已拒绝”。“已批准”和“已拒绝”状态是任务的完成状态。可以根据需要更改审批任务定义属性,就像在任务块中一样。与任务块的唯一区别是,您不能在审批块中创建多个任务。
设置中的关联用于指定该审批节点由哪个用户或者用户组操作。
# 4.12. 脚本节点
概述:执行脚本代码。
允许的输入数量:多个。
允许的输出数量:1(如果脚本不返回任何值)或多个(取决于可能的脚本结果)。
描述:脚本节点只执行一个脚本代码。在大多数情况下,脚本节点将只有一个输出。但您也可以从脚本节点中使用多个输出,这将取决于脚本结果。您可以定义使用
result
变量编写Result
脚本:result := 'result1';
1如果您有多个输出,则每个离开流转连接都应该有一个标签,执行流将采取与脚本结果相同的标签的流转连接。在上面的示例中,您必须有一个标记为
result1
的流转连接,以便执行将遵循该路径。
# 4.13. 运行工作流节点
概述:运行单独的工作流实例。
允许的输入数量:多个。
允许的输出数量:1
描述:运行工作流节点允许运行新的工作流(子工作流), 与当前实例分离,采用同步或异步方式。为了在工作流实例之间交换信息,一个变量映射应在节点定义中指定。
如果选中了
等待到结束
,则当前工作流将等待子工作流完成,以便继续。在这种情况下,变量映射是双向的。如果未选中
等待到结束
,则无论子工作流状态如何,当前工作流都将继续正常执行。变量映射只是单向的。变量映射列出了子工作流中的哪些变量将进行更新。在双向映射的情况下,当子工作流完成时,子工作流中的变量将更新主工作流中对应的变量值。
# 4.14. 数据库SQL节点
概述:在数据库中执行SQL语句,仅支持FastBPM设定的数据库的连接。
允许的输入数量:多个
允许的输出数量:1
描述:此节点允许在数据库中执行查询的SQL语句,可以在SQL语句中使用表达式。
参数:SQL语句:包含要在数据库中执行的SQL语句。支持表达式。例如:
Update Invoice Set Status = 3 Where InvoiceId = [InvoiceId]
1
# 4.15. 发送邮件节点
概述:发送电子邮件。
允许的输入数量:多个
允许的输出数量:1
描述:此节点使用FastBPM中默认的邮件设置实现邮件发送的功能。
# 4.16. MQTT发送节点
- 概述:发送MQTT消息。
- 允许的输入数量:多个
- 允许的输出数量:1
- 描述:此节点使用FastBPM中默认的MQTT连接设置实现MQTT消息发送的功能。
# 4.17. 工具SQL节点
概述:执行SQL查询。
允许的输入数量:多个
允许的输出数量:1
描述:用于执行SQL查询,数据库处填写要连接的数据库设置的名称。SQL语句处填写要执行的SQL语句。
# 4.18. WebSocket节点
概述:用于发送websocket消息,使用FastBPM的客户端实现消息的发送。
允许的输入数量:多个
允许的输出数量:1
描述:发送websocket消息文本,使用FastBPM的websocket客户端实现消息发送的功能。
# 4.19. 注释节点
- 概述:显示注释。
- 允许的输入数量:0
- 允许的输出数量:0
- 描述:将视觉元素添加到包含固定文本的图表中。此节点不影响图表的行为,仅用于视觉指示。如果需要支持表达式的文本, 使用文本节点。
# 4.20. 文本节点
- 概述:在图标中显示动态的文本。
- 允许的输入数量:0
- 允许的输出数量:0
- 描述:使用此节点可在图表的任何地方显示文本,该文本可以根据工作流上下文进行更改。这两者之间的主要区别:文本节点和注释节点相比,支持表达式。所以你可以用它来显示日期、变量值等,覆盖或关闭任何其他图表对象。
# 4.21. 数据节点
- 概述:用于表示数据处理的节点,在工作流中无实际含义。
- 允许的输入数量:多个
- 允许的输出数量:1
- 描述:此节点仅用来表示数据处理的含义,用作流程图的说明示意,实际的数据处理环节需在工作流外部进行处理。
# 4.22. 文档节点
- 概述:用于描述文档说明的节点,在工作流运行环节无实际含义。
- 允许的输入数量:多个
- 允许的输出数量:1
- 描述:此节点仅用来表示文档说明,用作流程图的说明示意,无实际含义。
# 4.23. 输入节点
- 概述:用于描述用户输入操作的节点,在工作流运行环节无实际含义。
- 允许的输入数量:多个
- 允许的输出数量:1
- 描述:此节点仅用来表示用户输入的操作,用作流程图的说明示意,无实际含义。
# 4.24. 显示节点
- 概述:用于描述显示行为的节点,在工作流运行环节无实际含义。
- 允许的输入数量:多个
- 允许的输出数量:1
- 描述:此节点仅用来表示显示行为,用作流程图的说明示意,无实际含义。
# 4.25. 行为节点
- 概述:用于描述外部动作的节点,在工作流运行环节无实际含义。
- 允许的输入数量:多个
- 允许的输出数量:1
- 描述:此节点仅用来表示外部动作,用作流程图的说明示意,无实际含义。
# 5. 变量
工作流变量在工作流中,名程为槽(slot)
,可以在其中保存信息,就像程序中的变量一样。可以在工作流定义中创建变量,从工作流定义创建的每个工作流实例都将具有该工作流变量的副本。
如需要定义工作流中使用的变量,请执行以下操作。
打开工作流定义编辑器。
打开菜单选项
[工作流]-[变量]
,将显示变量编辑器。
变量编辑器显示已定义的工作流变量的列表。可以使用[添加]
和[删除]
按钮添加和删除变量。需要做的就是为变量定义一个名称,或者可以在值
编辑框中定义变量的起始值。还可以使用描述
字段向变量添加注释,解释其用途(变量的文档)。定义工作流变量后,可以在表达式和脚本中使用它们。也可以在使用外部呼叫运行工作流时向这些变量传入初始值。
# 5.1. 变量映射
在工作流中定义的变量,可以在FastBPM流程模块中显示。在流程设计完成后,点击[加载变量]
按钮,将流程设计环节定义的变量加载出来,在此处可以设定变量的默认值,在流程运行时使用。

变量支持的默认值类型如下:
默认值类型 | 默认值内容 | 说明 |
---|---|---|
任务单数据集 | json | 获取的数据为传入的json数据集,将默认值内容设置为json 可获取。 |
字符型唯一ID | 表示产生的默认值类型为字符串唯一ID(GUID )。 | |
整型唯一ID | 表示产生的默认值类型为整型唯一ID。 | |
用户ID | 表示传入的参数为用户ID | |
用户代码 | 表示传入的参数为用户代码 | |
用户名称 | 表示传入的参数为用户名称 | |
用户默认值 | 表示传入的参数为用户资料中设定的默认值,默认值内容设定为默认值分类 | |
默认值 | 表示参数设置为默认值内容中填写的内容。 |
工作流中的保留变量说明如下:
变量名称 | 变量值 | 变量描述 | 默认值类型 | 默认值内容 |
---|---|---|---|---|
modulecode | 表单模块 | 默认值 | 填写表单模块的编号 | |
modulecaption | 表单标题 | 默认值 | 表单模块的标题 | |
moduletype | 表单类型 | 默认值 | D | |
currid | 单据ID | 任务单数据集 | currid |
# 6. 附件
附件是一项强大的功能,它允许每个工作流实例具有一个或多个与之关联的文件。用户可以在处理任务时添加、编辑或删除附件(取决于他们的附件权限)。
用户可以将一个文件(或一组文件)附加到一个任务,然后可以为另一个用户创建另一个任务,并且这个新用户可以看到前一个附加的文件。或者,用户可以在工作流执行过程中编辑和更新附件。这使得在执行工作流实例时用户之间的协作更加牢固。
附件实际上是一组文件(附件项)的容器。可以在工作流定义中创建这些“容器”(附件),也可以创建多个附件。默认情况下,始终在工作流定义中创建一个名为“附件”的项目。
如需要定义工作流中初始状态要使用的附件,请执行以下操作。
- 打开工作流定义编辑器。
- 打开菜单选项
[工作流]-[附件]
,将显示变量编辑器。 - 点击
[增加]
按钮,增加一个附件标签栏,修改附件标签栏的名称。 - 右侧点击附件图标按钮,在打开的对话框中选择要添加的附件,导入至附件列表中。
- 上传完成,点击
[确定]
按钮,保存附件至工作流。 - 保存的附件,可以在工作流流转时,通过任务进度审批对话框中查看。
# 7. 表达式
表达式是自定义工作流定义的一种强大方法。您可以在某些节点的多个属性中使用表达式,特别是在任务节点的任务定义属性中使用表达式。当要使用该属性时,文本中的所有表达式都将转换为其值。表达式由括号[
和]
标识。以下是表达式用法的示例:
主题:这是一个关于订单号 [OrderNo] 的主题。
描述:[UserName] 先生,请在 [DateToStr(StartDate + 30)] 前处理完成此任务。
2
在这些示例中,我们有三个表达式:OrderNo、UserName 和 DateToStr(StartDate + 30)。请注意,表达式使用工作流变量。工作流变量的值将在表达式中计算和使用。例如,在计算表达式后,结果文本为:
主题:这是一个关于订单号 1042 的主题。
描述:李子明 先生,请在在 2020年5月12日 前处理完成此任务。
2
除了工作流变量,表达式还接受:
- 运算符:
+,-, /, *, div, mod
- 逻辑运算符:
and, or, not, xor
- 关系运算符:
<>, =, <, >, <=, >=
- 按位运算符:
shl, shr
- 数值常量:
153(整数), 152.43(十进制), $AA(十六进制)
- 字符串常量:
'这是一串文字'
- 字符常量:
#13(返回字符)
- 类似pascal的函数与程序:可参考系统函数、系统程序。
# 8. 脚本
可以在工作流程图中使用脚本。脚本是自定义工作流定义的强大方法。您可以使用脚本块执行其他块无法执行的各种任务。script 的默认语法语言是PascalScript。所以,你几乎可以做你在普通Pascal中能做的所有事情。关于PascalScript的语法相关的内容请参考PascalScript基础。
脚本也是操作工作流变量的一种方式。在脚本中,它们只是常规变量。例如,如果您定义了一个名为“TotalAmount”的工作流变量,则可以使用以下代码读取变量值:
//Calculate comission for the sale
Comission := TotalAmount * 0.2;
2
并使用以下代码更改变量值:
//Increase TotalAmount by 15%
TotalAmount := TotalAmount * 1.15;
2
避免使用消息框和其他对话框或窗口,这些对话框或窗口需要用户交互才能继续脚本,这可能会导致问题。请记住,工作流在线程的后台运行,工作流执行的所有操作都应该是静默且流畅的。如果需要用户交互,通常需要使用任务块为用户创建任务。
# 9. 变量对话框
在直观地创建工作流定义时,您将使用对话框来编辑多个不同块的属性。这些块中的每一个都可能具有接受表达式的参数。在每个具有支持表达式的参数的对话框中,您都会找到一个名为“变量...”的按钮。,这将打开“变量”对话框。此对话框显示可在表达式中使用的所有变量,并允许您将指定的变量拖放到参数控件中。这将在控件中创建一个具有变量名称的表达式。
变量表达式中包含三个系统预设的变量对象:
_Workflow
表示当前的工作流实例对象。这个是初始化使用的对象。_Workflow.WorkflowInstance.Key
:表示当前工作流的实例ID。
_Task
表示当前的任务实例对象。可以使用的变量说明如下:_Task.Key
:表示当前任务的实例ID。
_User
表示用户记录对象。该对象中可以使用的变量说明如下:_User.UserID
:当前用户的用户ID。
# 10. 流程监控脚本
如果要设计的工作流程需要监控外部的数据来切换任务状态的,可以使用流程监控脚本功能。在流程设计界面,将需要使用流程监控脚本的工作流程勾选开启流程监控
并保存。
点击[设计流程监控脚本]
打开流程监控脚本编辑框。编辑脚本后进行保存。
启用流程监控脚本后,当有监控脚本对应的任务创建时,会自动定期执行脚本,直至工作流程结束才会停止定期执行。
以下是使用的示例,通过修改Task
对象的状态来进行任务的进展。
var
d:TRFDataSet;
begin
d:=TRFDataSet.Create(nil);
try
d.Connection := DM.SQDBConnection;
//设置要连接的TARS连接设置名称
d.ConnectionDefName := 'fasterp2';
//SQL语句,用于检查是否有满足符合状态变化要求的语句
d.SQL.Text := 'select customerquote,createby,createdate,isconfirm,confirmby,confirmdate,isprocess,processby,processdate from sdcustomer where customerquote='+quotedstr(Task.Orderid);
d.Open;
if d.RecordCount > 0 then
begin
//Task对象,存储了当前正在执行的任务的对象
if (Task.Subject = '單據審核') and (Task.Status = '未審核')
and d.FieldByName('isconfirm').AsBoolean then
begin
//修改任务状态
Task.Status := '已審核(ERP)';
Task.UserID := d.FieldByName('confirmby').AsString;
//将任务完成的标记置为`T`,表示任务已结束
Task.Completed := 'T';
end;
if (Task.Subject = '單據確認') and (Task.Status = '未確認')
and d.FieldByName('isprocess').AsBoolean then
begin
Task.Status := '已確認(ERP)';
Task.UserID := d.FieldByName('processby').AsString;
Task.Completed := 'T';
end;
end;
finally
d.Free;
end;
end.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35