企业信息化目睹之怪现状 - 低代码实现串行流程
模型定义
点配置模型,填写模型标识(表名)、描述;点添加数据增加模型字段,默认自带的3个字段不能修改,
字段ID(字段名)、描述、是否必填(表单提交时验证);点击保存数据,该流程的关联的模型创建成功。
可增加多个模型,完成后点下一步进入表单设计。
表单设计
点配置表单,填写表单标识:itApply
(表单名)、描述;选择表单上需要显示的按钮(申请有:保存、提交;审批有:同意、拒绝、前加签、转派、协办等),
点保存并设计表单,会创建这个表单并跳转到表单设计器,加入控件并绑定模型字段到控件,保存后能在流程中使用
布局,控件绑定字段(必填项必须有对应控件,字段不能重复绑定);高级控件设置数据源,见控件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报修主表/问题
点击保存,(以上是创建申请单,照此步骤原样再创建一个itApprove
的表单,选择同意、拒绝按钮供审批使用)点下一步进入流程设计
流程设计
点编辑流程图跳转到流程设计器页面,开始画流程图:
1、必须有开始、结束节点; 2、开始节点一般会连接一个自动提交的任务节点; 3、绑定任务节点上的表单(上一步创建的); 4、编写候选人脚本,返回候选人(之后的脚本都类似,可以封装公共脚本或者拷贝现有的); 5、可以构造测试数据,点BUG按钮测试返回的字符串(脚本目的是返回审批人ID),确认无误后保存脚本;
设计完成后点击保存流程图。
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"}}
注:任务候选人脚本约定说明参考候选人脚本约定
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
就能在流程申请中可用了。