文章目录
- 1 工作流二次开发
- 1.1 工作流内置属性列表
- 1.2 嵌入审批页的业务页面开发
- 1.3 与平台同工程下JS API使用
- 1.4 基于WS或Action工作流二次开发
- 1.5 流程配置ORACLE存储过程及WEBSERVICE
- 1.6 平台Touch工作流 js API使用
- 1.7 工作流待办提醒设置与开发
1 工作流二次开发
1.1 工作流内置属性列表
1.1.1 实体内置属性
序号 | 内置属性编码 | 内置属性描述 | 赋值说明 |
1 | e_process_title | 标题(流程摘要) | 业务系统执行赋值 |
2 | e_instance_code | 实例编码 | 业务系统执行赋值 |
3 | e_submitter | 提交人 | 流程引擎执行赋值 |
4 | e_submit_date | 提交时间 | 流程引擎执行赋值 |
5 | e_current_approver | 当前登录用户ID | 流程引擎执行赋值 |
6 | e_current_sysdate | 系统当前时间(格式为:yyyy-MM-dd HH:mm:ss) | 流程引擎执行赋值 |
7 | e_current_node | 当前节点编码(当前正执行处理节点) | 流程引擎执行赋值 |
8 | e_business_code | 业务编码 | 业务系统执行赋值 |
9 | e_business_name | 业务名称 | 业务系统执行赋值 |
10 | e_business_id | 业务ID | 业务系统执行赋值 |
11 | e_dept | 部门ID | 业务系统执行赋值 |
12 | e_org | 组织ID | 业务系统执行赋值 |
13 | e_current_biz_status | 当前业务状态ID | 流程引擎执行赋值 |
14 | e_current_biz_status_cat | 当前业务状态分类编码::A-起草,R-撤回、C-运行中、D-驳回、E-结束 | 流程引擎执行赋值 |
15 | e_current_biz_status_desc | 当前业务状态分类描述 | 流程引擎执行赋值 |
16 | e_submitter_name | 提交人名称 | 流程引擎执行赋值 |
17 | e_process_name | 流程名称 | 流程引擎执行赋值 |
18 | e_submitter_comment | 提交人待办审批意见 | 业务系统执行赋值 |
1.2 嵌入审批页的业务页面开发
工作流审批页面在嵌入业务页面的时候会在业务页面的URL后面添加如下参数:
instanceCode流程实例编码
businessId业务主键
userName登录用户名
contextPath 工程根目录
actCode 当前节点编码
1.2.1 业务界面内置函数
1.2.1.1 函数配置说明
配置函数定义在业务信息所嵌入的页面中,此所述函数即为页面中所定义的javascript函数。
1.2.1.2 前置函数
函数名:beforeHandler
函数参数:依次序如下说明
buttonCode – 待办页面中所点击的按钮编码。
instanceCode –当前待办对应的实例编码。
businessId –当前待办对应的业务数据ID。
返回值:返回一个JSON格式的字符串,JSON字符串中包含flag和msg键值对;其中flag为0时说明前置函数执行成功,为1时说明前置函数执行失败同时msg中信息中记录失败原因。
如:{‘flag’:’0’,’msg’:’’} 或{‘flag’:’1’,’msg’:’执行失败…’}
示例代码:
functionbeforeHandler(buttonCode,instanceCode,businessId){var json = null ;alert(‘我是前置处理函数’) ;// TODO…// 执行成功json = “{‘flag’:’0′,’msg’:”}” ;// 执行失败//json = “{‘flag’:’1′,’msg’:’前置处理函数执行失败’}” ;return json ;} |
1.2.1.3 后置函数
函数名:afterHandler
函数参数:依次序如下说明
buttonCode – 待办页面中所点击的按钮编码。
instanceCode –当前待办对应的实例编码。
businessId –当前待办对应的业务数据ID。
返回值:[可选]
示例代码:
function afterHandler(buttonCode,instanceCode,businessId){// TODO…alert(‘我是后置处理函数’) ;} |
1.2.1.4 函数执行说明
即前置与后置函数执行的时间点及执行异常处理说明。
1.2.1.5 前置函数
前置函数执行时间在单击按钮时则开始执行,如执行成功则继续执行工作流的事务处理。
如下情形均视前置函数不存在:
1、 待办处理未嵌入业务页面。
2、 待办处理嵌入业务界面但未定义前置函数。
3、 待办处理嵌入业务界面中的前置函数执行异常。
4、 待办处理嵌入业务界面中前置函数返回值格式不符合所规定的格式。
1.2.1.6 后置函数
后置函数执行时间在工作流事务处理完成后执行回调处理。如下情形均视后置函数不存在:
1、 待办处理未嵌入业务页面。
2、 待办处理嵌入业务界面但未定义前置函数。
3、 待办处理嵌入业务界面中的前置函数执行异常。
1.3 与平台同工程下JS API使用
在使用Web Builder或基于Exist4.1开发业务界面时如果需要启动流程,监控流程以及撤回流程可以通过引入工程下/workflow/util/workflowUtil4.0.js文件调用其提供的方法快速实现以上要求。
1.3.1 基于流程(先创建实例—录业务数据—提交流程)
1.3.1.1 基于流程ID创建实例
方法:createInstanceByProcessId(processId,callback)
参数:processId流程ID
callback回调函数,成功传入{flag:0,instanceCode:’xxx’} instanceCode为流程实例编码,失败传入{flag:1,msg:’xxx’} msg为错误提示。
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’创建流程实例失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑,比如讲返回的实例编码回写到业务表
Ext.Msg.alert(‘提示’,’流程实例创建成功,流程实例编码:’+resp.instanceCode);
}
1.3.1.2 基于流程编码创建实例
方法:createInstanceByProcessCode(processCode,callback)
参数:processCode流程编码
callback回调函数,成功传入{flag:0,instanceCode:’xxx’} instanceCode为流程实例编码,失败传入{flag:1,msg:’xxx’} msg为错误提示。
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’创建流程实例失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑,比如讲返回的实例编码回写到业务表
Ext.Msg.alert(‘提示’,’流程实例创建成功,流程实例编码:’+resp.instanceCode);
}
1.3.1.3 基于实体编码创建实例
根据传入实体属性值检索出符合条件的流程,如果只有一个直接创建实例。如果有多个流程,会弹出选择流程的窗口,选择一个流程后才能根据选中的流程创建实例。
方法:createInstanceByEntityCode(entityCode,params,callback)
参数:entityCode业务实体编码
params需要传入的实体属性值的Json串。Json格式为{attribute1:value1,attribute2:value2}
callback回调函数,成功传入{flag:0,instanceCode:’xxx’} instanceCode为流程实例编码,失败传入{flag:1,msg:’xxx’} msg为错误提示。
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’创建流程实例失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑,比如讲返回的实例编码回写到业务表
Ext.Msg.alert(‘提示’,’流程实例创建成功,流程实例编码:’+resp.instanceCode);
}
1.3.1.4 根据实例编码提交流程
提交流程的时候,如果第一个审批节点需要手动选人或根据条件计算得出多个审批人时,会弹出选择审批人的窗口,选择了审批人之后提交流程。
方法:submitInstance(instanceCode,params,callback)
参数:instanceCode流程实例编码
params需要传入的实体属性值的Json串。Json格式为{attribute1:value1,attribute2:value2}
callback回调函数,成功传入{flag:0,msg:’xxx’},失败传入{flag:1,msg:’xxx’} msg为错误提示。
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’提交流程失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑
Ext.Msg.alert(‘提示’,’提交流程成功!’);
}
1.3.2 基于业务(先录入业务数据—创建实例并提交)
1.3.2.1 根据流程ID创建并提交
提交流程的时候,如果第一个审批节点需要手动选人或根据条件计算得出多个审批人时,会弹出选择审批人的窗口,选择了审批人之后提交流程。
方法:function startAndSubmitProcess(processId,params,callback)
参数: processId流程ID
params需要传入的实体属性值的Json串。Json格式为{attribute1:value1,attribute2:value2}
callback回调函数创建并提交成功返回{flag:0,instanceCode:’xxx’}失败返回{flag:1,msg:’xxx’}
回调示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’创建并提交流程失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑
Ext.Msg.alert(‘提示’,’创建并提交流程成功!实例编码:’+resp.instanceCode);
}
1.3.2.2 根据实体编码创建并提交
根据传入实体属性值检索出符合条件的流程,如果只有一个直接创建流程实例并提交流程。如果有多个流程,会弹出选择流程的窗口,选择一个流程后根据选中的流程创建实例并提交。
提交流程的时候,如果第一个审批节点需要手动选人或根据条件计算得出多个审批人时,会弹出选择审批人的窗口,选择了审批人之后提交流程。
方法:startAndSubmitByEntityCode(entityCode,params,callback)
参数:entityCode实体编码
params需要传入的实体属性值的Json串。Json格式为{attribute1:value1,attribute2:value2}
callback回调函数创建并提交成功返回{flag:0,instanceCode:’xxx’}失败返回{flag:1,msg:’xxx’}
回调示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’创建并提交流程失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑
Ext.Msg.alert(‘提示’,’创建并提交流程成功!实例编码:’+resp.instanceCode);
}
1.3.3 撤回流程
方法:revokeByInstanceCode(instanceCode,callback)
参数:instanceCode流程实例编码
callback回调函数成功传入{flag:0,msg:’xxx’},失败传入{flag:1,msg:’xxx’} msg为错误提示。
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’撤回流程失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑
Ext.Msg.alert(‘提示’,’撤回流程成功!’);
}
1.3.4 重提流程
1.3.4.1 重启流程实例
方法:restartInstance(instanceCode,processId,callback)
参数:instanceCode流程实例编码
processId流程ID可为空,如果为空,按照原流程重启
callback回调函数成功{flag:0,msg:’xxx’},失败{flag:1,msg:’xxx’} msg为错误提示。
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’重启流程失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑
Ext.Msg.alert(‘提示’,’重启流程成功!’);
}
1.3.4.2 重启并提交流程实例
提交流程的时候,如果第一个审批节点需要手动选人或根据条件计算得出多个审批人时,会弹出选择审批人的窗口,选择了审批人之后提交流程。
方法:restartInstanceSubmit(instanceCode,processId,params,callback)
参数:instanceCode流程实例编码
processId流程ID可为空,如果为空,按照原流程重启
params需要传入的实体属性值的Json串。
Json格式为{attribute1:value1,attribute2:value2}
callback回调函数成功{flag:0,msg:’xxx’},失败{flag:1,msg:’xxx’} msg为错误提示。
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’重启并提交流程失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑
Ext.Msg.alert(‘提示’,’重启比提交流程成功!’);
}
1.3.5 显示流程监控页面
方法:showMonitorPage(insCode)
参数:insCode流程实例编码
1.3.6 根据待办Id获取待办所拥有的按钮
方法:getButtonsByTaskId
参数:taskId待办Id
返回值:
获取待办按钮成功flag返回0,待办中只显示disable为N的按钮。
{flag:0,msg:’’,data:[{id:’’, code:’’,name:’’,category:’’,disable:’N’},
{id:’’, code:’’,name:’’,category:’’,disable:’N’}]}
当按钮编码(code)
为’btnConsult’时执行发起征询操作
为’btnDelegate’时执行发起委派操作
为’btnBack’时执行回退操作
为’btnCloseConsult’时执行征询反馈操作
为’btnRevokeConsult’时执行撤销征询操作
为’btnCancel’时执行取消流程操作
为’btnCopyTo’时执行关闭抄送操作
为’btnReject’时执行驳回流程操作
如果按钮编码不再上述列表内,则执行完成待办操作
获取待办按钮失败flag返回1
{flag:1,msg:’错误提示’}
1.3.7 完成待办
方法:completeTask
参数:
taskId:待办Id
lineCode:按钮编码(节点牵出线的线编码)
comment:审批意见
callback:回调函数完成待办成功回调传入{flag:0,taskId:’’}完成待办失败回调传入{flag:1,msg:’错误提示’}
1.3.8 退回
方法:doBack
参数:
taskId:待办Id
comment:退回原因说明
callback:回调函数退回成功回调传入{flag:0,msg:’’}退回失败回调传入{flag:1,msg:’错误提示’}
1.3.9 驳回
方法:doReject
参数:
taskId:待办Id
comment:驳回原因说明
callback:回调函数驳回成功回调传入{flag:0,msg:’’}驳回失败回调传入{flag:1,msg:’错误提示’}
1.3.10 取消流程
方法:doCancel
参数:
taskId:待办Id
callback:回调函数取消流程成功回调传入{flag:0,msg:’’}取消流程失败回调传入{flag:1,msg:’错误提示’}
1.3.11 发起征询
方法:doConsult
参数:
taskId:待办Id
comment:征询说明
callback:回调函数征询成功回调传入{flag:0,msg:’’}征询失败回调传入{flag:1,msg:’错误提示’}
1.3.12 征询反馈
方法:closeConsult
参数:
taskId:待办Id
comment:征询反馈内容
callback:回调函数征询反馈成功回调传入{flag:0,msg:’’}征询反馈失败回调传入{flag:1,msg:’错误提示’}
1.3.13 撤销征询
方法:revokeConsult
参数:
taskId:待办Id
comment:撤销征询原因说明
callback:回调函数撤销征询成功回调传入{flag:0,msg:’’}撤销征询失败回调传入{flag:1,msg:’错误提示’}
1.3.14 发起委派
方法:doDelegate
参数:
taskId:待办Id
comment:委派说明
callback:回调函数委派成功回调传入{flag:0,msg:’’}委派失败回调传入{flag:1,msg:’错误提示’}
1.3.15 关闭抄送
方法:closeCopyTo
参数:
taskId:待办Id
callback:回调函数关闭抄送成功回调传入{flag:0,msg:’’}关闭抄送失败回调传入{flag:1,msg:’错误提示’}
1.3.16 根据待办Id创建待内的按钮
方法:createButtonsByTaskId
参数:
taskId:待办Id
textArea :录入审批意见,征询内容,委派说明,驳回原因,退回原因等内容的控件对象
insCode:流程实例编码
bizId:业务主键Id
返回值:Extjs4.1的按钮数组,按钮已经内置了点击事件并内嵌要执行的相应代码。
1.4 基于WS或Action工作流二次开发
工作流对外提供了一套完善的WEB服务和Action供工作流二次开发。其中包括流程的启动,提交,撤回,重启等。还包括开发客户化审批页面所需的所有接口,通过调用WEB服务或Action可以很容易实现驳回,退回,征询,委派等。如果二次开发与平台2.0同工程建议使用Action(非Extjs4.1开发),与平台2.0不同工程使用WEB服务。
工作流WEB服务 URL:http://host:port/contextpath/services/workflowWS?wsdl
工作流Action URL: http://host:port/contextpath/workflowUtilAction.do
1.4.1 启动流程
1.4.1.1 根据流程编码启动流程
1.4.1.1.1 基于WEB Service实现
方法:createInstanceByProcessCode
参数:processCode 流程编码
loginName登录用户名(要与平台2.0的用户名相一致)
返回值:返回XML串
创建流程实例成功,返回值中有流程实例编码
<result><flag>0</flag><instanceCode>流程实例编码</instanceCode></result>
创建流程失败返回值中msg为错误提示
<result><flag>1</flag><msg>错误提示</msg></result>
1.4.1.1.2 基于Action实现
URL:/workflowUtilAction.do?method=createInstanceByProcessCode
参数:processCode 流程编码
返回值:Json串
创建流程实例成功返回{flag:0,instanceCode:流程实例编码}
创建流程实例失败返回{flag:1,msg:错误提示信息}
1.4.1.2 根据业务实体编码创建流程实例
首先根据业务实体编码和传入的实体属性值,计算符合条件的流程,如果由只有一个符合条件的流程,则直接返回流程ID。如果有多个流程满足条件则返回待选流程列表,开发选择流程的界面。然后通过方法createInstanceByProcessId根据流程的ID创建流程实例。
1.4.1.2.1 基于WEB Service实现
根据业务实体编码获取流程
方法:getProcessIdByEntityCode
参数:entityCode:业务实体编码
entityAttJson:业务实体属性值对Json串。格式{attr1Code:attr1Val,attr2Code:attr2Val}
loginName:登录用户名(要与平台2.0的用户名相一致)
返回值:
当只有一个符合条件流程时返回flag为0,并将processId返回
<result><flag>0</flag><processId></processId></result>
当计算符合条件的流程出错时flag返回1,msg返回错误提示
<result><flag>1</flag><msg></msg></result>
当计算符合条件流程返回多个是,flag返回2,并在再data中返回流程列表
<result>
<flag>2</flag>
<data>
<row>
<processId></processId>
<processCode></processCode>
<processName></processName>
</row>
<row>
<processId></processId>
<processCode></processCode>
<processName></processName>
</row>
</data>
</result>
根据方法getProcessIdByEntityCode获取流程Id,如果多个流程返回开发一个界面供用户选择所要要提交的流程。然后根据流程Id创建流程实例。
方法:createInstanceByProcessId
参数:processId流程Id
loginName登录用户名(要与平台2.0的用户名相一致)
返回值:返回XML串
创建流程实例成功,返回值中有流程实例编码
<result><flag>0</flag><instanceCode>流程实例编码</instanceCode></result>
创建流程失败返回值中msg为错误提示
<result><flag>1</flag><msg>错误提示</msg></result>
1.4.1.2.2 基于Action实现
根据业务实体编码获取流程
URL:/workflowUtilAction.do?method=getProcessIdByEntityCode
参数:entityCode:业务实体编码
entityAttJson:业务实体属性值对Json串。格式{attr1Code:attr1Val,attr2Code:attr2Val}
返回值:
当只有一个符合条件流程时返回flag为0,并将processId返回
{flag:0,processId:’’}
当计算符合条件的流程出错时flag返回1,msg返回错误提示
{flag:1,msg:’’}
当计算符合条件流程返回多个是,flag返回2,并在再data中返回流程列表
{flag:2,data:[{processId:’’,processCode :’’,processName:’’ },{processId:’’,processCode :’’,processName:’’}]}
根据方法getProcessIdByEntityCode获取流程Id,如果多个流程返回开发一个界面供用户选择所要要提交的流程。然后根据流程Id创建流程实例。
URL:/workflowUtilAction.do?method=createInstanceByProcessId
参数:processId流程Id
返回值:Json串
创建流程实例成功返回{flag:0,instanceCode:流程实例编码}
创建流程实例失败返回{flag:1,msg:错误提示信息}
1.4.2 提交流程
提交流程需要分两步完成,首先调用提交流程方法,这时参数userIds必须为空,流程引擎会根据传入的属性和流程配置计算流程提交后的第一个审批节点是否需要选择审批人,如果需要选择审批人返回值中的flag为2,并会在返回值中给出审批人列表。拿到审批人列表需要开发审批人选择界面,将返回的审批人列表显示出来供选择审批人,在选择了审批人后将选择审批人的userId拼出
1.4.2.1.1 基于Web Service实现
方法:submitProcess
参数:
instanceCode:流程实例编码
entityAttJson:业务实体属性值对Json串。格式{attr1Code:attr1Val,attr2Code:attr2Val}
userIds:审批人用户ID列表每个Id用应为逗号隔开,user1Id,user2Id,user3Id
loginName:登录用户名(要与平台2.0的用户名相一致)
返回值:
提交流程成功 flag返回0
<result>
<flag>0</flag>
<msg></msg>
<instanceCode></instanceCode>
<data></data>
</result>
提交流程失败 flag返回1
<result>
<flag>1</flag>
<msg>错误提示</msg>
<instanceCode></instanceCode>
<data></data>
</result>
流程第一个审批节点需要手工选人flag返回2。multiselect为Y可以多选,否则只能选一个审批人。actName为下一个审批节点的节点名称。
<result>
<flag>2</flag>
<msg></msg>
<instanceCode></instanceCode>
<multiselect>Y</multiselect>
<actName>节点名称</actName>
<data>
<row>
<userId></userId>
<userName></userName>
<empName></empName>
<orgName></orgName>
<actName>节点名称</actName>
</row>
<row>
<userId></userId>
<userName></userName>
<empName></empName>
<orgName></orgName>
<actName>节点名称</actName>
</row>
</data>
</result>
1.4.2.1.2 基于Action实现
URL:/workflowUtilAction.do?method=submitProcess
参数:
instanceCode:流程实例编码
entityAttJson:业务实体属性值对Json串,Json中字符值必须用用英文单引号括起不能使用双引号。格式{attr1Code:attr1Val,attr2Code:attr2Val}
userIds:审批人用户ID列表每个Id用应为逗号隔开,user1Id,user2Id,user3Id
返回值:
提交流程成功 flag返回0
{flag:0,msg:’’, instanceCode:’’}
提交流程失败 flag返回1
{flag:1,msg:’错误提示’, instanceCode:’’}
流程第一个审批节点需要手工选人flag返回2。multiselect为Y可以多选,否则只能选一个审批人。actName为下一个审批节点的节点名称。
{flag:2,msg:’错误提示’, instanceCode:’’,multiselect :’Y’,actName:’’,data:[{userId:’’,username:’’,empName:’’},{userId:’’,username:’’,empName:’’}]}
1.4.3 撤回流程
1.4.3.1.1 基于Web Service实现
方法:revokeProcess
参数:
insCode:流程实例编码
loginName:登录用户名(要与平台2.0的用户名相一致)
返回值:
撤销流程成功 flag返回0
<result>
<flag>0</flag>
<msg></msg>
</result>
撤销流程失败 flag返回1
<result>
<flag>1</flag>
<msg>错误提示</msg>
</result>
1.4.3.1.2 基于Action实现
URL:/workflowUtilAction.do?method=revokeProcess
参数:
instanceCode:流程实例编码
返回值:
撤销流程成功 flag返回0
{flag:0,msg:’’}
撤销流程失败 flag返回1
{flag:1,msg:’错误提示’}
1.4.4 根据流程实例编码重提流程
1.4.4.1.1 基于Web Service实现
方法:restartInstance
参数:
instanceCode:流程实例编码
processId:流程Id
loginName:登录用户名(要与平台2.0的用户名相一致)
返回值:
重启流程成功 flag返回0
<result>
<flag>0</flag>
<msg></msg>
</result>
重启流程失败 flag返回1
<result>
<flag>1</flag>
<msg>错误提示</msg>
</result>
1.4.4.1.2 基于Action实现
URL:/workflowUtilAction.do?method=restartInstance
参数:
instanceCode:流程实例编码
processId:流程Id
返回值:
重启流程成功 flag返回0
{flag:0,msg:’’}
重启流程失败 flag返回1
{flag:1,msg:’错误提示’}
1.4.5 获取待办按钮
1.4.5.1.1 基于Web Service实现
方法:getButtonsByTaskId
参数:
taskId:待办Id
loginName:登录用户名(要与平台2.0的用户名相一致)
返回值:
获取待办按钮成功flag返回0,待办中只显示disable为N的按钮。
<result>
<flag>0</flag>
<msg></msg>
<data>
<row>
<id></id>
<code></code>
<name></name>
<category></category>
<disable>N</disable>
<row>
</data>
</result>
当按钮编码(code)
为’btnConsult’时执行发起征询操作
为’btnDelegate’时执行发起委派操作
为’btnBack’时执行回退操作
为’btnCloseConsult’时执行征询反馈操作
为’btnRevokeConsult’时执行撤销征询操作
为’btnCancel’时执行取消流程操作
为’btnCopyTo’时执行关闭抄送操作
为’btnReject’时执行驳回流程操作
获取待办按钮失败flag返回1
<result>
<flag>1</flag>
<msg>’错误提示’</msg>
</result>
1.4.5.1.2 基于Action实现
URL:/workflowUtilAction.do?method=getButtonsByTaskId
参数:
taskId:待办Id
返回值:
获取待办按钮成功flag返回0,待办中只显示disable为N的按钮。
{flag:0,msg:’’,data:[{id:’’, code:’’,name:’’,category:’’,disable:’N’},
{id:’’, code:’’,name:’’,category:’’,disable:’N’}]}
当按钮编码(code)
为’btnConsult’时执行发起征询操作
为’btnDelegate’时执行发起委派操作
为’btnBack’时执行回退操作
为’btnCloseConsult’时执行征询反馈操作
为’btnRevokeConsult’时执行撤销征询操作
为’btnCancel’时执行取消流程操作
为’btnCopyTo’时执行关闭抄送操作
为’btnReject’时执行驳回流程操作
如果按钮编码不再上述列表内,则执行完成待办操作
获取待办按钮失败flag返回1
{flag:1,msg:’错误提示’}
1.4.6 完成待办
1.4.6.1.1 基于Web Service实现
方法:completeWorkItem
参数:
taskId:待办Id
lineCode:按钮编码
comment:审批意见
approvers:下一节点审批人用户Id列表,用英文逗号隔开
loginName:登录用户名(要与平台2.0的用户名相一致)
返回值:
完成待办成功 flag返回0
<result>
<flag>0</flag>
<msg></msg>
< taskId></ taskId>
</result>
完成待办失败 flag返回1
<result>
<flag>1</flag>
<msg>错误提示</msg>
< taskId></ taskId>
</result>
下一个审批节点需要手工选人flag返回2。multiselect为Y可以多选,否则只能选一个审批人。actName为下一个审批节点的节点名称。
<result>
<flag>2</flag>
<msg></msg>
< taskId></ taskId>
<multiselect>Y</multiselect>
<actName>节点名称</actName>
<data>
<row>
<userId></userId>
<userName></userName>
<empName></empName>
<orgName></orgName>
<actName>节点名称</actName>
</row>
<row>
<userId></userId>
<userName></userName>
<empName></empName>
<orgName></orgName>
<actName>节点名称</actName>
</row>
</data>
</result>
1.4.6.1.2 基于Action实现
URL:/workflowUtilAction.do?method=completeWorkItem
参数:
taskId:待办Id
lineCode:按钮编码
comment:审批意见
userIds:下一节点审批人用户Id列表,用英文逗号隔开
返回值:
完成待办成功 flag返回0
{flag:0,msg:’’, taskId:’’}
完成待办失败 flag返回1
{flag:1,msg:’错误提示’, taskId:’’}
下个审批节点需要手工选人flag返回2。multiselect为Y可以多选,否则只能选一个审批人。actName为下一个审批节点的节点名称。
{flag:2,msg:’错误提示’, taskId:’’,multiselect :’Y’,actName:’’,data:[{userId:’’,username:’’,empName:’’},{userId:’’,username:’’,empName:’’}]}
1.4.7 退回
退回操作首先根据方法getBackActivityList获取当前待办之前可以退回的审批节点列表然后开发一个界面供用户选择所要退到的审批节点。然后调用方法doBack执行退回到该节点的操作。
1.4.7.1.1 基于Web Service实现
获取可以退回审批节点列表
方法:getBackActivityList
参数:
taskId:待办Id
返回值:
当获取可退回审批节点成功flag返回0,data中列出可退回的节点的列表。activityId为节点Id,在执行退回操作的时候需要传入节点Id。 activityCode为节点编码activityName为节点名称
<result>
<flag>0</flag>
<msg></msg>
<data>
<row>
<activityId></activityId>
<activityCode></activityCode>
<activityName></activityName>
<row>
</data>
</result>
如果获取壳退回节点失败flag返回1,msg返回错误提示
<result>
<flag>1</flag>
<msg>’错误提示’</msg>
</result>
执行退回操作
方法:doBack
参数:
taskId:待办Id
backToActivityId:要退回到的审批节点
comment:退回意见
loginName:登录用户名(要与平台2.0的用户名相一致)
返回值:
退回成功flag返回0
<result>
<flag>0</flag>
<msg>’’</msg>
</result>
退回失败,flag返回1,msg返回错误提示
<result>
<flag>1</flag>
<msg>’错误提示’</msg>
</result>
1.4.7.1.2 基于Action实现
获取可以退回审批节点列表
URL:/workflowUtilAction.do?method=getBackActivityList
参数:
taskId:待办Id
返回值:
当获取可退回审批节点成功flag返回0,data中列出可退回的节点的列表。activityId为节点Id,在执行退回操作的时候需要传入节点Id。 activityCode为节点编码 activityName为节点名称
{flag:0,msg:’’,data[{activityId:’’,activityCode:’’,activityName:’’}]}
如果获取壳退回节点失败flag返回1,msg返回错误提示
{flag:1,msg:’错误提示’}
执行退回操作
URL:/workflowUtilAction.do?method=doBack
参数:
taskId:待办Id
backToActivityId:要退回到的审批节点
comment:退回意见
返回值:
退回成功flag返回0
{flag:0,msg:’错误提示’}
退回失败,flag返回1,msg返回错误提示
{flag:1,msg:’错误提示’}
1.4.8 驳回
驳回就是将流程退回到开始节点
1.4.8.1.1 基于Web Service实现
方法:doRejectProcess
参数:
taskId:待办Id
approverComment:驳回意见
loginName:登录用户名(要与平台2.0的用户名相一致)
返回值:
驳回成功flag返回0
<result>
<flag>0</flag>
<msg>’’</msg>
</result>
驳回失败,flag返回1,msg返回错误提示
<result>
<flag>1</flag>
<msg>’错误提示’</msg>
</result>
1.4.8.1.2 基于Action实现
URL:/workflowUtilAction.do?method=rejectProcess
参数:
taskId:待办Id
comment:驳回意见
返回值:
驳回成功flag返回0
{flag:0,msg:’’}
驳回失败,flag返回1,msg返回错误提示
{flag:1,msg:’错误提示’}
1.4.9 征询
1.4.9.1.1 基于Web Service实现
先调用getUsers获取用户列表,开发一个界面列出用户,供用户选择一个用户后并执行方法doConsult发起征询操作
获取用户列表
方法:getUsers
参数:
taskId:待办Id
conditionStr:条件值,可以为员工姓名或组织名称
start:分页的开始记录数
limit:分页的每页记录数
返回值:
如果成功flag为0。totalProperty 总记录数;orgId组织Id;orgName组织名称;userId用户Id;username用户名;empId员工Id;empName姓名。如果失败flag为1,msg返回错误提示。
<result>
<flag></flag>
<msg></msg>
<totalProperty></totalProperty>
<data>
<row>
<orgId></orgId>
<orgName></orgName>
<userId></userId>
<userName></userName>
<empId></empId>
<empName></empName>
</row>
<row>
<orgId></orgId>
<orgName></orgName>
<userId></userId>
<userName></userName>
<empId></empId>
<empName></empName>
</row>
</data>
</result>
发起征询
方法:doConsult
参数:
taskId:待办Id
loginName:登录用户名(要与平台2.0的用户名相一致)
username:要征询的用户名
comment:征询内容说明
返回值:
发起征询成功flag返回0
<result>
<flag>0</flag>
<msg>’’</msg>
</result>
发起征询失败,flag返回1,msg返回错误提示
<result>
<flag>1</flag>
<msg>’错误提示’</msg>
</result>
1.4.9.1.2 基于Action实现
先调用getUsersForConsultOrDelegate4Ext获取用户列表,开发一个界面列出用户,供用户选择一个用户后并执行方法doConsult发起征询操作
获取用户列表
URL:/workflowUtilAction.do?method=getUsersForConsultOrDelegate4Ext
参数:
taskId:待办Id
conditionStr:条件值,可以为员工姓名或组织名称
start:分页的开始记录数
limit:分页的每页记录数
返回值:
如果成功flag为0。totalProperty 总记录数;orgId组织Id;orgName组织名称;userId用户Id;username用户名;empId员工Id;empName姓名。如果失败flag为1,msg返回错误提示。
{flag:’’,msg:’’,totalProperty:40,data:[{orgId:’’,orgName:’’,userId:’’,username:’’,empId:’’,empName:’’},{orgId:’’,orgName:’’,userId:’’,username:’’,empId:’’,empName:’’}]}
发起征询
URL:/workflowUtilAction.do?method=doConsult
参数:
taskId:待办Id
userId:要征询的用户Id
comment:征询内容说明
返回值:
发起征询成功flag返回0
{flag:0,msg:’’}
发起征询失败,flag返回1,msg返回错误提示
{flag:1,msg:’错误提示’}
1.4.10 撤回征询
1.4.10.1.1 基于Web Service实现
方法:revokeConsultTask
参数:
taskId:待办Id
comment:撤回原因
loginName:登录用户名(要与平台2.0的用户名相一致)
返回值:
撤回征询成功flag返回0
<result>
<flag>0</flag>
<msg>’’</msg>
</result>
撤回征询失败,flag返回1,msg返回错误提示
<result>
<flag>1</flag>
<msg>’错误提示’</msg>
</result>
1.4.10.1.2 基于Action实现
URL:/workflowUtilAction.do?method=revokeConsultTask
参数:
taskId:待办Id
comment:撤回原因
返回值:
撤回征询成功flag返回0
{flag:0,msg:’’}
撤回征询失败,flag返回1,msg返回错误提示
{flag:1,msg:’错误提示’}
1.4.11 征询反馈
1.4.11.1.1 基于Web Service实现
方法:closeConsultTask
参数:
taskId:待办Id
comment:反馈内容
loginName:登录用户名(要与平台2.0的用户名相一致)
返回值:
征询反馈成功flag返回0
<result>
<flag>0</flag>
<msg>’’</msg>
</result>
征询反馈失败,flag返回1,msg返回错误提示
<result>
<flag>1</flag>
<msg>’错误提示’</msg>
</result>
1.4.11.1.2 基于Action实现
URL:/workflowUtilAction.do?method=closeConsultTask
参数:
taskId:待办Id
comment:反馈内容
返回值:
征询反馈成功flag返回0
{flag:0,msg:’’}
征询反馈失败,flag返回1,msg返回错误提示
{flag:1,msg:’错误提示’}
1.4.12 委派
1.4.12.1.1 基于Web Service实现
先调用getUsers获取用户列表,开发一个界面列出用户,供用户选择一个用户后并执行方法doDelegate发起委派操作
获取用户列表
方法:getUsers
参数:
taskId:待办Id
conditionStr:条件值,可以为员工姓名或组织名称
start:分页的开始记录数
limit:分页的每页记录数
返回值:
如果成功flag为0。totalProperty 总记录数;orgId组织Id;orgName组织名称;userId用户Id;username用户名;empId员工Id;empName姓名。如果失败flag为1,msg返回错误提示。
<result>
<flag></flag>
<msg></msg>
<totalProperty></totalProperty>
<data>
<row>
<orgId></orgId>
<orgName></orgName>
<userId></userId>
<userName></userName>
<empId></empId>
<empName></empName>
</row>
<row>
<orgId></orgId>
<orgName></orgName>
<userId></userId>
<userName></userName>
<empId></empId>
<empName></empName>
</row>
</data>
</result>
发起征询
方法:doDelegate
参数:
taskId:待办Id
loginName:登录用户名(要与平台2.0的用户名相一致)
username:要委派的用户名
comment:委派说明
返回值:
发起委派成功flag返回0
<result>
<flag>0</flag>
<msg>’’</msg>
</result>
发起委派失败,flag返回1,msg返回错误提示
<result>
<flag>1</flag>
<msg>’错误提示’</msg>
</result>
1.4.12.1.2 基于Action实现
先调用getUsersForConsultOrDelegate4Ext获取用户列表,开发一个界面列出用户,供用户选择一个用户后并执行方法doDelegate发起委派操作
获取用户列表
URL:/workflowUtilAction.do?method=getUsersForConsultOrDelegate4Ext
参数:
taskId:待办Id
conditionStr:条件值,可以为员工姓名或组织名称
start:分页的开始记录数
limit:分页的每页记录数
返回值:
如果成功flag为0。totalProperty 总记录数;orgId组织Id;orgName组织名称;userId用户Id;username用户名;empId员工Id;empName姓名。如果失败flag为1,msg返回错误提示。
{flag:’’,msg:’’,totalProperty:40,data:[{orgId:’’,orgName:’’,userId:’’,username:’’,empId:’’,empName:’’},{orgId:’’,orgName:’’,userId:’’,username:’’,empId:’’,empName:’’}]}
发起征询
URL:/workflowUtilAction.do?method=doDelegate
参数:
taskId:待办Id
userId:要委派的用户Id
comment:委派说明
返回值:
发起委派成功flag返回0
{flag:0,msg:’’}
发起委派失败,flag返回1,msg返回错误提示
{flag:1,msg:’错误提示’}
1.4.13 关闭抄送
1.4.13.1.1 基于Web Service实现
方法:closeCopyToTask
参数:
taskId:待办Id
loginName:登录用户名(要与平台2.0的用户名相一致)
返回值:
关闭抄送成功flag返回0
<result>
<flag>0</flag>
<msg>’’</msg>
</result>
关闭抄送失败,flag返回1,msg返回错误提示
<result>
<flag>1</flag>
<msg>’错误提示’</msg>
</result>
1.4.13.1.2 基于Action实现
URL:/workflowUtilAction.do?method=closeCopyToTask
参数:
taskId:待办Id
返回值:
关闭抄送成功flag返回0
{flag:0,msg:’’}
关闭抄送失败,flag返回1,msg返回错误提示
{flag:1,msg:’错误提示’}
1.4.14 取消流程
1.4.14.1.1 基于Web Service实现
方法:revokeProcess4Task
参数:
taskId:待办Id
loginName:登录用户名(要与平台2.0的用户名相一致)
返回值:
取消流程成功flag返回0
<result>
<flag>0</flag>
<msg>’’</msg>
</result>
取消流程失败,flag返回1,msg返回错误提示
<result>
<flag>1</flag>
<msg>’错误提
1.4.14.1.2 基于Action实现
URL:/workflowUtilAction.do?method=revokeProcess4Task
参数:
taskId:待办Id
返回值:
取消流程成功flag返回0
{flag:0,msg:’’}
取消流程失败,flag返回1,msg返回错误提示
{flag:1,msg:’错误提示’}
1.5 流程配置ORACLE存储过程及WEBSERVICE
1.5.1 存储过程
存储过程传入参数不限,返回参数必须为一个符合格式的xml串,且类型为Clob。配置字符串以包名+过程名+传入参数的格式,传入参数可以使用实体属性和内置实体属性,实体属性以${属性}表示,字符串不需要添加引号。
流程系通过中可用的业务实体内置属性如下:
标题(流程摘要) “e_process_title” ;
实例编码 “e_instance_code” ;
提交人 “e_submitter” ;
提交时间 “e_submit_date” ;
当前审批人 “e_current_approver” ;
系统时间(当前节点时间)”e_current_sysdate” ;
当前节点 “e_current_node” ;
业务编码 “e_business_code” ;
业务名称 “e_business_name” ;
业务ID “e_business_id” ;
组织 “e_org” ;
部门 “e_dept” ;
业务状态ID “e_current_biz_status”;
业务状态分类码“e_current_biz_status_cat”;
业务状态分类描述“e_current_biz_status_desc”;
流程配置时可以参照下例:
xip_d_pkg.get_users(${p_user},34 ,${p_org_id})
储存过程返回值格式:
<result>
<flag></flag>
<msg></msg>
<data></data>
</result>
其中flag和msg标签为必输项,flag标示存储过程执行是否正确完成(0:正确,1:错误),msg在flag为1时为存储过程执行错误的原因,有数据集返回时,将数据集每行记录写在data标签下(不同情况下data标签下格式不同)。
注:在节点上配置用于选人的webservice时,返回的xml串格式如下:
<result>
<flag></flag>
<msg></msg>
<data>
<row>
<orgId></orgId>
<orgName></orgName>
<userId></userId>
<userName></userName>
<empId></empId>
<empName></empName>
</row>
</data>
</result>
1.5.2 Webservice
webservice传入参数不限,返回参数必须为一个符合格式的xml串。配置字符串可以使用实体属性,实体属性以${属性}表示,字符串不需要添加单引号。
例如http://${appIp}/appName/hello?wsdl.say(${p_str},kimy)。
Webservice返回值为一个xml字符串,格式与存储过程返回值xml相同:
<result>
<flag></flag>
<msg></msg>
<data></data>
</result>
其中flag和msg标签为必输项,flag标示存储过程执行是否正确完成(0:正确,1:错误),msg在flag为1时为存储过程执行错误的原因,有数据集返回时,将数据集每行记录写在data标签下。
注:在节点上配置用于选人的存储过程时,返回Clob的xml串格式如下:
<result>
<flag></flag>
<msg></msg>
<data>
<row>
<orgId></orgId>
<orgName></orgName>
<userId></userId>
<userName></userName>
<empId></empId>
<empName></empName>
</row>
</data>
</result>
1.5.3 SQL类型
节点配置执行人时,如果为SQL类型时,则SQL语句的书写形式如下所示
select ” as userId,” as userName,” as empCode,” as empName,” as orgNamefrom tb |
例如:
select xu.USER_ID userId,xu.USER_NAME userName,xe.EMP_CODE empCode,xe.EMP_NAME empName,” orgNamefrom xip_pub_users xu, xip_pub_emps xewhere xu.EMP_ID = xe.EMP_IDand xu.user_name = ‘huzhh’ |
1.6 平台Touch工作流 js API使用
1.6.1 基于流程
1.6.1.1 基于流程编码创建实例
方法:createInstanceByProcessCode(processCode,callback)
参数:processCode流程编码
callback回调函数,成功传入{flag:0,instanceCode:’xxx’} instanceCode为流程实例编码,失败传入{flag:1,msg:’xxx’} msg为错误提示。
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’创建流程实例失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑,比如讲返回的实例编码回写到业务表
Ext.Msg.alert(‘提示’,’流程实例创建成功,流程实例编码:’+resp.instanceCode);
}
1.6.1.2 根据实例编码提交流程
提交流程的时候,需要手工选人的时候,选择审批人的界面被推入的导航视图,选择了审批人之后提交流程。
方法:
submitProcess(taskNaviView,instanceCode,entityAttrs,callBack,isCallSelf)
参数:taskNaviView需要手工选人的时候,选择审批人的界面被推入的导航视图
instanceCode 流程实例编码
entityAttrs需要传入的实体属性值的Json串。Json格式为{attribute1:value1,attribute2:value2}
callback回调函数,成功传入{flag:0,msg:’xxx’},失败传入{flag:1,msg:’xxx’} msg为错误提示。
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’提交流程实例失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑,比如讲返回的实例编码回写到业务表
Ext.Msg.alert(‘提示’,’流程实例创建成功,流程实例编码:
‘+resp.instanceCode);
}
1.6.2 基于业务
1.6.2.1 根据流程编码启动并提交流程
方法:
startAndSubmitWithPorcessCode(taskNaviView,processCode,entityAttrs,callBack,isCallSelf)
参数:taskNaviView 需要手工选人的时候,选择审批人的界面被推入的导 航视图
processCode:流程编码
processId:流程Id,如果此参数为空则使用实例原来对应的流程
entityAttrs:需要传入的实体属性值的Json串,Json格式为
{attribute1:value1,attribute2:value2}
callBack:回调函数,传入json对象,其中flag 为’0′ 为成功可以通
过instanceCode获取流程实例编码
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’创建并提交流程失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑
Ext.Msg.alert(‘提示’,’创建并提交流程成功!实例编码:
‘+resp.instanceCode);
}
1.6.2.2 根据实例编码启动并提交流程
方法:
startAndSubmitWithEntityCode(taskNaviView,entityCode,entityAttrs,callBack)
参数:taskNaviView:需要手工选人的时候,选择审批人的界面被推入的
导航视图
entityCode:业务实体编码
processId:流程Id,如果此参数为空则使用实例原来对应的流程
entityAttrs:需要传入的实体属性值的Json串,Json格式为
{attribute1:value1,attribute2:value2}
callBack:回调函数,传入json对象,其中flag 为’0′ 为成功可以通
过instanceCode获取流程实例编码
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’创建并提交流程失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑
Ext.Msg.alert(‘提示’,’创建并提交流程成功!实例编码:
‘+resp.instanceCode);
}
1.6.3 撤回流程
方法:revokeByInsCode(instanceCode,callBack)
参数:instanceCode流程实例编码
callback回调函数成功传入{flag:0,msg:’xxx’},失败传入{flag:1,msg:’xxx’} msg为错误提示。
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’撤回流程失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑
Ext.Msg.alert(‘提示’,’撤回流程成功!’);
}
1.6.4 重提流程
1.6.4.1 重启流程实例
方法:restartInstance(instanceCode,processId)
参数:instanceCode:流程实例编码
processId:流程Id,如果此参数为空则使用实例原来对应的流程
Callback:回调函数成功{flag:0,msg:’xxx’},失败{flag:1,msg:’xxx’} msg
为错误提示。
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’重启流程失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑
Ext.Msg.alert(‘提示’,’重启流程成功!’);
}
1.6.4.2 重启并提交流程实例
提交流程的时候,如果第一个审批节点需要手动选人或根据条件计算得出多个审批人时,会弹出选择审批人的窗口,选择了审批人之后提交流程。
方法:
restartAndSubmitInstance(taskNaviView,instanceCode,processId,entityAttrs,callBack)
参数:taskNaviView:需要手工选人的时候,选择审批人的界面被推入的
导航视图
instanceCode:流程实例编码
processId:流程Id,如果此参数为空则使用实例原来对应的流程
entityAttrs:需要传入的实体属性值的Json串,Json格式为
{attribute1:value1,attribute2:value2}
callBack:回调函数,传入json对象,其中flag 为’0′ 为成功可以
通过instanceCode获取流程实例编码
回调函数示例
function(resp){
if(resp.flag==1){
Ext.Msg.alert(‘提示’,’重启并提交流程失败,原因:’+resp.msg);
}else if(resp.flag==0){
//此处可以添加业务逻辑
Ext.Msg.alert(‘提示’,’重启比提交流程成功!’);
}
1.6.5 根据待办ID为审批页面动态创建审批按钮
方法:create_approve_btns(taskNaviView,bntContainer,taskId,descObj)
参数:
taskNaviView:需要手工选人的时候,选择审批人的界面被推入的导航视图
bntContainer:审批按钮的容器
taskId:待办Id
insCode:流程实例编码
bizId:业务主键Id
返回值:无
1.6.6 审批历史记录查询
方法:queryHistoryRecord(taskNaviView,instanceCode)
参数:
taskNaviView:需要手工选人的时候,选择审批人的界面被推入的导航视图
instanceCode:流程实例编码
1.7 工作流待办提醒设置与开发
工作流待办提醒是指在工作流引擎生成待办后,给待办处理人发出审批处理提醒。
待办提醒模式包括两种:即时提醒和汇总提醒,对于同一套系统内二者只能任选其一。
待办提醒渠道包括三种:微信提醒、邮件提醒和短信提醒,对于同一套系统内三者可以同时启用。
即时提醒处理模式为在流程引擎生成待办后,即刻启动提醒线程将当前待办信息发送待办处理人已启用的提醒渠道内。
汇总提醒处理模式为平台系统在设定提醒频率下将某人未处理的待办信息发送到处理人已启用的提醒渠道内。
待办提醒的前置条件:
- 当前待办所属的通知或会签节点的“是否提醒”属性已勾选。
- 系统内与待办提醒相关的参数信息已正确设置。(系统参数配置说明见下节)
- 对于待办汇总提醒时,需要在系统的“程序管理”功能上注册定时程序(系统默认程序为:xzsoft.xip.wf.common.api.DefaultTaskTimingNotice.timingNotice),并在“任务管理”功能上添加执行计划信息;即时提醒则不需要设置此条件。
注:待办提醒系统默认不执行,只有在满足以上前置条件才会执行。
1.7.1 系统参数设置说明
具体参数配置如下表所示:
序号 | 配置项目 | 配置说明 |
1 | NOTICE_MODE | 待办提醒模式。包括即时提醒-detail、汇总提醒-total |
2 | NOTICE_EMAIL | 是否启用邮件提醒。包括是-Y、否-N |
3 | NOTICE_NOTE | 是否启用短信提醒。包括是-Y、否-N |
4 | NOTICE_WEIXIN | 是否启用微信提醒。包括是-Y、否-N |
5 | TASK_NOTICE_INTER | 待办提醒接口实现类。系统默认实现类为com.xzsoft.xip.wf.common.api.impl.DefaultTaskNoticeServiceImpl |
6 | NOTICE_DETAIL_URL | 移动端即时客户化待办。用户自定义的微信或手机的单个待办处理界面(现系统默认提醒页面为WebBuilder Touch开发,地址为:/main?xwl=23XUYE2ZP5BD)。 |
7 | NOTICE_TOTAL_URL | 移动端汇总客户化待办。用户自定义的微信或手机的汇总待办处理界面(现系统默认提醒页面为WebBuilder Touch开发,地址为:/main?xwl=23W2EADAWUTR)。 |
1.7.2 程序接口说明
提醒接口类 | com.xzsoft.xip.framework.service.TaskNoticeService | |||
属性信息 | ||||
名称 | 备注 | |||
无 | 无 | |||
成员方法 | ||||
方法名 | 参数说明 | 备注 | ||
notice4Email | 参数类型:java.lang.String参数格式:JSON格式参数示例:1、如果为即时提醒JSON格式为:{“taskId” : “”, // 待办ID”recUserId” : “”, // 接收人ID”recUserName”: “”, // 接收人名称”taskTitle” : “”, // 待办标题”phoneNum” : “”, // 手机号码”email” : “”, // 邮件地址”webHost” : “”, // 应用访问地址”submitter” : “” // 流程提交人}2、如果为汇总提醒JSON格式为:{“recUserId” : “”, // 接收人ID”recUserName”: “”, // 接收人名称
“taskTotal” : “”, // 待办汇总数 “taskDetail” : “[{‘taskId’:”,’taskTitle’:”,’createType’:”,’submitter’:”}, {‘taskId’:”,’taskTitle’:”,’createType’:”,’submitter’:”} …… ]”, // 待办明细 “phoneNum” : “”, // 手机号码 “email” : “”, // 邮件地址 “webHost” : “” // 应用访问地址 } |
功能:邮件提醒处理。返回值:void | ||
notice4MobileNote | 参数类型:java.lang.String参数格式:JSON格式参数示例:1、如果为即时提醒JSON格式为:{“taskId” : “”, // 待办ID”recUserId” : “”, // 接收人ID”recUserName”: “”, // 接收人名称”taskTitle” : “”, // 待办标题”phoneNum” : “”, // 手机号码”email” : “” // 邮件地址}2、如果为汇总提醒JSON格式为:{“recUserId” : “”, // 接收人ID”recUserName”: “”, // 接收人名称”taskTotal” : “”, // 待办汇总数”taskDetail” : “[{‘taskId’:”,’taskTitle’:”,’createType’:”},{‘taskId’:”,’taskTitle’:”,’createType’:”},…]”, // 待办明细
“phoneNum” : “”, // 手机号码 “email” : “” // 邮件地址 } |
功能:短信提醒处理。返回值:void | ||
notice4WeiXin | 参数类型:java.lang.String参数格式:JSON格式参数示例:1、如果为即时提醒JSON格式为:{“taskId” : “”, // 待办ID”recUserId” : “”, // 接收人ID”recUserName”: “”, // 接收人名称”taskTitle” : “”, // 待办标题”phoneNum” : “”, // 手机号码”email” : “” // 邮件地址}2、如果为汇总提醒JSON格式为:{“recUserId” : “”, // 接收人ID”recUserName”: “”, // 接收人名称”taskTotal” : “”, // 待办汇总数”taskDetail” : “[{‘taskId’:”,’taskTitle’:”,’createType’:”},{‘taskId’:”,’taskTitle’:”,’createType’:”},…]”, // 待办明细
“phoneNum” : “”, // 手机号码 “email” : “” // 邮件地址 } |
功能:微信提醒处理。返回值:void | ||
1.7.3 程序接口实现类开发
通过实现接口com.xzsoft.xip.wf.common.api.TaskNoticeService中的方法,可定制满足各个项目所需的提醒处理。
系统默认实现类详解:
类名 | com.xzsoft.xip.wf.common.api.impl.DefaultTaskNoticeServiceImpl | ||||||
类属性 | |||||||
属性名 | 属性说明 | ||||||
无 | 无 | ||||||
成员方法 | |||||||
方法名 | 参数 | 方法说明 | |||||
notice4Email | 参数类型:java.lang.String参数格式:JSON格式参数示例:
1、如果为即时提醒JSON格式为: { “taskId” : “”, // 待办ID “recUserId” : “”, // 接收人ID “recUserName”: “”, // 接收人名称 “taskTitle” : “”, // 待办标题 “phoneNum” : “”, // 手机号码 “email” : “”, // 邮件地址 “webHost” : “”, // 应用访问地址 “submitter” : “” // 流程提交人 } 2、如果为汇总提醒JSON格式为: { “recUserId” : “”, // 接收人ID “recUserName”: “”, // 接收人名称 “taskTotal” : “”, // 待办汇总数 “taskDetail” : “[{‘taskId’:”,’taskTitle’:”,’createType’:”,’submitter’:”}, {‘taskId’:”,’taskTitle’:”,’createType’:”,’submitter’:”} …… ]”, // 待办明细 “phoneNum” : “”, // 手机号码 “email” : “”, // 邮件地址 “webHost” : “” // 应用访问地址 } |
功能:邮件提醒处理。返回值:void实现情况:已实现 | |||||
notice4MobileNote | 参数类型:java.lang.String参数格式:JSON格式参数示例:
1、如果为即时提醒JSON格式为: { “taskId” : “”, // 待办ID “recUserId” : “”, // 接收人ID “recUserName”: “”, // 接收人名称 “taskTitle” : “”, // 待办标题 “phoneNum” : “”, // 手机号码 “email” : “” // 邮件地址 } 2、如果为汇总提醒JSON格式为: { “recUserId” : “”, // 接收人ID “recUserName”: “”, // 接收人名称 “taskTotal” : “”, // 待办汇总数 “taskDetail” : “[{‘taskId’:”,’taskTitle’:”,’createType’:”},{‘taskId’:”,’taskTitle’:”,’createType’:”},…]”, // 待办明细 “phoneNum” : “”, // 手机号码 “email” : “” // 邮件地址 } |
功能:短信提醒处理。返回值:void实现情况:未实现 | |||||
notice4WeiXin | 参数类型:java.lang.String参数格式:JSON格式参数示例:
1、如果为即时提醒JSON格式为: { “taskId” : “”, // 待办ID “recUserId” : “”, // 接收人ID “recUserName”: “”, // 接收人名称 “taskTitle” : “”, // 待办标题 “phoneNum” : “”, // 手机号码 “email” : “” // 邮件地址 } 2、如果为汇总提醒JSON格式为: { “recUserId” : “”, // 接收人ID “recUserName”: “”, // 接收人名称 “taskTotal” : “”, // 待办汇总数 “taskDetail” : “[{‘taskId’:”,’taskTitle’:”,’createType’:”},{‘taskId’:”,’taskTitle’:”,’createType’:”},…]”, // 待办明细 “phoneNum” : “”, // 手机号码 “email” : “” // 邮件地址 } |
功能:微信提醒处理。返回值:void实现情况:已实现 | |||||
实现类程序 | |||||||
邮件与微信实现类 |
|
||||||
短信实现类 |
|