企业信息化目睹之怪现状 - 低代码实现串行流程

串行流程

串行流程属于业务中比较简单的场景,直线审批到底。

实现一个IT报修的流程,包含节点:1、直接负责人审批;2、IT人员修复(审批)

创建模板

创建一个名为itrepair的申请模板,填写的流程编码默认作为申请单号的前缀,如:itrepair-20220210-0001,点创建,进入下一步

流程定义

模型定义

点配置模型,填写模型标识(表名)、描述;点添加数据增加模型字段,默认自带的3个字段不能修改,

字段ID(字段名)、描述、是否必填(表单提交时验证);点击保存数据,该流程的关联的模型创建成功。

可增加多个模型,完成后点下一步进入表单设计。

模型定义1

模型定义2

表单设计

点配置表单,填写表单标识:itApply(表单名)、描述;选择表单上需要显示的按钮(申请有:保存、提交;审批有:同意、拒绝、前加签、转派、协办等),

点保存并设计表单,会创建这个表单并跳转到表单设计器,加入控件并绑定模型字段到控件,保存后能在流程中使用

表单设计1

表单设计2

布局,控件绑定字段(必填项必须有对应控件,字段不能重复绑定);高级控件设置数据源,见控件API

控件配置:

申请单号:IT报修主表/申请单编号 (数据接口 http://101.43.138.169:8880/api/common/billcode_gen/itrepair)
申请人:IT报修主表/申请人ID (数据接口 http://101.43.138.169:8880/api/user)
所在部门:IT报修主表/所在部门编码 (数据接口 http://101.43.138.169:8880/api/user_dept_select)
手机:IT报修主表/报修人电话
工位位置:IT报修主表/报修人座位
问题描述:IT报修主表/问题

表单设计3

表单设计4

点击保存,(以上是创建申请单,照此步骤原样再创建一个itApprove的表单,选择同意、拒绝按钮供审批使用)点下一步进入流程设计

流程设计

点编辑流程图跳转到流程设计器页面,开始画流程图:

1、必须有开始、结束节点; 2、开始节点一般会连接一个自动提交的任务节点; 3、绑定任务节点上的表单(上一步创建的); 4、编写候选人脚本,返回候选人(之后的脚本都类似,可以封装公共脚本或者拷贝现有的); 5、可以构造测试数据,点BUG按钮测试返回的字符串(脚本目的是返回审批人ID),确认无误后保存脚本;

设计完成后点击保存流程图。

流程设计1

流程设计2 - 步骤2

流程设计3 - 新增直接负责人脚本

流程设计4 - 编写直接负责人脚本

assigneeDriectLeader_v1.0脚本内容:
let TaskCall=fn(ctx){
    let dept=ctx["args"]["fm_itrepair_info$dept_code"]
    let db=DbOpen(UC_DB_CONN_SELF);
    let rows=db.select("select * from ou_user_dept_post udp left join ou_post_info pi on udp.post_code=pi.code where pi.flag='leader' and dept_id=?",dept);
    if(type(rows)=="ERROR"){
        return "";
    }else{
        if(ctx["creator"] == rows[0]["user_id"].tostring()){
            let rows=db.select("select * from ou_user_dept_post udp left join ou_post_info pi on udp.post_code=pi.code where pi.flag='leader' and dept_id=(select parent_id from ou_dept_info where id=?)",dept);
            return rows[0]["user_id"].tostring();
        }else{
            return rows[0]["user_id"].tostring();
        }
    }
}

测试数据
{"creator":"7","args":{"fm_itrepair_info$dept_code":"7"}}

注:任务候选人脚本约定说明参考候选人脚本约定

流程设计5 - 创建IT操作员脚本

流程设计6 - 编写IT操作员脚本

流程设计7

assigneeItOperator_v1.0脚本内容:
let TaskCall=fn(ctx){
    let db=DbOpen(UC_DB_CONN_SELF);
    let rows=db.select("select * from ou_user_dept_post udp left join ou_post_info pi on udp.post_code=pi.code where pi.flag='it'");
    if(type(rows)=="ERROR"){
        return "";
    }else{
        return rows[0]["user_id"].tostring();
    }
}

测试数据
{}

注:任务候选人脚本约定说明参考候选人脚本约定

发布流程

表单、流程审计完成后点击发布流程,流程将以新版本发布,itrepair就能在流程申请中可用了。

流程设计8

流程设计9

posted @ 2022-04-12 16:15  victor_wu  阅读(242)  评论(0编辑  收藏  举报