linkeybpm-联科BPM 使用总结
-
仔细分析需求,注意拆分。如新建修改**流程,要拆分成新建和修改,以应对后续不同的需求;
-
流程注意考虑发起条件;
-
流程表单页面布局尽量整洁,必输与非必输要有标识;必输要有提示信息;客户没有要求时,必填统一为蓝色字体,和主项目统一;
-
时间控件、下拉框不可编辑,是否有限制;
-
流程节点命名规范尽量准确,如“谁谁谁申请/移交/提交/审批/发布/启动/测试/执行什么什么事;
-
表单内容尽量充实,显示相关内容时,尽量可以列出相关信息,如表单只有工单编号,应再列出名称、状态、负责人、阶段、时间节点等相关信息,重要的信息可以再赋成超链接,提升用户使用体验;
-
不同信息适当添加栏目以区分;如:基本信息、附件、处置等重要信息可以标红;
选择后继节点,注意排布顺序,一般退回、终止、作废。审批不通过放在后面;(旧版bpm修改表bpm_modsequenceflowlist的SortNum,值越大,显示越靠前;ApprovalFormImpl的196行替换LinkedHashMap<String,String> sequenceFlowMap=Rdb.getLinkedMapDataBySql(sql); -
选择后继节点处理人信息,尽量不使用默认的“请选择某某节点的处理人” 可以根据流程需要在流程建模里修改;
-
选择处理人时,根据需求去查出可以被选择的相关人员列表,尽量不用默认选择所有人;
-
流程表单可以适当在table外加div 控制左右边距,默认左右全填充显示效果太挤;
-
每个节点表单不要只显示当前内容,应该根据具体情况继承上个节点的表单信息;
-
一个流程建一个应用,相同类别下流程应用,放到同一个分类下;
-
流程提交给子流程时或子流程结束返回主流程时,提示信息表达不准备,可以用表单的保存成功后的回调函数,重新写;
-
一个流程规则尽量只发一次PmsService请求,频繁发送交互,前台等候时间长效率低;
-
正确使用业务规则和流程规则;
-
子流程拷贝主流程数据规则;
-
视图显示调整优化:列名,列宽,数据格式化,排序等,可编辑的列名后加可编辑图标;
-
表单里选择人员,根据需要创建自己的人员选择器,不要默认选择全部人员;
-
流程之间有关联,可以在流程里增加关联流程的启动按钮;
-
流程里包含子流程,可以增加查看主子流程的链接;
-
视图对应表的字段类型尽量使用varchar;
-
子流程要返回主流程附件时,需要手动给数据库bpm_attachmentslist加一条数据,并拷贝一份附件;可以调FileUtil.copyFile(),不用自己重复写;
-
表单验证的相关方法在engine_openform.js 里;
-
与主系统交互的相关规则在SOA服务里查找;
-
流程活动参与者规则;
-
根据需要可以在设置-公用设计里自定义 控件、字段验证规则、字段选择器等;
-
环节字段属性会覆盖表单字段中设置的属性;主表单强制只读时,字段属性全部无效,表单强制为只读;环节中的可编辑会强制性把主表单中对字段属性的只读模式删除,这样字段就变为可编辑状态了;环节中的继承表单权限则以表单中的只读模式设置为主;
-
动态修改表单中的字段配置值就可以实现调入不同的视图;
BeanCtx.getMainFormFieldConfig().get("字段名").put("字段属性名","新的属性值");
BeanCtx.getMainFormFieldConfig().get("view").put("view","V_S002_G001");
- 表单跳过验证(engine_openform.js得改)
$("input[name=WF_NextNodeSelect]").click(function(){
var nextNodeId = $(this).val();
if(nextNodeId === 'XXX'){
// 整个表单不验证
$("#WF_NextNodeSelect_"+nextNodeId).attr("endbusinessid",2);
}
});
- 调整表单左右间隙
① bpm_systemconfig表的EngineFormTopBar的configValue值加<div style="margin: 0px auto; width: 90%; height: 100%; position: relative; -ms-overflow-x: hidden; -ms-overflow-y: auto;"></div>
sql: UPDATE bpm_systemconfig SET ConfigValue = '<table width=90% style=\'margin: 0px auto;\' border=0 cellpadding=2 cellspacing=6 class=\"ApprovalToptable\" id=\"TopFormTable\">\r\n<tr><td colSpan=2 align=\"center\" style=\"padding-top:5px;font-size:20px;font-family:\'微软雅黑\',\'宋体\';color:#000\"><b>{WF_ProcessName}</b></td></tr>\r\n<tr style=\"line-height:20px\">\r\n<td>\r\n当前状态:{WF_CurrentNodeName}<br>\r\n当前处理人:{WF_Author_CN}<br>\r\n审批日记:<a href=\'\' onclick=\"ShowRemark(\'{WF_Processid}\',\'{WF_OrUnid}\');return false;\">查看审批日记</a>\r\n</td>\r\n<td align=right >\r\n申请时间:{WF_DocCreated}<br>\r\n申请人:{WF_AddName_CN}<br>\r\n流程图:<a href=\'\' onclick=\"ShowWorkflow(\'{WF_Processid}\',\'{WF_OrUnid}\');return false;\">查看流程图</a>\r\n</td>\r\n</tr>\r\n</table>' WHERE WF_OrUnid = '9FCC121207C1804B520A71B00DCF8DC74583';$go
② 表单加上面div
③ ApprovalFormImpl的83行加
④ R_S003_B014的29行加
- 审批记录是bpm_insremarklist
- 流转记录是bpm_insuserlist和bpm_insnodelist
- 附件必填属性设置:
- UPDATE bpm_formcontrollist SET AttriConfig = ‘name,id,xremark,required,valimsg,readtype’ WHERE WF_OrUnid = ‘ac8eecb2083da044ea083000c3784b57’;$go
35.使用Rdb.close(conn);关闭流减少代码量
38. 视图自动计算两列的乘积:在行点击事件时调用。
function setEditing(rowIndex){
var editors = $('#dg').datagrid('getEditors', rowIndex);
var priceEditor = editors[4];
var countEditor = editors[3];
var amountEditor = editors[5];
priceEditor.target.bind('change', function(){
calculate();
});
countEditor.target.bind('change', function(){
calculate();
});
function calculate(){
var cost = priceEditor.target.val() * countEditor.target.val();
$(amountEditor.target).numberbox('setValue',cost);
}
}
上一篇: Android 多模块构建
下一篇: Nginx反向代理解决前后端联调跨域问题