ZeroCloud 低代码开发平台
首页
用户手册
开发者手册
首页
用户手册
开发者手册
  • 用户手册

    • 产品简介
    • 快速入门
    • 工作台
    • 组织管理
    • 数据管理
    • 业务建模

      • 表单管理

        • 表单设计
        • 组件配置

          • 组件属性
          • 组件校验
          • 组件事件
        • 常用组件

          • 网页
          • 明细表格
          • 明细区域
          • 下拉选择
          • 选择数据
      • 表单模型

        • 模型设计
        • 用法示例
      • 视图管理

        • 视图设计
        • 基础组件

          • 文字
          • 按钮
          • 图片
          • 链接
          • 分割线
          • 标签
          • 网页
          • Html
        • 布局组件

          • 页头
          • 容器
          • 网格
          • 区块
          • 卡片
          • 标签页
        • 模态组件

          • 对话框
          • 抽屉
        • 数据展示

          • 表格
          • 数据表格
          • 树
          • 数据树
          • 轮播图
          • 日历
          • 图表
          • 时间线
          • 步骤条
          • 宫格
          • 进度条
          • 分页
          • 标记
        • 数据输入

          • 表单/表单项
          • 文本框
          • 开关
          • 日期选择
          • 单项选择
          • 多项选择
          • 下拉选择
          • 滑块
          • 评分
      • 报表管理
      • 任务调度
    • 流程设计

      • 流程定义

        • 流程设计
        • 节点配置
        • 办理人配置
      • 我的任务
      • 流程运维
      • 流程监控
      • 通知模板
      • 流程权限
    • 应用管理
    • 安全管理

      • 用户组
      • 安全角色
      • 权限资源
      • 权限分配
    • 系统监控

      • 在线用户
      • 系统日志
      • 缓存监控
      • 事务监控
  • 开发者手册

    • 安装部署

      • 环境要求
      • 生产环境
    • 技术架构

      • 技术栈
    • API 文档

      • 概述
      • PC端 JS-API

        • 全局变量
        • PC表单
        • PC视图
      • 移动端 JS-API

        • 全局变量
        • 移动表单
        • 移动视图
      • 服务端 API

    • 常用案例

      • PC表单

        • 表单组件

          • 明细表格
          • 选择数据
        • 表达式
        • 字段校验
        • 生命周期
        • 组件事件
        • 扩展方法
        • 常用示例
      • PC视图

        • 视图组件

          • 数据表格
          • 上传组件
        • 组件事件
        • 扩展方法
        • 生命周期
        • 视图样式
        • 系统案例

          • 消息提醒
          • 操作确认
          • 全屏加载
          • 批量删除
          • 高级搜索
          • 远程搜索
          • 组件间传值
          • 数据表格默认全选
          • 时间范围
          • 附件下载\预览
          • 模态层动态展示图片
          • 表格重复行合并行
          • 评分禁用
          • 右键树菜单
          • 视图中打开视图
      • 表单模型

        • 示例
      • 流程示例

        • 基本配置示例
        • 自定义办理人
        • 条件示例
        • SQL示例
        • HTTP节点示例
        • 流程事件常用代码
      • 报表示例

        • 报表中点击查看附件
        • 单元格展示图片
        • 分组合并
      • 自定义服务

        • 系统表单
        • 系统视图
        • 流程服务
        • 附件文件
        • 开始
        • 环境搭建
        • Swagger 文档
        • 前台通用请求方式
        • 自定义返回值
        • 按钮点击给明细表赋值
        • 表单展示接口报错
        • 数据选择使用ajax
        • 数据源使用后台接口
        • 根据临时变量的值给后台传参
        • 批量删除
        • 删除按钮
        • 入库判断库存
        • 表单调用后台自定义接口
        • 后台发起流程
        • 出库校验
  • 常见问题

    • 问题反馈

节点配置

通用节点配置

常规

常规节点可以配置当前节点的基本信息

  • ID:当前节点的ID
  • 名称:当前节点的显示名称
  • 描述:当前节点的描述信息

执行监听器

暂略

开始/结束

开始/结束节点分别代表流程的开始和结束,是最基本的两个基础节点,在ZeroCloud中,任何的流程必然以开始节点开始,以结束节点结束

开始节点需要配置数据表,这样数据才能落库。

审批

审批节点主要用于确定对审批的办理人和审批的规则

审批节点

此区域主要用于配置审批节点的审批规则,如办理人、操作权限、处理规则等

其中:

办理人

指定此审核节点的办理人(处理人),详细规则请参考办理人配置部分的介绍

操作权限

审批节点办理人只能执行勾选上的操作

批量同意

无需打开表单,直接在我的任务页面上选中待办任务,批量通过。注:只有配置了批量同意权限的任务,才能正常同意

退回重填

将流程退回到填写节点,让发起人重新填写表单内容。例如审批时发现部分数据错误或缺失

方式1:在我的任务页面,对应任务的操作栏中,点击更多,然后点击退回重填

方式2:打开流程表单,在操作栏中,点击退回重填

退回某步

将流程退回到已经处理过的指定节点

取回

将进行中的流程,取回到已经处理过的节点。例如流程发起后,发现数据填错,在审批人未审批前,将流程取回重填

发起人取回

在个人申请页面,选中进行中的流程,然后点击取回

或者在个人申请页面,打开流程表单,点击更多操作,点击取回

办理人取回

在已办任务页面,打开流程表单,点击更多操作,点击取回

取回配置

转办

将流程任务交给他人处理。转办后,转办人待办列表中会显示该任务

撤销
拒绝
加签

临时添加一位或多位审批人,共同处理该任务

保存、暂存

审批阶段,对表单内容进行了修改后保存,以便下次打开后继续进行数据调整。注:保存会触发表单中的校验规则,暂存不会

直送

退回重填后,跳过中间的审批节点,将流程前进到退回重填的节点

使用直送时,审批节点和填写节点都要配置直送权限

无匹配办理人策略

当此审核节点没有对应的办理人时执行的操作

  • 跳过本步骤:自动跳过当前审核节点
  • 不允许提交:不允许用户执行提交操作

自动同意规则

指定此审核节点在何时可以自动同意,可以有效的避免重复审核

  • 办理人为发起人:如果当前节点的办理人是发起人自己,将自动跳过此审核节点

共享处理

指定此审核节点是否允许多个办理人共享处理,打开共享处理,任务会进入到共享任务中,需要先获取处理权,才能继续处理

数据控制

数据表

配置当前审核节点使用的数据表

  1. 点击编辑表定义按钮
  1. 在打开数据表定义页面中配置需要使用到的数据表,明细表需要勾选明细表的选项,根据需求决定是否需要自动创建行。
  1. 数据表中可以设置默认值及提交值

默认值为这个字段没有值的时候才会生效。距离说明,前置节点已经设置了提交值,那么后置节点的默认值不会生效。

提交值跟默认值都是实际都是java语句,所以需要赋值常量时,需要加上""括起来。 提交值跟默认值也支持使用上下文变量直接赋值。

右侧通过单选框的形式,可以控制字段读写权限,也可以添加必填校验和开启字段留痕

开启字段留痕后,在开启留痕的节点打开表单时,字段对应的输入组件右上角会出现如图所示标识,点击后可以查看痕迹

节点表单

配置当前审核节点对应的表单

  1. 点击选择框右侧的放大镜图标
  1. 在打开的选择表单对话框中,选择对应的表单即可。

会签

会签节点和审批节点类似,与审核节点不同,会签节点有一些额外的配置,可以更灵活的控制多人审核时的场景

配置审核节点中的项和普通的审核节点一致,区别是额外多了一个会签的配置

其中:

会签模式

用于控制会签的签核模式,有顺序签核以及并行签核

  • 顺序签核:是由审核节点中配置的办理人列表的顺序依次审批
  • 并行审核:则是办理人列表中所有办理人并行审批

会签通过比例

会签通过比例用于配置在审核的通过规则

  • 一票通过:有一个办理人同意即可通过
  • 半数以上通过:当一半以上办理人同意时通过
  • 按比例通过:当指定比例的办理人同意时通过
  • 按数量通过:当指定数量的办理人同意时通过
  • 全部通过:当所有办理人均同意时方可通过
  • 一票否决:有一个办理人否决即`不通过``
  • 半数以上否决:有一半以上办理人否决即不通过
  • 按比例否决:有指定比例办理人否决即不通过
  • 按数量否决:有指定数量办理人否决即不通过
  • 全部否决:当所有办理人均否决时才不通过

允许否决

只有开启后,审批人才能投否决票

否决后操作

自由签核

自由签核节点和会签节点类似,在配置中仅多了一个会签人指定节点选项

知会节点

知会节点正常配置办理人,但是无需办理人做任何操作,流程自动流转到下一个节点。

该任务会推送到流程门户->待办事项->我的待阅中,在这里可以进行已阅操作,或者知会操作

互斥网关

互斥网关和其他节点不同,条件节点的主要配置不在节点配置中,而在连线的配置中

在连接条件节点和其他节点后,选择连线,出现以下配置页面

其中:

条件类型

用于控制判断的方式,可选脚本或表达式,脚本方式可以通过脚本来进行条件判断,而表达式方式则允许通过js表达式进行判断

条件内容

填写具体的脚本或表达式

例如,需要判断指定数据表中的amount字段是否大于1000,这里使用的是juel表达式,建议使用juel表达式

${form_data_snapshot.ZeroCloudData.purchase_m.get(0).amount>=1000}

例如判断这个字段中是否包含指定字符

${form_data_snapshot.erp.buyer.get(0).user_name.indexOf("老师")!=-1}

这里也支持Groovy条件语言


def name = form_data_snapshot?.erp?.buyer?.get(0)?.user_name?: ''
def containsNurse = name.contains('护士') 

使用提示

选中连线后,点击小扳手

选择默认流程。 这样在互斥网关发现没有符合条件内容的路径时,会走默认流程,如果不设置,流程就会报错。

或者能确定路径的配置可以包含所有情况,也可以。

并行网关

并行网关可以将流程的走向分离或整合,如果流程经过并行网关时,会分为多条流程继续执行,如果多条流程经过同一个并行网关时,会合并为一条流程

通过并行网关,可以控制流程走向

包容网关

包容网关是互斥网关和并行网关的综合体。当进行决策判断时,与互斥网关所不同的是,所有条件为true的后继分支都会被依次执行,如果所有分支条件决策都为false且该网关定义了一个默认的连线,那么该默认分支将被执行。如果没有可到达的分支,抛出异常,该网关所处的分支被中断,在流程设计上应避免这种情况发生。包容网关有分支和合并两种行为,允许多进多出。

SQL脚本

数据源

首先需要配置sql语句交互的数据源

脚本语言

支持groovy和freemark两种格式,推荐使用groovy

SQL脚本

通过sql语句,直接交互数据库

点击按钮可以打开编辑页面,左侧可以快速插入变量值,注:快捷插入的变量是用${}包起来的,选择Groovy脚本时要去掉

Groovy示例

修改语句

def businessKey = variables["zc_business_key"];
def sql = "update demo set state = 1 where business_key = '$businessKey'";
//process打印sql
println sql;
return sql;

循环明细表

def businessKey = variables["zc_business_key"];
def codes = "";
formData["erp"]["purchase_m_detail"].each{
    if(it["quantity"] > 1){
        if(codes == ""){
            codes = it["material_code"];
        }else{
            codes = codes + "," + it["material_code"]
        }
    }
}
def sql = "DELETE FROM purchase_m_detail WHERE business_key = '${businessKey}' AND material_code IN ($codes)";
println sql;
return sql;
Freemarker示例

修改语句

update demo set state = 1 where business_key = '${formData["zerocloud_data"]["test"][0]["business_key"]}';

设置变量

<#assign item_code = '010'>
<#assign item_name = formData["erp"]["buyer"][0]["user_name"]>

INSERT INTO `erp`.`stock`(`item_code`, `item_name`) VALUES ('${item_code}', '${item_name}')

判断传参是否为空

<#assign item_code = '010'>
<#assign user_name_exists = formData["erp"]["buyer"][0]["user_name"]?has_content>

<#if user_name_exists>
  <#assign item_name = formData["erp"]["buyer"][0]["user_name"]>
<#else>
  <#assign item_name = 'Default User Name'>
</#if>

INSERT INTO `erp`.`stock`(`item_code`, `item_name`) VALUES ('${item_code}', '${item_name}')

循环明细表并判断


<#list formData["erp"]["buyer"] as buyer>
   <#assign item_code = '010'>
   <#assign user_name_exists = buyer.user_name?has_content>

    <#if user_name_exists>
    <#assign item_name = buyer.user_name>
    <#else>
    <#assign item_name = 'Default User Name'>
    </#if>

INSERT INTO `erp`.`stock`(`item_code`, `item_name`) VALUES ('${item_code}', '${item_name}')
     
</#list>

HTTP服务

通过http调用后端接口,完成业务逻辑

  • Method:接口调用方式

  • URL:接口请求路径,当请求的是平台内置的自定义服务时,可以根据nacos别名使用/custom/**/**来请求。 使用本地项目或者其他第三方项目时,使用公网可以访问的url

  • Query:携带在路径上的参数,可以点击右侧放大镜选择数据

  • Header:携带在请求头上的参数

  • Content Type:body请求体类型

  • Body:post请求请求体,使用java代码封装成请求的json格式数据

示例语句就是把[数据源][表名]转换为一组json格式的数据

return new ObjectMapper().writeValueAsString(formData["zerocloud_data"]["purchase_t"]
);

更新数据

对指定数据源,指定数据表的数据进行操作

添加数据表

更新方式

  • 更新:更新已存在的数据
  • 合并:存在则更新,不存在则插入
  • 插入:插入一组新数据
  • 删除:删除匹配的数据

更新规则

左侧选择数据表中的字段,右侧配置要插入或修改的值。分为常量、字段和公式三种类型。

选择常量时,字符串类型要用""包起来

选择字段时,点击放大镜可以选择流程关联数据表中的字段

选择公式时,可以将多个字段进行拼接,使用formData["数据源"]["数据表"][0]["字段名"]的方式来取字段值

匹配规则

当更新方式为更新、合并或删除时,用来判断哪些数据需要操作

子流程

在某个流程执行过程中可以创建一个新的流程并执行,结束后可以返回父流程的流程。发起子流程时,主流程会等待子流程执行完,同时子流程的执行结果会影响主流程,比如子流程若被拒绝,那么主流程也会拒绝。平台提供了两个子流程组件,分别是调用子流程和嵌入子流程

调用子流程

绑定流程key,可以在流程中调用流程

嵌入子流程

嵌套子流程跟住流程使用一套数据,使用嵌套子流程的目的是方便流程展示,保证流程可读性。 点击右下角小箭头可以编辑子流程

进入子流程后,必须配置开始节点跟结束节点 点击左上角超链接,可以回到主流程。

发起流程

发起一个新的流程实例,不会等待其执行结果也不会受其审批结果影响。

配置数据输入时,发起流程的主表数据只能来自于当前流程的主表数据,明细表数据也只能来自于当前流程的明细表数据

Prev
流程设计
Next
办理人配置