BPM流程开发入门视频_05 · 联通工业互联网联盟

步骤预览

image.png

使用开发者账号登录平台

1.自定义请假窗体

1)另存(复制)演示流程下的请假流程将其命名:请假流程_自定义

BPM流程5——使用窗体设计,编写代码控制权限 - 图2

2)删除请假流程_自定义文件夹下的请假表单

BPM流程5——使用窗体设计,编写代码控制权限 - 图3

3)新增数据服务【更新自定义表单、加载自定义表单】

BPM流程5——使用窗体设计,编写代码控制权限 - 图4BPM流程5——使用窗体设计,编写代码控制权限 - 图5BPM流程5——使用窗体设计,编写代码控制权限 - 图6

4)修改请假窗体名称为【请假窗体_自定义】

BPM流程5——使用窗体设计,编写代码控制权限 - 图7

5)窗体设计

将里面的控件全部删除,重新设计窗体
(弹出框类型设置为PopupOrg,代码类为PopupCode,并设置代码类)

BPM流程5——使用窗体设计,编写代码控制权限 - 图8
窗体设计如图

6)窗体属性设置

BPM流程5——使用窗体设计,编写代码控制权限 - 图9BPM流程5——使用窗体设计,编写代码控制权限 - 图10BPM流程5——使用窗体设计,编写代码控制权限 - 图11

BPM流程5——使用窗体设计,编写代码控制权限 - 图12BPM流程5——使用窗体设计,编写代码控制权限 - 图13
BPM流程5——使用窗体设计,编写代码控制权限 - 图14
image.png
BPM流程5——使用窗体设计,编写代码控制权限 - 图16

3)为流程引擎编写双击保存事件

选中流程引擎,双击保存表单时事件,编写代码将表单中的数据通过参数保存到流程表中,并做表单数据校验,通过同步数据服务,双击插入即可插入服务编码

BPM流程5——使用窗体设计,编写代码控制权限 - 图17BPM流程5——使用窗体设计,编写代码控制权限 - 图18
保存表单时事件代码如下:
function bpmEngine1_OnSaveForm(sender, eventArgs) {
//流程引擎表单保存时事件:
//定义参数获取到表单中录入的数据
//再将表单中录入的数据保存到流程表 BPM_D_pack5_Main 中
var HolidayType = comboBoxTree2HolidayType.GetValue();
var Reason = textBox3Reason.GetText();
var StartDate = dateTimePicker2StartDate.GetValue();
var EndDate = dateTimePicker1EndDate.GetValue();
var Holidays = textBox2Holidays.GetText();
var Remarks = textBox4Remarks.GetText();
//做数据校验,如果录入为空则弹窗提示不能为空
if(!HolidayType) {
alert(“请假类别不能为空”);
return;
}
if(!Reason) {
alert(“请假原因不能为空”);
return;
}
var dataService = {
ID: “0B95E039A5D74BA498D0FA442DCB01F3”, //更新自定义请假表单.ds
Args: {
BizID: bpmEngine1.Context.BizID,
HolidayType: HolidayType,
Reason: Reason,
StartDate: StartDate,
EndDate: EndDate,
Holidays: Holidays,
Remarks: Remarks
}
};
Service.Core.executeDataService(dataService, function(ret) {
eventArgs.callback();
});
}

4)编写初始化脚本

编辑初始化后脚本,将流程表中的数据加载到表单中,并设置控件编辑权限
BPM流程5——使用窗体设计,编写代码控制权限 - 图19
BPM流程5——使用窗体设计,编写代码控制权限 - 图20
初始化后脚本:
//窗体初始化后通过加载自定义请假表单设置单元格值,加载并翻译数据显示在表单上
//通过设置窗体控件是否启用来控制控件的编辑权限
var context = bpmEngine1.Context;
var enabled = !context.Readonly && Page.Request.IsEdit == “1”;
var dataService = {
ID: “E5B0C046390047ABB3E7E0DB71D5B606”, //加载自定义请假表单.ds
Args: {
BizID: context.BizID
}
};
Service.Core.executeDataService(dataService, function(ret) {
textBox1A0101.SetText(ret.A0101);
comboBoxTree3B0001.LoadValue(ret.B0001);
comboBoxTree1B0002.LoadValue(ret.B0002);
comboBoxTree4B0003.LoadValue(ret.B0003);
comboBoxTree2HolidayType.LoadValue(ret.HolidayType);
comboBoxTree2HolidayType.SetEnabled(enabled);
dateTimePicker2StartDate.SetValue(ret.StartDate);
dateTimePicker2StartDate.SetEnabled(enabled);
dateTimePicker1EndDate.SetValue(ret.EndDate);
dateTimePicker1EndDate.SetEnabled(enabled);
textBox2Holidays.SetText(ret.Holidays);
textBox3Reason.SetText(ret.Reason);
textBox3Reason.SetEnabled(enabled);
textBox4Remarks.SetText(ret.Remarks);
textBox4Remarks.SetEnabled(enabled);
});

2.表单加载及更新脚本(数据服务)

1)更新自定义表单数据服务

  • 新增参数

更新自定义表单,定义每个指标的参数,把保存后事件获取到表单数据,通过参数以及数据服务更新到流程表中
BPM流程5——使用窗体设计,编写代码控制权限 - 图21

  • 编写脚本

代码如下:
—通过窗体代码的参数值更新流程表 BPM_D_pack5_Main 的数据
UPDATE BPM_D_pack5_Main
SET
HolidayType=@HolidayType,
Reason=@Reason,
StartDate=@StartDate,
EndDate=@EndDate,
Holidays=@Holidays,
Remarks=@Remarks
WHERE BizID=@BizID
BPM流程5——使用窗体设计,编写代码控制权限 - 图22

2)加载自定义表单数据服务

  • 新增参数

加载自定义表单相当于数据源SQL,把流程表的数据加载到表单中。
BPM流程5——使用窗体设计,编写代码控制权限 - 图23

  • 编写脚本

代码如下:
—相当于表单设计器里编写的数据源SQL
SELECT
A0101,
B0001,
B0002,
B0003=(SELECT JobName FROM G01 WHERE JobID=BPM_D_pack5_Main.B0003),
HolidayType,
Reason,
StartDate,
EndDate,
Holidays,
Remarks
FROM BPM_D_pack5_Main
WHERE BizID=@BizID
BPM流程5——使用窗体设计,编写代码控制权限 - 图24

3.新增流程表单

BMP流程——流程管理——流程表单——新增:新增自定义表单
BPM流程5——使用窗体设计,编写代码控制权限 - 图25
BPM流程5——使用窗体设计,编写代码控制权限 - 图26BPM流程5——使用窗体设计,编写代码控制权限 - 图27

4.另存请假流程V6,并进行修改

  • 另存请假流程V6

BMP流程——流程管理——流程设计,选中流程设计
BPM流程5——使用窗体设计,编写代码控制权限 - 图28

  • 修改查看表单

BPM流程5——使用窗体设计,编写代码控制权限 - 图29
BPM流程5——使用窗体设计,编写代码控制权限 - 图30

  • 修改流程默认表单以及申请人填写表单

BPM流程5——使用窗体设计,编写代码控制权限 - 图31
BPM流程5——使用窗体设计,编写代码控制权限 - 图32
BPM流程5——使用窗体设计,编写代码控制权限 - 图33

5.保存发布后,演示

以admin的身份登录发起流程
BPM流程5——使用窗体设计,编写代码控制权限 - 图34
image.png
可以点击查看流程状态,看到它的申请时间大于三天,审批人则是刘二
BPM流程5——使用窗体设计,编写代码控制权限 - 图36
以刘二的身份登录审批
BPM流程5——使用窗体设计,编写代码控制权限 - 图37
打开SQL Server查看演示表Demo_AskHoliday中是否存在数据
查询语句:
select * from Demo_AskHoliday
BPM流程5——使用窗体设计,编写代码控制权限 - 图38