BPM流程开发入门视频_02 · 联通工业互联网联盟
概括:在(BPM流程——请假流程)的基础上,填写上开始时间,结束时间 ,请假天数可以自动计算。

步骤预览

BPM流程2——自动计算请假天数 - 图1

登录开发者账号

输入账号密码
BPM流程2——自动计算请假天数 - 图2

添加演示库及指标集

添加演示库

BPM流程2——自动计算请假天数 - 图3
在二次开发模块下添加演示库,用于存放流程演示结果
BPM流程2——自动计算请假天数 - 图4

添加指标集

添加指标集Demo_AdkHoliday来存放流程演示结果数据
BPM流程2——自动计算请假天数 - 图5

导入指标

这里我们直接从流程的数据模型中导入指标
BPM流程2——自动计算请假天数 - 图6
BPM流程2——自动计算请假天数 - 图7

添加指标

还需要再添加一个关键指标PersonID方便后面写初始化脚本或回填脚本的时候用到,设置为隐藏指标
BPM流程2——自动计算请假天数 - 图8
DispOrder排序指标也设置为隐藏
BPM流程2——自动计算请假天数 - 图9

构建信息表

在系统中构建物理表
BPM流程2——自动计算请假天数 - 图10
BPM流程2——自动计算请假天数 - 图11

BPM流程——数据模型——导入指标

增加了自动取数、数据回填功能。数据模型中也需要关键指标PersonID,直接从刚刚添加的演示库中导入构库即可
BPM流程2——自动计算请假天数 - 图12

BPM流程——数据模型——构建指标集

BPM流程2——自动计算请假天数 - 图13
BPM流程2——自动计算请假天数 - 图14

新增流程常量(自动取数脚本)

BPM流程2——自动计算请假天数 - 图15
按具体的流程模板新增流程常量(即初始化流程脚本)再设置常量内容,主要为了实现流程发起时,流程引擎调用该脚本更新流程表的字段,页面加载表单时就能读取到流程表单的数据
BPM流程2——自动计算请假天数 - 图16
BPM流程2——自动计算请假天数 - 图17
BPM流程2——自动计算请假天数 - 图18
BPM流程2——自动计算请假天数 - 图19
—根据流程编码BizID、人员编码PersonID,更新流程表中的基本信息字段
—流程发起时,流程表单即可读取流程表BPM_D_pack5_Main中的数据
—实现自动获取当前发起人的基本信息
UPDATE BPM_D_pack5_Main—更新流程表BPM_D_pack5_Main
SET
B0001=A.B0001,—所属公司
B0002=A.B0002,—部门
B0003=A.B0003,—岗位
A0101=A.A0101,—姓名
PersonID=@Session_PersonID—人员编码
FROM BPM_D_pack5_Main M,A01 A
WHERE M.BizID=@BizID AND A.PersonID=@Session_PersonID

编写计算请假天数脚本

BPM流程2——自动计算请假天数 - 图20

增加了自动取数、自动计算脚本,这里需要调整一下数据权限,基本信息以及请假天数就不需要为可写了
BPM流程2——自动计算请假天数 - 图21

在数据保存后事件中编写脚本,点击保存后根据录入的请假开始结束时间自动计算请假天数,并更新到表单
BPM流程2——自动计算请假天数 - 图22
表单指标直接用鼠标双击就可以加载到编辑框
鼠标双击调用系统方法【更新表单字段】
BPM流程2——自动计算请假天数 - 图23
//计算请假天数,结束时间减去开始时间,再转换成天数
var timeDiff = Form.EndDate-Form.StartDate;
var diffDays = timeDiff.TotalDays;
//调用系统函数更新表单字段
UpdateFormField(“Holidays”,diffDays.ToString());
BPM流程2——自动计算请假天数 - 图24

编写数据回填脚本

BPM流程2——自动计算请假天数 - 图25
BPM流程2——自动计算请假天数 - 图26
设置流程活动完成后事件将表单中的流程数据回填到演示库的Demo_AdkHoliday表中

先定义SQL脚本,再通过系统方法【DB.Execute】执行脚本回填数据脚本中用到的参数需要在中括号中定义出来
BPM流程2——自动计算请假天数 - 图27
//编写SQL语句,在新建的演示库数据表 Demo_AskHoliday 中插入流程表 BPM_D_pack1_Main 里的数据
//字段、字段类型必须要一一对应,否则会插入数据失败,导致流程表单中的数据回填出错。
var sql=@”
INSERT INTO Demo_AdkHoliday
(BizID, PersonID, B0001, B0002, B0003, A0101, HolidayType,
Reason, StartDate, Holidays, EndDate, Remarks, Attachment, DispOrder)
SELECT
M.BizID, M.PersonID, M.B0001, M.B0002, M.B0003, M.A0101, M.HolidayType,
M.Reason, M.StartDate, M.Holidays, M.EndDate, M.Remarks, M.Attachment,
ISNULL((SELECT MAX(DispOrder) FROM Demo_AdkHoliday),0)+ROW_NUMBER()OVER(ORDER BY M.DispOrder)
FROM A01 A,BPM_D_pack5_Main M
WHERE M.BizID=@BizID AND A.PersonID=M.PersonID
“;
//执行上边定义的SQL语句,回填流程表中的数据,SQL中的参数值在花括号中定义。
DB.Execute(sql, new {BizID=Form.BizID});

保存发布

BPM流程2——自动计算请假天数 - 图28

演示

切换管理员账号登录,测试新的功能
BPM流程2——自动计算请假天数 - 图29
BPM流程2——自动计算请假天数 - 图30
BPM流程2——自动计算请假天数 - 图31
可以看到流程发起时,基本信息都已经自动获取到表单中
BPM流程2——自动计算请假天数 - 图32
录入请假开始、结束时间以及其他数据后,单击保存按钮请假天数已经自动计算并更新到表单中
BPM流程2——自动计算请假天数 - 图33
BPM流程2——自动计算请假天数 - 图34

都是发起人处理,退出系统重新登录即可收到系统推送的业务办理消息,也可在消息提示及代办业务这里点击办理
BPM流程2——自动计算请假天数 - 图35
BPM流程2——自动计算请假天数 - 图36
BPM流程2——自动计算请假天数 - 图37
BPM流程2——自动计算请假天数 - 图38
执行成功后,我们在演示库表Demo_AdkHoliday中查询看有没有数据
可以看到流程表的数据已经回填到演示库表中
BPM流程2——自动计算请假天数 - 图39