自定义服务
服务编排
1、通过拖拽左侧工具栏组件图标至画布,再设置节点的属性,最后将各个节点拖拽连线起来,即完成了服务的编排
2、服务一般由开始节点、结束节点,以及操作节点和连线构成,如下图所示:

3、服务可以通过连线实现流程分支,在服务中节点的下级节点可以是一个,也可以是多个。当只有一个下级节点时不用设置连线的执行条件属性;当有多个下级分支节点时,只能有一个默认的连线,即不设置执行条件,其他连线需要设置执行条件(并行除外),执行的顺序是按设置条件的先后顺序依次判断执行条件是否返回true,返回true则执行该分支,否则继续判断下一个分支的执行条件,当条件分支都不返回true时,则执行默认连线的分支。即实现编程语言中的流程控制:
if(...)
...
else if(...)
...
else
...
如下图所示:

4、节点属性设置,可以是字符串常量,也可以通过执行表达式来设置值,凡属性框右侧有fx图标的都可以使用表达式。如下图所示:
服务定义
设置服务名称、编号以及服务的入参出参配置方法等,如下图所示:

| 属性 | 描述 | 是否必填 |
|---|---|---|
| 服务名称 | 用于在服务列表显示 | 是 |
| 服务编号 | 服务执行的唯一标识 | 是 |
| 服务分类 | 对服务进行分类 | 否 |
| 输入参数 | 对服务的输入参数定义,可以点击右图标弹出参数设计器进行勾选 | 否 |
| 输出参数 | 对服务的输出结果定义,可以点击右图标弹出参数设计器进行勾选 | 否 |
| 匿名访问 | 定义服务否可以匿名访问 | 否 |
按钮
| 按钮 | 说明 |
|---|---|
| 退出 | 建议使用该按钮退出服务的编排,退出时会检查保存状态并提示 |
| 放大 | 对画布放大显示,不改变节点尺寸 |
| 缩小 | 对画布缩小显示,不改变节点尺寸 |
| 顶部对齐 | 当选择多个节点时,可设置顶部对齐 |
| 左对齐 | 当选择多个节点时,可设置左对齐 |
| 右对齐 | 当选择多个节点时,可设置右对齐 |
| 底部对齐 | 当选择多个节点时,可设置底部对齐 |
| 删除 | 删除选择的所有节点 |
| 撤销 | 撤销对服务的修改 |
| 恢复 | 恢复对服务的修改 |
| 在线调试 | 当服务保存后,该按钮显示 |
| 保存 | 保存服务 |
| 另存为 | 将服务当前状态保存为一个新的服务 |
服务执行
1、服务执行时,创建上下文ctx(DataMap)作为服务的数据树,供各个节点设置和访问
2、服务的入参在上下文的param属性上,通过ctx.param访问
3、服务会将字符类型json格式的入参转换为:DataMap、List<DataMap>、Object[]以便于在节点中使用
4、服务执行从流程开始节点作为起点,按连线的箭头方向顺序执行各个节点,到流程结束节点服务执行结束并返回结束节点的返回值。(如果没有结束节点则返回最后执行节点的值)
DataMap方法说明
| 方法 | 参数 | 返回值 | 说明 |
|---|---|---|---|
| add | (String key,Object value) | DataMap | 添加对象 |
| addAll | (Map map) | DataMap | 添加Map |
| convert | (Class clazz) | Map | 转换Map值类型 |
| getBigDecimal | (String key) | BigDecimal | 获取BigDecimal |
| getBigDecimal | (String key,BigDecimal defaultValue) | BigDecimal | 获取BigDecimal |
| getBoolean | (String key) | boolean | 获取布尔值 |
| getBoolean | (String key,boolean defaultValue) | boolean | 获取布尔值 |
| getDate | (String key) | Date | 获取日期 |
| getDate | (String key,Date defaultValue) | Date | 获取日期 |
| getDouble | (String key,Double defaultValue) | Double | 获取Double |
| getDouble | (String key) | Double | 获取Double |
| getInteger | (String key) | Integer | 获取整数 |
| getInteger | (String key,Integer defaultValue) | Integer | 获取整数 |
| getLong | (String key) | Long | 获取长整数 |
| getLong | (String key,Long defaultValue) | Long | 获取长整数 |
| getString | (String key,String defaultValue) | String | 获取字符 |
| getString | (String key) | String | 获取字符 |
| getValue | (String key,Object defaultValue) | Object | 获取对象值 |
| load | (Object[] objects) | DataMap | 加载对象数组 |
Result方法说明
接口返回结果,Result继承至DataMap,实例对象也同时拥有DataMap的方法
| 方法 | 参数 | 返回值 | 说明 |
|---|---|---|---|
| error | (String message,Object ext) | Result | 失败结果 |
| error | 无 | Result | 失败结果 |
| error | (String message) | Result | 失败结果 |
| ok | (String message,List result,Object ext) | Result | 成功结果 |
| ok | (String message,List result) | Result | 成功结果 |
| ok | 无 | Result | 成功结果 |
| ok | (List result) | Result | 成功结果 |
| ok | (List result,Long size) | Result | 成功结果 |
| ok | (String message) | Result | 成功结果 |