版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会签动态配置
修改手册
V1.0
2020年4月7日
序言
本手册主要叙述在原流程会签的基础上增加会签的动态配置规则,例如:一票否决、最
小票数、百分比等方式进行会签判决,决定会签的流向。
需要注意的是,已经生成的运行流程不支持此次会签动态修改,因为在流程部署生成流
程图时没有设置会签完成条件,所以不具备会签动态规则的功能。新流程按接下来的配置即
可使用动态配置规则。
一、手动会签
在原有流程图的基础上,给会签节点的配置信息的完成条件增加务件"${counterSignPass
==true),;然后点击“部署”发布新的运行流程即可,其余原有的流程配置不用修改,如下:
©MPx|d无IWEB|X0样X+-0X
4CGk)calx>rt/Xjfe-M/pc<xe$s£ditofAnodelefJrtml?modetd-Saaac1974<J9c4®c2ba358bl931292184☆0
EPR❺Cloud@OutMcW«bAppARedme
回QQQQHQ(3QGQ@QQ
,网关
,边用•件
>中间58度期
>中1句党出
》结束W4
»泳遇V部门经理会签
»用件±«(10)Counlenign丽
No
0MH»YS:0executtonMsiencn
:P.MBB03^0:NoMg
鱼含(―:MUMTUSO元・金■(»«M):9rtM
1:1>s»a:
$4<oumefSionPws--true)
•J八・.《!・—
然后部署流程,在“运行流程”中使用拷贝配置将旧流程的配置拷贝进新流程,由于会
签规则是新增数据,旧流程会签节点没有相关数据,需要手动配置相应的规则,如不配置则
是默认按原来的方式走(即程序控制)。
©然趣|ERP
运行流程H制
.口・以—E赅
1的VO99MQ
□m-E-
■n・件.Q■-en
IS'|[二__________•GMQN
■n脸一人■左殖QsOifi&itiiA
。二】主ent■性・找・■
Q-忖—■性电ana•«o«
□|an—|asa
Q.忖会计■.anana-■E*
■小USDr
□—anan«・»•百分比
西原有BSS有万代
□L0■♦苫
二、多级会签
2.1流程图会签节点配置
流程图中配置参考第一章节艮1可
主It(ID):jolntlySign名分:65
描述信在:Novalue跨步:Q
互斥任务:携行=听3&:0rxecutionK$t«n«r$
多实例美史:ParallelSB(妥实可):N)value
集合(多实的:SfuserUst)元衰变量(多实例):assignee
1完成条件(名实®«):
${counter$ignPass==.SSM48:Q
4>西?田a-NoAi«ianm«nt本给・|尸•NsV4lu«
2.2业务代码中的流程配合修改:
首先在业务代码中获取会签规则,代码示例如下:
Map<String,String>param2=newHashMap<String/String>();
Stringprocess_definition_id=ring("process_definitionjd");
Stringtask_def_key=ring("task_def_key");
("process_definition_id",process_definition_id);
("task_def_key",task_def_key);
M叩〈String,Object>countersignRule=ersignRule(param2);〃会签规则
:wodc«p»ce-cmNc-•(pnngT©oi(wt»I
AWfdhSource(UfadorNaUg«f.ProjectRunWardowHelp
•3/4・o・d•・,・.、・,・,)・
1P-dcfnUm”:"F%•・d°u
>毋MmMi1prc)*cfpABn3157389〃含爱
90booleanalHign»tatus=false;
>盅com«ru<t^Mb4<f4o31243if(ta^kNM*.tqu«lf(*jointlySign*)M**Y*.«qu41s(proje<tApply.gftStr(Pr«je<tApply.I$_lMG£MT)))(
>£finmdtcMifoJ0417
〉
>盅fc^cUM»Kh*<M>eJBJ2Nap<String9Stringparaa■n«wHashKapKString,String>();
"
>AC^dMwfo31261Stringprocess_instancc_id■resultJson.getString(•proccss-in*t«nc«_id);
>IrwtwoHcplan/•Stringprcviou5.t«sk_instancc_id=result)son.getString("p^evioui.task.instance.id");
>周p<mCo«wio«Z73UString•ddition«l_infonMtioG«re»ultIson.getString("additionel-inforoation");
97p>r^n.put(*proc«s$inst<nceid-pBce”,cstx«」d);
>盅pmWr«K«23il5-->
aw,」,・」
>度prcje<uW<yind<4tor98paraa.put('pr»viou«_task_instaf%ce.id/p2“ou_t"kct0'cd);
paraa.put("additional_inforaation",ddditional_infor«Ation);
>盅projecucctpuoce2^551
-?1O0List<Map<StringObject»list*WfUti1.counters\gnlnfo{pano<*);//
vA30073f
鼻
vcoMroMer焚33102NefKString,String》par««2=n«wHsshMapCStrinf,String>();
央
>P2ie«Ap/C8trMerj.163Stringprocess.definition.id■resultJson.tet5trint(wproce»$_de<inition_id**);
vaPrej»ctAppl|V^fCcrtrol*r.1B4Stringt“k_d“_k-y•r«tultIson.getString(Mtask^def_k«ya);
▼R曾咏NN
105parda2.put(proc0ss_dofinition_id/procoss_d«finition_id);
•cMe9ory5«*vk«lebparan2.put(*task_def_koy*,task_dcf_k«y);
aco(nmorAtt«ch$«rv»c
N»p<StringvObject>countersignRulc=WfUtil.counterst^nffuleCpar»vi2);//^£lRn
.»«v*ce
Q9«<ForkNede(Pfoj«c"(C011e<tio«4nil5.<sMdefRptHHst))(//
“gc^tApp^tylO110IntCOM•0;
-…1111IntprocesfiCount•0;
[..、wAppa-C|112for(FUpKString,Obj«ct>nap:list){//金优合二同总行金奖
113Objectprocces5_st«tus«nap.get("proccess.status");
(>k<>dM»Ch>n<je$Utu«
>0|dM2512511<1Ig
>.Mfvke12»5
>琮proje<UpprOM«l,:八
然后判断是否程序控制(原流程会签方式),不是则将此类参数传递到前端页面进行判
断(此时由于我们不知道当前处理人会如何审批)
if("PROGRAM".equalslgnoreCase((,,counterMode',).toString())){
if(cou==0){
allsignstatus=true;
)
("countersignRule",NString(countersignRule));
}else{
("processcount",processCount);〃己会签数量
("agreenum",processCount-cou);//会签同意数量
("nrOflnstances",());〃会签总数
("countersignafterdown","Y");〃会签结束后走向下一步
("countersignRule",NString(countersignRule));
)
109if(CollectionUtils.isMot£flpty(list)){//主
110intCOM«0;
111intproc«ssCcxint>0;
112for(MapKStringiObject>aap:list){//递代含妥丁弟Mtf是否曾佑鑫
113Objectproccoss_£tatu£•ajip.got(wproccoss_statusM);
114!-nvll)(
115proce$$Count
116)
if(proccess.status!-null&&^N^.equdlsOtring.votv«Cf(pro<cess_status))){//WUKI任何一个不♦同欠蜘含二
118coui;
119)
120}
121
122if("PROGRAM*.«qudltIgnor«Ca$»(countorsignRule.get("count«rMod«H).toString())){
123if(cou==0){
124allsignstatus■true;
1251
126(Mrams.put("countersifnRjle-,3SONUtil$.toJS(W5tr(n9(countersignRule));
U7}•!«•{
128countersignRule.put("prozesscount*,processCount);
"9countersignRu.put("agr?©nu«*,prosssCouct-cou);〃俵整BKH
130counter5ignRule.put("nrOFlnst«nce»">list.size());//n£9A
"Ipae»s.pvt(“c8nteriaafte"gn.jY・);这个拿救必须值.因为我们不注28当用处理人处建后会签是否给束
132params.put("countorsignRjlo",JSONUtil%.toJStWStri“(c<xjctQr与ignRul"));
133)
页面代码处理:
代码和图示如下:
function]counterSignResult【params,|process_statu三|至当前人的会签处理结果
if(*jointlySign'=='${taskName!!'){""'**
varelJsonObj=JSON.parse(params.elStringValue);
varallsignstatus-el?sonObj.allsignstatus;//三的合签林面几人的总答循杲
varcountersignRule=JSON.parse(params.countersignRule);荻取后台传递的会签规贝ij
程序控制
if('PROGRAM'==countersignRule.counterMode){使用原有代码,不做处理
if(allsignstatus){//前面几个会及旌部则
if(process_statu>=="N"){
elDsonObj.allsignstatus=false;
params.elStringValue=JSON.stringify(elJsonObj);
}else{
elJsonObj.allsignstatus=true;
params.elStringValue=3SON.stringify(elJsonObj);
//params.countersignafterdown='Y';
任何一个不通过,目接送回京起人
params.elStringValue=JSON.stringify(elJsonObj);
}else{已经会签处理的数星,力口1是加上了当前处理人
varprocesscount=countersignRule.processcount+1;
varnrOfInstances=三ountersiRnRule.nrOfInstances;会签总实例数
if(I'ONEVOTEREJECT”==countersignRule.counterMode){
一票否决if(process_status=="N"){会果判断
el^sonObj.allsignstatus=false;会签不通过
params.elStringValue=3SON.stringify(elDsonObj);
}el»e(
elJsonObj.allsignstatus=true;
params.elStainaValu。=JSON.stringifv(elJsonObj);
if(processcount!=nrOfInstances){已会签数曷不等于总实例数,
params.countersignafterdown=null;
说明会签未浩束,
此时该参数必须叠空
fr---------------1最/J要数
}elseif(」MIN_VOTE'I==countersignRule.counterMode){
varminVote=countersignRule.ruleData;会答为I.则中没罟的虢小通i寸堇数
varagreenum=countersignRule.agreenum;除去当前处理人的已同意数是
if(process_statu>=="Y"){
agreenum=agreenum+1j如果当刖人同e,已同意数星JJ口1
if(agreenum>=minVote){会笠结果判断,处理情况同上
elJsonObj.allsignstatus=七rue;
params.elStringValue=JSON.stringify(elJsonObj);
//params.countersignafterdown='Y';
}«lse(
elJsonObj.allsignstatus=false;
params.elStringValue=3SON.stringify(elJsonObj);
if(processcount!=nrOfInstances){
params.countersignafterdown=null;
}
).百分比
}elseif(|,PERCENT*|==countersignRule.counterMode){
varpercent=countersignRule.ruleData;会密娅则设•罟的通过百分比
varagreenum=countersignRule.agreenum;
if(process_statu>=="Y'*){
agreenum=agreenum+1;
},*,“、,计苴己同意的百分比是否大于等于
if(agreenum*100/nrOfInstances>=percent){
elJsonObj.allsignstatus=trua;iSS的百分比,进行结果处理
params.elStringValue=3SON.stringify(el3sonObj);
//params.countersignafterdown='Y';
elJsonObj.allsignstatus=falsa;
params.elStringValue=3SON.stringify(el3sonObj);
params.countersignafterdown=null;
M
returnparams;
)
functioncounterSignResult(params,process_status){
if('jointlySign'=='${taskName!}'){
varelJsonObj=(IngValue);
varallsignstatus=gnstatus;//当前会签前面几人的会签结果
varcountersignRule=(ersignRule);
if('PROGRAM'==erMode){
if(allsignstatus){//前面几个会签人全部通过
if(process_$tatus=="N"){
gnstatus=false;
ingValue=gify(elJsonObj);
}else{
gnstatus=true;
ingValue=gify(elJsonObj);
//ersignafterdown=Y;
)
}else{//任
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高职国际航运业务管理(航运业务操作)试题及答案
- 2025年高职航空机电设备维修(航空设备维护)试题及答案
- 2025年高职(食品生物技术)食品酶制剂应用专项测试试题及答案
- 2025年高职生态保护运营(运营技术)试题及答案
- 2025年大学戏剧影视表演(表演基础)试题及答案
- 2025年高职(智能制造装备技术)装备维护阶段测试题及答案
- 2025年高职(给排水工程技术专业)管道维修试题及答案
- 2025年大学休闲体育(康乐体育)试题及答案
- 2025年高职地理教育(地理教学设计)试题及答案
- 2025年高职(园林技术)绿化工程施工实训试题及答案
- 未来五年养殖淡水鳙鱼(胖头鱼)企业县域市场拓展与下沉战略分析研究报告
- 2026年宁夏贺兰工业园区管委会工作人员社会化公开招聘备考题库参考答案详解
- 癌痛患者心理支持策略
- 2025年12月份四川成都市第八人民医院编外招聘9人笔试参考题库及答案解析
- 25秋二上语文期末押题卷5套
- 达人分销合同范本
- 检修车间定置管理制度(3篇)
- 乘用车内部凸出物法规培训
- 妇科肿瘤保留生育功能治疗策略
- 建筑工程施工管理论文2025年
- 铁路系统QC国优成果-定稿减少信号电缆过渡施工安全隐患
评论
0/150
提交评论