流程抄送
流程在流转过程中抄送流程给某人,某人只能查看信息不影响流程的流转. 类似名称(查阅,呈阅).
抄送是用户对于整个流程维度. 而不是针对单个流程节点维度
流程抄送的四种方式
1. 通过线条上增加抄送函数来指定抄送人抄送.
${cxt.copyTo('ROLECODE=\'010\'')};
动态流程变量 copytoUser 设置抄送人
${cxt.copyTo('ROLECODE=\''+cxt.get('copytoUser')+'\'')};
抄送的条件的字段:
ORGID 机构id
USERID 用户id
USERNAME 用户账号名
USERCODE 用户编号
DEPTID 部门id
DEPTCODE 部门编号
ROLEID 角色id
ROLECODE 角色编号
ROLENAME 角色名称
2. 流程审核/提交时通过指定抄送人参数__copyAssignee来抄送
由于一个用户会存在多个角色为了保证唯一性
流程用户id= 机构id_部门id_角色id_用户id
注意: 此方式不支持会签的提交(由于会签是同一个流程节点多个人提交流程. 会导致抄送多次的问题,因此会签屏蔽了此方式)
function btnConfim_onClickScript(cxt:ScriptContext,btn:Button){
let page=btn.getPage();
let audFlag=page.components.cmbConfirm.getValue();
var attachment=page.components.UploadCmp1.getValue();
let auditMemo=page.components.txtAUDITMEMO.getValue();
let wfParams={}
if(Common.isEmpty(audFlag)){
Common.errorMsg('请选择审核意见');
return;
}
let nodes = page.components.Tree1.getSelectNodes()
if (nodes.length > 0) {
let assignList=[]
nodes.forEach((node,index)=>{
assignList.push(node.WFUSERID);
})
//动态设置的指定人审核
wfParams['__assignee']=assignList
}
if (nodes.length==1){
wfParams['__assignee']=nodes[0].WFUSERID
}
//动态设置抄送的人
wfParams['__copyAssignee']=['DBABA3318E2B475B89701CBF42E03D7B_321060C3C0C34824A9F291E0DC7086A0_7FCABE692E5E4E06AA42CAA67802644C_59EAFF507408402FA3466783D5FEC093','7575860D9D21457ABF7162AF4DF177BA_3BFFEBAC10184810811D6FFDCF12E21C_7FCABE692E5E4E06AA42CAA67802644C_AD4B4E3736FB4650B55D9C9693AA57CB']
btn.getPage().raiseEvent('confirm', audFlag,null, auditMemo,attachment,wfParams)
page.close();
}
3. 通过脚本任务task来抄送
cxt.copyTo('ROLECODE=\'002\'')
4. 通过抄送策略来实现抄送
注意: 此方式不支持与会签策略混用
{
"name": "抄送给指定人",
"class": "com.kdayun.z1.core.workflow.listerner.usertask.CopyToListernerImpl",
"params": [
{
"name": "condition",
"value": " ROLECODE = '001' "
}
]
}
查询抄送(未读)
wfSQLType 参数的取值
wfSQLType的取值: none(无),all(全部),daitj(待提交),daish(待审核),shenhz(审核中),yish(已审核),daicy(抄送(未读),待查阅) yicy(抄送(已读), 已查阅)
代码实现查询抄送(未读)的数据
function button_onclick(btn){
cmp.getPage().setParamsObj({wfSQLType:'daicy'})
cmp.getPage().components.Table1.loadData();
}
相关查询Sql
查询用户的抄送(未读)的总数
SELECT COUNT(*) AS CNT, E.FUNCTION_ID ,CR.OBJNAME AS FUNCTION_NAME
FROM ACT_HI_PROCINST ART
INNER JOIN ACT_RE_PROCDEF D ON ART.PROC_DEF_ID_ = D.ID_
INNER JOIN ACT_RE_MODEL E ON E.KEY_ = D.KEY_
INNER JOIN CORE_RES CR ON E.FUNCTION_ID=CR.RWID
WHERE EXISTS (SELECT 1 FROM ACT_HI_COPYTO F WHERE F.PROC_INST_ID_ = ART.PROC_INST_ID_ AND (F.ISREAD IS NULL OR F.ISREAD = 0) AND F.USER_ID_ ='#{USERID}')
GROUP BY E.FUNCTION_ID
查询抄送(已读)
function button_onclick(btn){
cmp.getPage().setParamsObj({wfSQLType:'yicy'})
cmp.getPage().components.Table1.loadData();
}
相关查询Sql
查询用户的抄送(已读)的总数
SELECT COUNT(*) AS CNT, E.FUNCTION_ID ,CR.OBJNAME AS FUNCTION_NAME
FROM ACT_HI_PROCINST ART
INNER JOIN ACT_RE_PROCDEF D ON ART.PROC_DEF_ID_ = D.ID_
INNER JOIN ACT_RE_MODEL E ON E.KEY_ = D.KEY_
INNER JOIN CORE_RES CR ON E.FUNCTION_ID=CR.RWID
WHERE EXISTS (SELECT 1 FROM ACT_HI_COPYTO F WHERE F.PROC_INST_ID_ = ART.PROC_INST_ID_ AND (F.ISREAD = 1) AND F.USER_ID_ ='#{USERID}')
GROUP BY E.FUNCTION_ID
设置抄送的读取状态
设置相关的抄送为已读状态
function Button4_onClickScript(cxt: ScriptContext, btn: Button) {
var rows = btn.getPage().components.Table1.getChecks();
if (rows.length == 0) {
Common.warnMsg('请选择行');
return;
}
btn.getPage().components.WorkFlow1.setCopyRead(rows[0].get('SYS_PID'),'干的不错.通过!',
function (error) {
if (Common.isNotEmpty(error)) {
Common.errorMsg(error);
} else {
btn.getPage().components.Table1.loadData();
}
});
}
作者:texbox 创建时间:2023-06-27 12:41
最后编辑:texbox 更新时间:2024-10-17 08:28
最后编辑:texbox 更新时间:2024-10-17 08:28