Skip to content

自动化

概述

织信的自动化功能提供了一种图形化的编程环境,利用自动化步骤的组合实现程序逻辑。 程序是为了实现一个特定的目标而设计的一组可操作的工作步骤,在自动化中通过变量 流程控制 自动化步骤来实现程序功能。 一个典型的自动化程序如下 自动化程序示例

自动化的使用场景是自动化的调用方通过传递参数给自动化程序,自动化程序在执行特定动作后将结果返回给调用方 自动化调用过程

自动化执行说明

单个用户调用自动化是同步阻塞的,只有上一个调用自动化一次请求运行完,才会运行下一个自动化。

终止自动化运行

如果自动化执行时间过长未执行完或逻辑产生了死循环,可通过应用运行状态监控功能来终止自动化运行

输入参数

在调用自动化时可以传递多个输入参数。可以依照上下文定制不同类型的参数,参数名称支持用于自定义。

参数说明

在自动化参数选取的类型仅会影响在自动化中使用表达式引用时的提示,自动化在运行时不会校验传入的参数类型。

变量

变量有一个唯一的标识符和类型,在自动化中变量可以是输入参数,也可以通过设置变量步骤设置。在自动化的表达式中可以引用所有的变量。 变量有作用域范围,超过作用域范围的变量不可见,在表达式中不可以引用未定义的变量。

流程控制

  • 条件判断 步骤通过一个表达式来控制自动化程序的流转,条件表达式需要返回 boolean 值。
  • 列表循环 步骤接受一个表达式作为循环集合,对于每一个循环集合中的列表项会顺序的执行列表循环的子步骤。
  • 终止执行 步骤会立即结束自动化的执行,并且会回滚最后一个阻塞步骤之后的所有事务。
  • 跳转到步骤 跳转到指定的步骤运行。
  • 调用自动化 调用另外一个自动化程序,并返回结果。
  • 调用脚本 调用脚本,并返回结果。
  • 设置自动化返回值 步骤接受一个表达式作为自动化的返回值。该步骤可以多次调用,后一次调用会覆盖前一次调用的结果。自动化的返回值可以作为调用方的调用结果。

表达式

织信使用 UEL 语法的表达式,关于表达式的更多内容,可参见表达式章节的描述

自动化步骤

在自动化中可以使用下表中的自动化步骤实现程序功能。自动化步骤分为设置项返回值两部分,一个典型的自动化步骤如下 自动化步骤示例 对于每一个自动化步骤,可以通过设置项中的选项进行参数配置,如果自动化步骤 有返回值,在步骤运行完成后,会将变量写入到自动化运行上下文中。后续的步骤按照设置的返回值标识符就可以访问此变量。

交互式执行

自动化程序中可以插入需要用户交互的步骤,这一类步骤我们称之为交互式步骤。在自动化程序执行到交互式步骤 的时候,会将执行变量保存下来,通知用户进行交互式处理,例如需要用户填写表单数据。在用户提交后,自动化程序会将执行变量恢复,从交互式步骤 继续执行。

交互式执行的自动化程序可以更方便的让开发人员编写业务过程。执行中所有界面交互类的自动化步骤都是交互式的。

性能提示

在执行交互式步骤时,系统会将所有的变量临时保存,如果变量很多的话这会是一个非常耗时的过程,如果遇到这种情况,建议在执行交互式步骤之前将不需要的变量通过设置变量,方法设置为null值,以提高性能。

限制

在自动化运行时,每运行一个步骤会将步骤运行次数递增,当步骤运行次数大于1000000 时,系统会终止自动化的运行,并抛出异常。步骤运行次数的最大值可以在系统设置中修改。

在自动化中如果有调用其它自动化,步骤运行次数也会累加。

如果需要在自动化中执行大量的循环等操作,建议将这部分修改为使用代码片段运行。

通过HTTP的方式调用

开启通过HTTP的方式调用后,自动化程序允许使用HTTP请求的方式调用,调用地址如下

https://{host}/web${cluster}/automatic/${appId}/${automaticId}?args=${args}
  • ${host} 为服务的部署地址
  • ${cluster} 为部署的集群ID,单节点部署时为0
  • ${appId} 为应用的ID(不是标识符)
  • ${automaticId} 为自动化的标识符
  • ${args} 为请求参数。传递给自动化的参数是一个数组,格式为JSON后的数据

当调用成功后返回内容为自动化执行的返回值,返回值将会按照自动化配置的格式返回。

注意事项

通过HTTP请求的自动化内部不能包含交互输出相关的步骤

请求示例

假定在next.informat.cn服务上应用自动化接口(i1mwqy35y88hl),自动化标识符为httpInvoke,请求参数为["a1",2,{"a":1,"b":2}]

请求参数

  • 在URL地址后拼写传递的,需要对JSON后的args参数再进行一次encode
  • 使用post的body方式传递,仅需要JSON格式即可
  • GET请求方式
  • POST请求方式