| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073 |
- //function jsonToJpdl(jsonString){
- // this.obj=eval('('+jsonString+')');
- // var aa=this.toJPDL();
- // return aa;
- //}
- //
- //document.ready=function(){
- // var message=jsonToJpdl(document.getElementById("jsonData").innerHTML);
- // console.log(message);
- // var xmp=document.getElementById("jpdl");
- // xmp.innerHTML=message;
- //}
- var translate=function(){
- this.bpm_type=null;
- this.bgmbid=null;
- this.obj=null;
- //JPDL:
- this.toJPDL=function(){
- console.log(this)
- var xmlns="<?xml version='1.0' encoding='utf-8' standalone='yes' ?>";
- var process=document.createElement("process");
- process.setAttribute("name",this.obj.bpm_name.split(".")[0]+"."+this.obj.bpm_desc+"."+this.obj.version);
- process.setAttribute("key",this.obj.bpm_name+"."+this.obj.version);
- //START
- var start_nodes=this.getStart();
- for (var i=0;i<start_nodes.length;i++) {
- process.appendChild(start_nodes[i].cloneNode(true))
- }
- // process.appendChild(this.getStart().cloneNode(true))
- //TASK
- var task_nodes=this.getTask();
- for(var i=0;i<task_nodes.length;i++){
- process.appendChild(task_nodes[i].cloneNode(true))
- }
- var transmit_nodes=this.getTransmit();
- for(var i=0;i<transmit_nodes.length;i++){
- process.appendChild(transmit_nodes[i].cloneNode(true))
- }
- var subprocess_nodes=this.getSubProcess();
- for(var i=0;i<subprocess_nodes.length;i++){
- process.appendChild(subprocess_nodes[i].cloneNode(true))
- }
- //process.appendChild(this.getTask())
- var fork_nodes=this.getFork();
- for(var i=0;i<fork_nodes.length;i++){
- process.appendChild(fork_nodes[i].cloneNode(true))
- }
- //foreach
- var foreach_nodes=this.getForeach()
- for(var i=0;i<foreach_nodes.length;i++){
- process.appendChild(foreach_nodes[i].cloneNode(true))
- }
- var join_nodes=this.getJoin();
- for(var i=0;i<join_nodes.length;i++){
- process.appendChild(join_nodes[i].cloneNode(true))
- }
- //decision
- var decision_nodes=this.getDecision()
- for(var i=0;i<decision_nodes.length;i++){
- process.appendChild(decision_nodes[i].cloneNode(true))
- }
- //END
- var end_nodes=this.getEnd()
- for(var i=0;i<end_nodes.length;i++){
- process.appendChild(end_nodes[i].cloneNode(true))
- }
- // var process=process.createProcessingInstruction("xml","version=\"1.0\" encoding=\"utf-8\"")
- var result=(new XMLSerializer).serializeToString(process);
- result=xmlns+result;
- this.bpm_type=null;
- this.bgmbid=null;
- return result;
- }
- //start node
- this.getStartNode=function(){
- var aa=this.getNoRepeatNameObj().nodes;
- //查找
- for(key in aa){
- if(aa[key].type=="start"){
- aa[key];
- return aa[key]
- }
- }
- }
- this.getEndNode=function(){
- var temp=new Array();
- var aa=this.getNoRepeatNameObj().nodes;
- for(key in aa){
- if(aa[key].type=="end"){
- temp.push(aa[key])
- }
- }
- return temp;
- }
- //startXML
- this.getStart=function(){
- var data=this.getStartNode();
- //创建节点
- //顺序创建
- // <on event="start">
- // <event-listener class="wd.core.bpm.eventlistener.CommonEventListener">
- // <field name="service">
- // <string value="gzll_ck_pl_sh_tj_start" />
- // </field>
- // <field name="type">
- // <string value="1" />
- // </field>
- // <field name="action">
- // <string value="start" />
- // </field>
- // </event-listener>
- // </on>
- var temp=document.createElement("temp")
- var on,event_listener,field,string;
- on=document.createElement("on");
- on.setAttribute("event","start")
- event_listener=document.createElement("event-listener")
- event_listener.setAttribute("class","ss.bpm.BpmListener")
- //field:service
- field=document.createElement("field");
- field.setAttribute("name","servName");
- string=document.createElement("string");
- string.setAttribute("value",data.service_name)
- field.appendChild(string);
- event_listener.appendChild(field);
- //field:type
- field=document.createElement("field");
- field.setAttribute("name","chgType");
- string=document.createElement("string");
- string.setAttribute("value",this.bpm_type?this.bpm_type:this.obj.bpm_type);
- field.appendChild(string);
- event_listener.appendChild(field);
- //field:action
- field=document.createElement("field");
- field.setAttribute("name","actnType");
- string=document.createElement("string");
- string.setAttribute("value","start")
- field.appendChild(string);
- event_listener.appendChild(field);
-
- //bgmbid:记录表格模板ID
- field=document.createElement("field");
- field.setAttribute("name","nodeParm");
- string=document.createElement("string");
- string.setAttribute("value",this.generalDesc(data));
- field.appendChild(string);
- event_listener.appendChild(field);
- //taskNumber
- field=document.createElement("field");
- field.setAttribute("name","taskNum");
- string=document.createElement("string");
- //匿名函数,计算task 总数
- string.setAttribute("value",function(THIS){
- var nodes=THIS.obj["nodes"];
- var count=0;
- for(var key in nodes){
- if((nodes[key].type=="task"||nodes[key].type=="transmit")&&THIS.hasNextNode(nodes[key].id)){
- count++;
- }
- }
- return count;
- }(this))
- field.appendChild(string);
- event_listener.appendChild(field);
- on.appendChild(event_listener)
- temp.appendChild(on)
- //搜索
- if(this.hasNextNode(data.id)){
- // var relate_data=this.getNodeListById(data.id);
- // for(var i=0;i<relate_data.length;i++){
- //
- // var start=document.createElement("start");
- // start.setAttribute("name","start")
- // var transition=document.createElement("transition");
- // transition.setAttribute('to','SuperDecision')
- // start.appendChild(transition);
- // temp.appendChild(start);
- // var decision,handler,field,string,transition;
- // decision=document.createElement("decision");
- // decision.setAttribute("name","SuperDecision");
- // handler=document.createElement("handler");
- // handler.setAttribute("class",'env.service.workFlow.SuperDecision');
- // field=document.createElement("field");
- // field.setAttribute("name","json")
- // string=document.createElement("string");
- // var sups=this.getSuperDecisionJson()
- // string.setAttribute("value",JSON.stringify(sups.json))
- // field.appendChild(string);
- // handler.appendChild(field);
- // decision.appendChild(handler);
- // var transition=document.createElement("transition");
- // transition.setAttribute('to',
- // this.makeTransitionToName(relate_data[i],1));
- // for(var j=0;j<sups.transition.length;j++){
- // decision.appendChild(sups.transition[j]);
- // }
- //
- //
- // decision.appendChild(transition);
- // temp.appendChild(decision)
- // };
- var nodeid=data.id;
- //start
- var start=document.createElement("start");
- start.setAttribute("name","start")
- var transition=document.createElement("transition");
- transition.setAttribute('to',data.id+"");
- start.appendChild(transition);
- temp.appendChild(start);
-
-
- //startDecision
- decision=this.makeStartDecision(data,data.id+"SubprocessDecision");
- temp.appendChild(decision.cloneNode(true));
-
-
- //subprocessDecision
- decision=this.createDomElement("decision",{name:(data.id+"SubprocessDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.StartSubbpmDec"}) // :"wd.core.bpm.group.start.SubprocessDecision"})。Lin
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{name:"subprocess",to:data.id+"Subprocess"})
- decision.appendChild(transition);
- transition=this.createDomElement("transition",{to:data.id+"StartFinishDecision"})
- decision.appendChild(transition)
- temp.appendChild(decision.cloneNode(true))
-
-
- //subprocess
- var subprocess=this.createDomElement("sub-process",{name:(nodeid+"Subprocess"),"sub-process-key":"DynamicProcess",outcome:"#{subprocessresult}"})
- var parameter_in,parameter_out;
- parameter_in=this.createDomElement("parameter-in",{"var":"subbpmName",subvar:data.subprocess_key}) // {"var":"subprocesskey",。Lin
- subprocess.appendChild(parameter_in)
- if(data.subprocess_startfunction){
- parameter_in=this.createDomElement("parameter-in",{"var":"subbpmServName",subvar:data.subprocess_startfunction}) // {"var":"startfunction",。Lin
- subprocess.appendChild(parameter_in)
- }
- if(data.subprocess_endfunction){
- parameter_in=this.createDomElement("parameter-in",{"var":"endfunction",subvar:data.subprocess_endfunction})
- subprocess.appendChild(parameter_in)
- }
- var transition2;
- transition2=this.createDomElement("transition",{to:(nodeid+"SubprocessFinishDecision")});
- subprocess.appendChild(transition2);
- transition2=this.createDomElement("transition",{name:"agree",to:(nodeid+"SubprocessFinishDecision")});
- subprocess.appendChild(transition2);
- transition2=this.createDomElement("transition",{name:"reject",to:(nodeid+"SubprocessFinishDecision")});
- subprocess.appendChild(transition2);
- temp.appendChild(subprocess.cloneNode(true));
-
-
-
-
- //subprocessFinishDecision
- decision=this.createDomElement("decision",{name:(nodeid+"SubprocessFinishDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.StartSubbpmEndDec"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:data.id+"StartFinishDecision"})
- decision.appendChild(transition)
- temp.appendChild(decision.cloneNode(true))
- //startFinishDecision
- decision=this.createDomElement("decision",{name:(nodeid+"StartFinishDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.StartEndDec"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:this.makeTransitionToName(this.getNodeListById(data.id)[0],1)})
- decision.appendChild(transition)
- temp.appendChild(decision.cloneNode(true))
-
-
-
-
-
-
-
-
-
-
-
- // var relate_data=this.getNodeListById(data.id);
- // for(var i=0;i<relate_data.length;i++){
- // var start=document.createElement("start");
- // start.setAttribute("name","start")
- // var transition=document.createElement("transition");
- // transition.setAttribute('to',
- // this.makeTransitionToName(relate_data[i],1));
- // start.appendChild(transition);
- // temp.appendChild(start)
- // };
- }
- return temp.childNodes}
-
- //endXML
- //反向创建
- // <end name="同意">
- // <on event="start">
- // <event-listener class="wd.core.bpm.eventlistener.CommonEventListener">
- // <field name="service">
- // <string value="gzll_ck_pl_sh_tj_agree" />
- // </field>
- // <field name="title">
- // <string value="审核已通过" />
- // </field>
- // <field name="msg">
- // <string value="审核已通过" />
- // </field>
- // <field name="action">
- // <string value="agree" />
- // </field>
- // </event-listener>
- // </on>
- // </end>
- // <end name="退回">
- // <on event="start">
- // <event-listener class="wd.core.bpm.eventlistener.CommonEventListener">
- // <field name="service">
- // <string value="gzll_ck_pl_sh_tj_reject" />
- // </field>
- // <field name="title">
- // <string value="审核已退回" />
- // </field>
- // <field name="msg">
- // <string value="审核已退回" />
- // </field>
- // <field name="action">
- // <string value="reject" />
- // </field>
- // </event-listener>
- // </on>
- this.getEnd=function(){
- var end_nodes=this.getEndNode();
- var temp,end,on,event_listener,field,string;
- temp=document.createElement("temp");
-
- for(var i=0; i<end_nodes.length;i++){
- var data=end_nodes[i];
- //同意
- event_listener=document.createElement("event-listener")
- event_listener.setAttribute("class","ss.bpm.BpmListener")
- //service
- string=document.createElement("string");
- string.setAttribute("value",data.agree_service_name)
- field=document.createElement("field");
- field.setAttribute("name","servName");
- field.appendChild(string)
- event_listener.appendChild(field);
- //title
- string=document.createElement("string");
- string.setAttribute("value",data.agree_message_title)
- field=document.createElement("field");
- field.setAttribute("name","msgTitle");
- field.appendChild(string)
- event_listener.appendChild(field);
- //msg
- string=document.createElement("string");
- string.setAttribute("value",data.agree_message_content)
- field=document.createElement("field");
- field.setAttribute("name","msgCont");
- field.appendChild(string)
- event_listener.appendChild(field);
- //action
- string=document.createElement("string");
- string.setAttribute("value","agree")
- field=document.createElement("field");
- field.setAttribute("name","actnType");
- field.appendChild(string)
- event_listener.appendChild(field);
- //finishService
- string=document.createElement("string");
- string.setAttribute("value",data.finishService||"");
- field=document.createElement("field");
- field.setAttribute("name","endCmdStr");
- field.appendChild(string)
- event_listener.appendChild(field);
-
- end=document.createElement("end");
- end.setAttribute("name",data.agree_name)
- on=document.createElement("on");
- on.setAttribute("event","start");
- end.appendChild(on);
- on.appendChild(event_listener)
- temp.appendChild(end);
-
- //拒绝
- event_listener=document.createElement("event-listener")
- event_listener.setAttribute("class","ss.bpm.BpmListener")
- //service
- string=document.createElement("string");
- string.setAttribute("value",data.reject_service_name)
- field=document.createElement("field");
- field.setAttribute("name","servName");
- field.appendChild(string)
- event_listener.appendChild(field);
- //title
- string=document.createElement("string");
- string.setAttribute("value",data.reject_message_title)
- field=document.createElement("field");
- field.setAttribute("name","msgTitle");
- field.appendChild(string)
- event_listener.appendChild(field);
- //msg
- string=document.createElement("string");
- string.setAttribute("value",data.reject_message_content)
- field=document.createElement("field");
- field.setAttribute("name","msgCont");
- field.appendChild(string)
- event_listener.appendChild(field);
- //action
- string=document.createElement("string");
- string.setAttribute("value","reject")
- field=document.createElement("field");
- field.setAttribute("name","actnType");
- field.appendChild(string)
- event_listener.appendChild(field);
- end=document.createElement("end");
- end.setAttribute("name",data.reject_name)
- on=document.createElement("on");
- on.setAttribute("event","start");
- end.appendChild(on);
- on.appendChild(event_listener)
- temp.appendChild(end);
- }
- return temp.childNodes
- }
- //taskXML
- // <task
- // form="@service{name:'gzll_ck_pl_sh_tj',dest:'zy.gzll.gzll_ck_pl_sh'}@"
- // name="办公室审">
- // <assignment-handler class="wd.core.bpm.assignmenthandler.TranslatorHandler">
- // <field name="service">
- // <string value="gzll_ck_pl_sh_tj" />
- // </field>
- // <field name="scope">
- // <string value="env.办公室" />
- // </field>
- // <field name="title">
- // <string value="评论审核审核" />
- // </field>
- // <field name="content">
- // <string value="评论审核" />
- // </field>
- // </assignment-handler>
- // <on event="end">
- // <event-listener class="wd.core.bpm.eventlistener.CommonEventListener">
- // <field name="action">
- // <string value="completeTask" />
- // </field>
- // </event-listener>
- // </on>
- // <transition to="同意" name="agree" />
- // <transition to="退回" name="reject" />
- // </task>
- this.createTask=function(data,idname,agreeNode,rejectNode,options){
-
- if(!options)options={};
-
- var transmitTo=null;
- if(options.transmitTo){transmitTo=options.transmitTo};
- var nodeid=data.id;
-
- if(idname){nodeid=idname}
-
- var result=[];
-
- //声明所需要变量666666
- var task,assignment_handler,field,string,on,event_listener,decision,handler,transition,agreeTo,rejectTo,relate_data;
-
- // var alllines=this.getNoRepeatNameObj()["lines"];
- var allnodes=this.getNoRepeatNameObj()["nodes"];
- var relatelines=this.getLineListById(data.id);
- // if(data.rejectnode&&nodeid.indexOf("rejectnode")==-1){
- //
- // rejectTo=nodeid+"rejectnode";
- // }
- //计算已经画好的线
- for(var i=0 ;i<relatelines.length;i++){
- var line=relatelines[i];
-
- if("reject"==line.status){
- rejectTo=this.makeTransitionToName(allnodes[line.to],0)
- }else{
- agreeTo=this.makeTransitionToName(allnodes[line.to],1)
- }
- }
-
- //没有画退回线,但是画了同意线
- if(agreeNode){
- agreeTo=agreeNode
- }
- if(rejectNode){
- rejectTo=rejectNode
- }
-
-
-
- if(!rejectTo){
- rejectTo=this.makeTransitionToName(null,2)
- }
-
- if(!agreeTo&&!rejectTo){
- alert("计算错误")
- return null;
- }
-
- // if(this.hasNextNode(data.id)){
- // relate_data =this.getNodeListById(data.id);
-
- // //task一条分支,
- // if(relate_data.length==1){
- // agreeTo=this.makeTransitionToName(relate_data[0],1);
- // rejectTo=this.makeTransitionToName(relate_data[0],2)
- // }
- //
- // //task两条分支,一条同意,一条退回
- // if(relate_data.length==2){
- // var line1,line2,node1,node2;
- // node1=relate_data[0];node2=relate_data[1];
- // line2=this.getLine(data.id,relate_data[1].id)
- // line1=this.getLine(data.id,relate_data[0].id);
- //
- // if(line1.id==line2.id){
- // var lines=this.getLineListById(data.id);
- // line1=lines[0];
- // line2=lines[1];
- // }
- //
- // if(line2.status=="reject"){
- // agreeTo=this.makeTransitionToName(node1,1);
- // rejectTo=this.makeTransitionToName(node2,0)
- // }else if(line1.status=="reject"){
- // agreeTo=this.makeTransitionToName(node2,1)
- // rejectTo=this.makeTransitionToName(node1,0)
- // }else{
- // alert("出错了!1111")
- // }
- // }
- // }
-
- //
- // if(agreeNode){agreeTo=agreeNode}
- // if(rejectNode){rejectTo=rejectNode}
- //
-
- // 部门内审核
- if(data.taskChain&&data.taskChain==1&&!options.notTaskChain&&!transmitTo){
-
-
-
-
-
-
- //分支
- decision=this.createDomElement("decision",{name:(nodeid+"")});
- handler =this.createDomElement("handler",{class:"wd.core.bpm.decisionHandler.ChainQueryDecision"})
- decision.appendChild(handler);
-
- //service 服务
- string=document.createElement("string");
- string.setAttribute("value",
- (data.service_name.indexOf(".")==-1?data.service_name:data.service_name.split(".")[1]))
- field=document.createElement("field");
- field.setAttribute("name","service");
- field.appendChild(string);
- handler.appendChild(field);
- //decision-scope 字典
- string=document.createElement("string");
- var scope=this.makeScope( data.assignee,options.scope);
- string.setAttribute("value",scope)
- field=document.createElement("field");
- field.setAttribute("name","scope");
- field.appendChild(string);
- handler.appendChild(field)
-
- //decision-scopeParam,json-为json数据 指定字典
- if(data.scopeParam&&data.scopeParam!=""){
- string=document.createElement("string");
- string.setAttribute("value",data.scopeParam)
- field=document.createElement("field");
- field.setAttribute("name","scopeParam");
- field.appendChild(string);
- handler.appendChild(field)
- }
-
- // title
- string=document.createElement("string");
- string.setAttribute("value",data.message_title)
- field=document.createElement("field");
- field.setAttribute("name","title");
- field.appendChild(string);
- handler.appendChild(field)
- // content
- string=this.createDomElement("string",{value:data.message_content})
- field=document.createElement("field");
- field.setAttribute("name","content");
- field.appendChild(string);
- handler.appendChild(field);
-
-
-
-
-
- transition=this.createDomElement("transition",{to:nodeid+"chaintask"})
- decision.appendChild(transition)
- transition=this.createDomElement("transition",{name:"over",to:agreeTo})
- decision.appendChild(transition)
-
-
- result.push(decision.cloneNode(true))
-
-
- task=document.createElement("task");
- // task.setAttribute("form","@service{name:'"+data.service_name+"',dest:'"+data.service_dest+"'}@");
- if(this.isInForeachAndJoin(data.id)){
- task.setAttribute("candidate-groups","#{user}")
- }
-
- task.setAttribute("form",(function(){
- var result="";
- var service="",Iservice="",Cservice="";
- if(data.service_name){
-
- var tempAppName=null;
- /* 改 @service。Lin
- * 增加处理没有 dest= 的 -- 不生成 dest="undefined"
- var temp=("@service{name:'"+data.service_name+"',dest:'"+data.service_dest+"'"
- +((data.service_param)?(",param:{"+data.service_param+"}"):(""))
- +"}@")
- */ var temp = "<serv.ss name='"+ data.service_name +"'"+
- ((data.service_dest)? (" dest='"+ data.service_dest +"'") : "") +
- ((data.service_param)? (" parm='{"+ data.service_param +"}'") : "") +"/>";
- service=this.translateURL(temp,tempAppName);
- }
- service=eval("("+service+")")
- //{service:{name:'bpm_wdzy_zzy_tj',dest:'jw.zy.wczy',width:697,height:445,title:'完成作业'}}
- result="{service:{name:'"+data.service_name+"',dest:'"+data.service_dest+"'"
- +(data.service_param?(",param:{"+data.service_param+"}" ):"")
- +(",width:"+service.width)
- +(",height:"+service.height)
- +(",title:'"+service.title+"'")
- +(data.maxHeight?(",maxHeight:{"+data.maxHeight+"}"):"")
- +(data.minHeight?(",minHeight:{"+data.minHeight+"}"):"")
- +"}}"
-
- return result
- }).apply(this)
- )
-
-
- task.setAttribute("name",nodeid+"chaintask");
- assignment_handler=document.createElement("assignment-handler");
- assignment_handler.setAttribute("class","ss.bpm.asg.TaskAsg");
- // service
- string=document.createElement("string");
- string.setAttribute("value",
- (data.service_name.indexOf(".")==-1?data.service_name:data.service_name.split(".")[1]))
- field=document.createElement("field");
- field.setAttribute("name","servName");
- field.appendChild(string);
- assignment_handler.appendChild(field)
- // form
- string=this.createDomElement("string",{value:(function(){
- var result="";
- var service="",Iservice="",Cservice="";
- if(data.service_name){
- var tempAppName=null;
- /* 改 @service。Lin
- var temp=("@service{name:'"+data.service_name+"',dest:'"+data.service_dest+"'"
- +((data.service_param)?(",param:{"+data.service_param+"}"):(""))
- +"}@")
- */ var temp = "<serv.ss name='"+ data.service_name +"'"+
- ((data.service_dest)? (" dest='"+ data.service_dest +"'") : "") +
- ((data.service_param)? (" parm='{"+ data.service_param +"}'") : "") +"/>";
- service=this.translateURL(temp,tempAppName);
- }
-
- if(data.Cservice_name){
- var tempAppName=null;
- /* 改 @service。Lin
- var temp=("@service{name:'"+data.Cservice_name
- +"',dest:'"+data.Cservice_dest+"'"
- +((data.Cservice_param)?(",param:{"+data.Cservice_param+"}"):(""))
- +"}@")
- */ var temp = "<serv.ss name='"+ data.Cservice_name +"'"+
- ((data.Cservice_dest)? (" dest='"+ data.Cservice_dest +"'") : "") +
- ((data.Cservice_param)? (" parm='{"+ data.Cservice_param +"}'") : "") +"/>";
- Cservice=this.translateURL(temp,tempAppName);
- }
-
- if(data.Iservice_name){
- var tempAppName=null;
- /* 改 @service。Lin
- var temp=(("@service{name:'"+data.Iservice_name+"',dest:'"
- +data.Iservice_dest+"'"
- +((data.Iservice_param)?(",param:{"+data.Iservice_param+"}"):(""))
- +"}@"))
- */ var temp = "<serv.ss name='"+ data.Iservice_name +"'"+
- ((data.Iservice_dest)? (" dest='"+ data.Iservice_dest +"'") : "") +
- ((data.Iservice_param)? (" parm='{"+ data.Iservice_param +"}'") : "") +"/>";
- Iservice=this.translateURL(temp,tempAppName);
- }
-
- result="{service:"+service
- +(!Cservice?"":(",Cservice:"+Cservice))
- +(!Iservice?"":(",Iservice:"+Iservice))
- +"}"
- // result=JSON.stringify(eval("("+result+")"))
- // result=result.replace(/&/,"&")
- return result
- }).apply(this)})
- field=document.createElement("field");
- field.setAttribute("name","handleUrl");
- field.appendChild(string);
- assignment_handler.appendChild(field);
- // scope
- string=document.createElement("string");
- var scope=this.makeScope( data.assignee);
- string.setAttribute("value",scope)
- field=document.createElement("field");
- field.setAttribute("name","dictName");
- field.appendChild(string);
- assignment_handler.appendChild(field)
-
- // scopeParam
- if(data.scopeParam&&data.scopeParam!=""){
- string=document.createElement("string");
- string.setAttribute("value",data.scopeParam)
- field=document.createElement("field");
- field.setAttribute("name","scopeParm");
- field.appendChild(string);
- assignment_handler.appendChild(field);
- }
- // title
- string=document.createElement("string");
- string.setAttribute("value",data.message_title)
- field=document.createElement("field");
- field.setAttribute("name","msgTitle");
- field.appendChild(string);
- assignment_handler.appendChild(field)
- // content
- string=this.createDomElement("string",{value:data.message_content})
- field=document.createElement("field");
- field.setAttribute("name","msgCont");
- field.appendChild(string);
- assignment_handler.appendChild(field);
- // desc
- var descMessage=this.generalDesc(data);
- string=this.createDomElement("string",{value:descMessage})
- field=document.createElement("field");
- field.setAttribute("name","nodeParm");
- field.appendChild(string);
- assignment_handler.appendChild(field);
-
- //beforeservice
- if(data.Bservice_name&&data.Bservice_name.length>0){
- var bservice=data.Bservice_name
- // bservice=((bservice.indexOf(".")==-1)?(getURLParam("thisAppName")+"."+bservice):(bservice))
- string=this.createDomElement("string",{value:bservice})
- field=document.createElement("field");
- field.setAttribute("name","b4ServName");
- field.appendChild(string);
- assignment_handler.appendChild(field);
- }
-
- // taskNo
- //部门审核,以后可作扩展。。。。
- string=this.createDomElement("string",{value:"部门内审核"});
- field=this.createDomElement("field",{name:'chain'});
- field.appendChild(string);
- assignment_handler.appendChild(field);
-
-
-
-
- task.appendChild(assignment_handler);
-
- //<on event="end">
- // <event-listener class="wd.core.bpm.eventlistener.CommonEventListener">
- // <field name="action">
- // <string value="completeTask" />
- // </field>
- // </event-listener>
- //</on>
- on=document.createElement("on");
- on.setAttribute("event","end");
- event_listener=document.createElement("event-listener");
- event_listener.setAttribute("class","ss.bpm.BpmListener")
- field=document.createElement("field");
- field.setAttribute("name","actnType");
- string=document.createElement("string");
- string.setAttribute("value","completeTask")
- field.appendChild(string);
- event_listener.appendChild(field)
-
- //taskNo
- string=document.createElement("string");
- string.setAttribute("value",data.step||0)
- field=document.createElement("field");
- field.setAttribute("name","taskNo");
- field.appendChild(string);
- event_listener.appendChild(field);
-
- //afterserice
- if(data.Aservice_name&&data.Aservice_name.length>0){
- string=document.createElement("string");
- var aservice=data.Aservice_name;
- // aservice=((aservice.indexOf(".")==-1)?(getURLParam("thisAppName")+"."+aservice):(aservice))
- string.setAttribute("value",aservice)
- field=document.createElement("field");
- field.setAttribute("name","servName");
- field.appendChild(string);
- event_listener.appendChild(field);
- }
-
- on.appendChild(event_listener);
- task.appendChild(on);
-
- // //agree
- transition=this.createDomElement("transition",{name:"agree",to:(nodeid+"CirculationDecision")})
- //退回同意
- // if(data.duedatetype==2){
- // var timer=this.createDomElement("timer",{duedate:this.calculateDueTime(data)})
- // transition.appendChild(timer)
- // }
- task.appendChild(transition);
- //reject
- transition=this.createDomElement("transition",{name:"reject",to:rejectTo})
- task.appendChild(transition);
-
-
-
- //退回定时
- // if(data.duedatetype==1){
- // var timer=this.createDomElement("timer",{duedate:this.calculateDueTime(data)})
- // transition.appendChild(timer)
- // }
- //
- result.push(task.cloneNode(true))
-
- decision=this.createDomElement("decision",{name:(nodeid+"CirculationDecision")});
- handler =this.createDomElement("handler",{class:"wd.core.bpm.decisionHandler.CirculationDecision"})
- decision.appendChild(handler);
-
- transition=this.createDomElement("transition",{to:nodeid+""})
- decision.appendChild(transition)
- transition=this.createDomElement("transition",{name:"finish",to:nodeid})
- decision.appendChild(transition)
-
- result.push(decision.cloneNode(true))
-
- //非部门内审核
- }else{
-
-
-
-
-
-
-
- var task,assignment_handler,field,string,on,event_listener;
- task=document.createElement("task");
- // task.setAttribute("form","@service{name:'"+data.service_name+"',dest:'"+data.service_dest+"'}@");
- if(this.isInForeachAndJoin(data.id)&&!options.noForeach){
- task.setAttribute("candidate-groups","#{user}")
- }
- if(options.candidateGroups){
- task.setAttribute("candidate-groups",options.candidateGroups)
- }
-
-
- task.setAttribute("form",(function(){
- var result="";
- var service="",Iservice="",Cservice="";
- if(data.service_name){
-
- var tempAppName=null;
- /* 改 @service。Lin
- var temp=("@service{name:'"+data.service_name+"',dest:'"+data.service_dest+"'"
- +((data.service_param)?(",param:{"+data.service_param+"}"):(""))
- +"}@")
- */ var temp = "<serv.ss name='"+ data.service_name +"'"+
- ((data.service_dest)? (" dest='"+ data.service_dest +"'") : "") +
- ((data.service_param)? (" parm='{"+ data.service_param +"}'") : "") +"/>";
- service=this.translateURL(temp,tempAppName);
- // } // 再移到 return result 前,支持执行节点,<task 里写 <b4Serv,且不写 <func。Lin
- if(!service||service.length==0){
- console.log("服务或部件不存在:"+temp); // ("部件不存在:"+。Lin
- throw "服务或部件不存在:"+temp; // "部件不存在:"+。Lin
-
- }
-
- service=eval("("+service+")")
- //{service:{name:'bpm_wdzy_zzy_tj',dest:'jw.zy.wczy',width:697,height:445,title:'完成作业'}}
- result="{service:{name:'"+data.service_name+"',dest:'"+data.service_dest+"'"
- +(data.service_param?(",param:{"+data.service_param+"}" ):"")
- +(",width:"+service.width)
- +(",height:"+service.height)
- +(",title:'"+service.title+"'")
- +(data.maxHeight?(",maxHeight:{"+data.maxHeight+"}"):"")
- +(data.minHeight?(",minHeight:{"+data.minHeight+"}"):"")
- +"}}"
- } // 再括到这,支持执行节点,<task 里写 <b4Serv,且不写 <func。Lin
- return result
- }).apply(this)
- )
-
-
- task.setAttribute("name",nodeid);
- assignment_handler=document.createElement("assignment-handler");
- assignment_handler.setAttribute("class","ss.bpm.asg.TaskAsg");
- // service
- string=document.createElement("string");
- string.setAttribute("value",
- /* 再改,支持执行节点 -- <task 里写 <b4Serv,且不写 <func。Lin
- * 不去掉 "ss.",服务名不拆分 -- 不支持多个应用了
- (data.service_name.indexOf(".")==-1?data.service_name:data.service_name.split(".")[1]))
- */ (data.service_name)? data.service_name : "");
- field=document.createElement("field");
- field.setAttribute("name","servName");
- field.appendChild(string);
- assignment_handler.appendChild(field)
- // form
- string=this.createDomElement("string",{value:(function(){
- var result="";
- var service="",Iservice="",Cservice="",Fservice="";
- if(data.service_name){
- var tempAppName=null;
- /* 改 @service。Lin
- var temp=("@service{name:'"+data.service_name+"',dest:'"+data.service_dest+"'"
- +((data.service_param)?(",param:{"+data.service_param+"}"):(""))
- +"}@")
- */ var temp = "<serv.ss name='"+ data.service_name +"'"+
- ((data.service_dest)? (" dest='"+ data.service_dest +"'") : "") +
- ((data.service_param)? (" parm='{"+ data.service_param +"}'") : "") +"/>";
- service=this.translateURL(temp,tempAppName);
- }
-
- if(data.Cservice_name){
- var tempAppName=null;
- /* 改 @service。Lin
- var temp=("@service{name:'"+data.Cservice_name
- +"',dest:'"+data.Cservice_dest+"'"
- +((data.Cservice_param)?(",param:{"+data.Cservice_param+"}"):(""))
- +"}@")
- */ var temp = "<serv.ss name='"+ data.Cservice_name +"'"+
- ((data.Cservice_dest)? (" dest='"+ data.Cservice_dest +"'") : "") +
- ((data.Cservice_param)? (" parm='{"+ data.Cservice_param +"}'") : "") +"/>";
- Cservice=this.translateURL(temp,tempAppName);
- }
-
- if(data.Iservice_name){
- var tempAppName=null;
- /* 改 @service。Lin
- var temp=(("@service{name:'"+data.Iservice_name+"',dest:'"
- +data.Iservice_dest+"'"
- +((data.Iservice_param)?(",param:{"+data.Iservice_param+"}"):(""))
- +"}@"));
- */ var temp = "<serv.ss name='"+ data.Iservice_name +"'"+
- ((data.Iservice_dest)? (" dest='"+ data.Iservice_dest +"'") : "") +
- ((data.Iservice_param)? (" parm='{"+ data.Iservice_param +"}'") : "") +"/>";
- Iservice=this.translateURL(temp,tempAppName);
- }
- if(data.Fservice_name){
- var tempAppName=null;
- /* 改 @service。Lin
- var temp=(("@service{name:'"+data.Fservice_name+"',dest:'"
- +data.Fservice_dest+"'"
- +((data.Fservice_param)?(",param:{"+data.Fservice_param+"}"):(""))
- +"}@"))
- */ var temp ="<serv.ss name='"+ data.Fservice_name +"'"+
- ((data.Fservice_dest)? (" dest='"+ data.Fservice_dest +"'") : "") +
- ((data.Fservice_param)? (" parm='{"+ data.Fservice_param +"}'") : "") +"/>";
- Fservice=this.translateURL(temp,tempAppName);
- }
- /* 再改,支持执行节点 -- <task 里写 <b4Serv,且不写 <func。Lin
- result="{service:"+service
- +(!Cservice?"":(",Cservice:"+Cservice))
- +(!Iservice?"":(",Iservice:"+Iservice))
- +(!Fservice?"":(",Fservice:"+Fservice))
- +"}"
- */
- if (service) {
- result = "{service:" + service +
- ((!Cservice)? "" : (",Cservice:"+ Cservice)) +
- ((!Iservice)? "" : (",Iservice:"+ Iservice)) +
- ((!Fservice)? "" : (",Fservice:"+ Fservice)) +"}";
- } else {
- result = "{}";
- }
- return result
- }).apply(this)})
- field=document.createElement("field");
- field.setAttribute("name","handleUrl");
- field.appendChild(string);
- assignment_handler.appendChild(field);
- // scope
- string=document.createElement("string");
- var scope=this.makeScope( data.assignee,options.scope);
- string.setAttribute("value",scope)
- field=document.createElement("field");
- field.setAttribute("name","dictName");
- field.appendChild(string);
- assignment_handler.appendChild(field)
- // scopeParam
- if(data.scopeParam&&data.scopeParam!=""){
- string=document.createElement("string");
- string.setAttribute("value",data.scopeParam)
- field=document.createElement("field");
- field.setAttribute("name","scopeParm");
- field.appendChild(string);
- assignment_handler.appendChild(field);
- }
- // title
- string=document.createElement("string");
- string.setAttribute("value",data.message_title?data.message_title:"")
- field=document.createElement("field");
- field.setAttribute("name","msgTitle");
- field.appendChild(string);
- assignment_handler.appendChild(field)
- // content
- string=this.createDomElement("string",{value:data.message_content?data.message_content:""})
- field=document.createElement("field");
- field.setAttribute("name","msgCont");
- field.appendChild(string);
- assignment_handler.appendChild(field);
- // desc
- var descMessage=this.generalDesc(data);
- string=this.createDomElement("string",{value:descMessage})
- field=document.createElement("field");
- field.setAttribute("name","nodeParm");
- field.appendChild(string);
- assignment_handler.appendChild(field);
- //beforeservice
- if(data.Bservice_name&&data.Bservice_name.length>0){
- var bservice=data.Bservice_name
- // bservice=((bservice.indexOf(".")==-1)?(getURLParam("thisAppName")+"."+bservice):(bservice))
- string=this.createDomElement("string",{value:bservice})
- field=document.createElement("field");
- field.setAttribute("name","b4ServName");
- field.appendChild(string);
- assignment_handler.appendChild(field);
- }
- if(data.taskChain&&data.taskChain==1&&!options.nochain){
- //部门审核,以后可作扩展。。。。
- string=this.createDomElement("string",{value:"部门内审核"});
- field=this.createDomElement("field",{name:'chain'});
- field.appendChild(string);
- assignment_handler.appendChild(field);
- }
- task.appendChild(assignment_handler);
- //<on event="end">
- // <event-listener class="wd.core.bpm.eventlistener.CommonEventListener">
- // <field name="action">
- // <string value="completeTask" />
- // </field>
- // </event-listener>
- //</on>
- on=document.createElement("on");
- on.setAttribute("event","end");
- event_listener=document.createElement("event-listener");
- event_listener.setAttribute("class","ss.bpm.BpmListener")
- field=document.createElement("field");
- field.setAttribute("name","actnType");
- string=document.createElement("string");
- string.setAttribute("value","completeTask")
- field.appendChild(string);
- event_listener.appendChild(field)
- //taskNo
- string=document.createElement("string");
- string.setAttribute("value",data.step||0)
- field=document.createElement("field");
- field.setAttribute("name","taskNo");
- field.appendChild(string);
- event_listener.appendChild(field);
- //afterserice
- if(data.Aservice_name&&data.Aservice_name.length>0){
- string=document.createElement("string");
- var aservice=data.Aservice_name;
- // aservice=((aservice.indexOf(".")==-1)?(getURLParam("thisAppName")+"."+aservice):(aservice))
- string.setAttribute("value",aservice)
- field=document.createElement("field");
- field.setAttribute("name","servName");
- field.appendChild(string);
- event_listener.appendChild(field);
- }
- on.appendChild(event_listener);
- task.appendChild(on);
- // if(this.hasNextNode(data.id)){
- // //非部门内审核
- // //task一条分支,
- // if(relate_data.length==1){
- // agreeTo=this.makeTransitionToName(relate_data[0],1);
- // rejectTo=this.makeTransitionToName(relate_data[0],2)
- // }
- // //task两条分支,一条同意,一条退回
- // if(relate_data.length==2){
- // var line1,line2,node1,node2;
- // node1=relate_data[0];node2=relate_data[1];
- // line2=this.getLine(data.id,relate_data[1].id)
- // line1=this.getLine(data.id,relate_data[0].id);
- // if(line1.id==line2.id){
- // var lines=this.getLineListById(data.id);
- // line1=lines[0];
- // line2=lines[1];
- // }
- //
- //
- // if(line2.status=="reject"){
- // // agree:node1 reject:node2
- // agreeTo=this.makeTransitionToName(node1,1);
- // rejectTo=this.makeTransitionToName(node2,0)
- // }else if(line1.status=="reject"){
- // //agree:node2 reject:node1
- // agreeTo=this.makeTransitionToName(node2,1)
- // rejectTo=this.makeTransitionToName(node1,0)
- // }else{
- // alert("出错了!2222"+data.name+" "+data.id)
- // }
- // }
- //并行task,同意和退后都是向前
- if(this.isInForeachAndJoin(data.id)){
- rejectTo=agreeTo;
- }
- // //agree
- if(false&&data.subprocess_key&&data.usesubprocess&&data.usesubprocess==1){
- //动态子流程
- transition=this.createDomElement("transition",{name:"agree",to:(nodeid+"subprocessdecision")})
- var decision,handler,field,string;
- decision=document.createElement("decision");
- decision.setAttribute("name",nodeid+"subprocessdecision");
- handler=document.createElement("handler");
- handler.setAttribute("class","ss.bpm.dec.impl.SubbpmDecHandle"); // ,"wd.core.bpm.decisionHandler.SubprocessDecision")。Lin
- // subprocesskey
- field=document.createElement("field");
- field.setAttribute("name","subbpmName"); // ,"subprocesskey")。Lin
- string=document.createElement("string");
- string.setAttribute("value",data.subprocess_key);
- field.appendChild(string);
- handler.appendChild(field);
- // startfunction
- if(data.subprocess_startfunction){
- field=document.createElement("field");
- field.setAttribute("name","subbpmServName"); // ,"startfunction")。Lin
- string=document.createElement("string");
- string.setAttribute("value",data.subprocess_startfunction);
- field.appendChild(string);
- handler.appendChild(field);
- }
- handler.appendChild(field);
- decision.appendChild(handler);
- var translate2
- // agree
- transition2=this.createDomElement("transition",{name:"agree",to:this.getEndNode()[0].agree_name});
- decision.appendChild(transition2)
- // reject
- transition2=this.createDomElement("transition",{name:"reject",to:this.getEndNode()[0].reject_name});
- decision.appendChild(transition2)
- // subprocess
- transition2=this.createDomElement("transition",{name:"subprocess",to:nodeid+"subprocess"});
- decision.appendChild(transition2)
- // back
- transition2=this.createDomElement("transition",{name:"back",to:nodeid});
- decision.appendChild(transition2)
- // default
- transition2=this.createDomElement("transition",{name:"default",to:agreeTo});
- decision.appendChild(transition2)
- transition2=this.createDomElement("transition",{to:agreeTo});
- decision.appendChild(transition2)
- result.push(decision)
- // <sub-process name="node_12subprocess" sub-process-key="DynamicProcess">
- // <parameter-in var="startfunction" subvar="Wenz_tj_Start_Cl_tj" />
- // <parameter-in var="endfunction" subvar="Wenz_tj_End_Cl_tj" />
- // <parameter-in var="subprocesskey" subvar="xw.cl_tj" />
- // <transition to="同意"/>
- // </sub-process>
- var subprocess=this.createDomElement("sub-process",{name:(nodeid+"subprocess"),"sub-process-key":"DynamicProcess",outcome:"#{subprocessresult}"})
- var parameter_in,parameter_out;
- parameter_in=this.createDomElement("parameter-in",{"var":"subbpmName",subvar:data.subprocess_key}) // {"var":"subprocesskey",。Lin
- subprocess.appendChild(parameter_in)
- if(data.subprocess_startfunction){
- parameter_in=this.createDomElement("parameter-in",{"var":"subbpmServName",subvar:data.subprocess_startfunction}) // {"var":"startfunction",。Lin
- subprocess.appendChild(parameter_in)
- }
- if(data.subprocess_endfunction){
- parameter_in=this.createDomElement("parameter-in",{"var":"endfunction",subvar:data.subprocess_endfunction}) // {"var":"endfunction",。先不改,没用到。Lin
- subprocess.appendChild(parameter_in)
- }
- var transition2;
- transition2=this.createDomElement("transition",{to:agreeTo});
- subprocess.appendChild(transition2);
- transition2=this.createDomElement("transition",{name:"agree",to:agreeTo});
- subprocess.appendChild(transition2);
- result.push(subprocess)
- transition=this.createDomElement("transition",{name:"agree",to:(nodeid+"subprocessdecision")})
- //定时同意
- // if(data.duedatetype==2){
- // var timer=this.createDomElement("timer",{duedate:this.calculateDueTime(data)})
- // transition.appendChild(timer)
- // }
- task.appendChild(transition);
- }else{
- transition=this.createDomElement("transition",{name:"agree",to:agreeTo})
- // //定时同意
- // if(data.duedatetype==2){
- // var timer=this.createDomElement("timer",{duedate:this.calculateDueTime(data)})
- // transition.appendChild(timer)
- // }
- task.appendChild(transition);
- }
- //reject
- transition=this.createDomElement("transition",{name:"reject",to:rejectTo})
- task.appendChild(transition);
- if(transmitTo){
- transition=this.createDomElement("transition",{name:"transmit",to:transmitTo})
- task.appendChild(transition);
- }
- // //退回定时
- // if(data.duedatetype==1){
- // var timer=this.createDomElement("timer",{duedate:this.calculateDueTime(data)})
- // transition.appendChild(timer)
- // }
- result.push(task.cloneNode(true))
- // }
- }
- return result
- }
- this.createSecondTask=function(data){
- var nodeid=data.id;
- var result=[];
- //声明所需要变量666666
- var task,assignment_handler,field,string,on,event_listener,decision,handler,transition,agreeTo,rejectTo,relate_data;
- var allnodes=this.getNoRepeatNameObj()["nodes"];
- var relatelines=this.getLineListById(data.id);
- // if(data.rejectnode&&nodeid.indexOf("rejectnode")==-1){
- // rejectTo=nodeid+"rejectnode";
- // }
- //计算已经画好的线
- for(var i=0 ;i<relatelines.length;i++){
- var line=relatelines[i];
- if("reject"==line.status){
- rejectTo=this.makeTransitionToName(allnodes[line.to],0)
- }else{
- agreeTo=this.makeTransitionToName(allnodes[line.to],1)
- }
- }
- //退回处理
- if(!rejectTo&&this.isInForeachAndJoin(data.id)){
- // rejectTo=this.makeTransitionToName(allnodes[line.to],1);
- rejectTo=this.getConcurrentyJoinId(nodeid);
- }
- //没有画退回线,但是画了同意线
- if(!rejectTo){
- rejectTo=this.makeTransitionToName(null,2)
- }
- if(!agreeTo&&!rejectTo){
- alert("计算错误")
- return null;
- }
- //agreedecision
- decision=this.createDomElement("decision",{name:(nodeid+"AgreeDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.AgrDec"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:agreeTo})
- decision.appendChild(transition)
- result.push(decision.cloneNode(true))
- //rejectdecision
- decision=this.createDomElement("decision",{name:(nodeid+"RejectDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.RejDec"})
- decision.appendChild(handler);
- /* 再改,节点里的 退回处理 有错,导致死循环。Lin
- * 部门审(node_13)里使用 退回处理 到 执行节点(node_16)
- * <decision name="node_13RejectDecision">
- * <transition to="退回"/>。(错了。应该是 "node_16"
- * <transition name="rejectnode" to="node_13RejectNode"/>。(多了
- * <task form="" name="node_13RejectNode">。(多了
- * <transition name="agree" to="node_13RejectNodeDecision"/>
- * <transition name="reject" to="node_13RejectNodeDecision"/>
- * <decision name="node_13RejectNodeDecision">。(多了
- * <transition to="node_13ChainFinishDecision"/>
- *
- * <decision name="node_13ChainFinishDecision">
- * <transition to="node_13ChainStartDecision"/>
- * <decision name="node_13ChainStartDecision">
- * <transition name="agree" to="node_13AgreeDecision"/>
- * <transition name="reject" to="node_13RejectDecision"/>。(又回到了刚开始的 "node_13RejectDecision"
- /// 这里生成了 <transition to="退回"/>。(错了。应该是 "node_16"。Lin
- transition=this.createDomElement("transition",{to:rejectTo})
- ///
- decision.appendChild(transition)
- if(data.rejectnode){
- /// 这里生成了 <transition name="rejectnode" to="node_13RejectNode"/>。(多了。Lin
- transition=this.createDomElement("transition",{name:"rejectnode",to:nodeid+"RejectNode"})
- ///
- decision.appendChild(transition);
- }
- result.push(decision.cloneNode(true))
- if(data.rejectnode){
- var taskData=this.getNoRepeatNameObj()["nodes"];
- //rejectnodetask
- /// 这里生成了 <task form="" name="node_13RejectNode">。(多了。Lin
- result.push(this.createTask(taskData[data.rejectnode],nodeid+"RejectNode",
- nodeid+"RejectNodeDecision",nodeid+"RejectNodeDecision",
- {notTaskChain:true,
- noForeach:true})[0]);
- ///
- // //rejectnodedecision
- /// 这里生成了 <decision name="node_13RejectNodeDecision">。(多了。Lin
- decision=this.createDomElement("decision",{name:(nodeid+"RejectNodeDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.RejNodeDec"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:nodeid+"ChainFinishDecision"})
- decision.appendChild(transition)
- ///
- result.push(decision.cloneNode(true))
- }
- */
- ///// Lin
- /// <transition to="退回"/> 改为 <transition to="node_16"/>。Lin
- // rejectTo 值为 "退回"
- if (data.rejectnode) {
- transition = this.createDomElement("transition", {to:data.rejectnode})
- } else {
- transition = this.createDomElement("transition", {to:rejectTo})
- }
- ///
- decision.appendChild(transition)
- result.push(decision.cloneNode(true))
- /////
- //startdecision
- decision=this.makeStartDecision(data,nodeid+"ChainStartDecision");
- result.push(decision.cloneNode(true))
- //chainstartdecision
- decision=this.createDomElement("decision",{name:(nodeid+"ChainStartDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.ChainDec"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:nodeid+"SubprocessDecision"})
- decision.appendChild(transition);
- transition=this.createDomElement("transition",{name:"agree",to:nodeid+"AgreeDecision"})
- decision.appendChild(transition);
- transition=this.createDomElement("transition",{name:"reject",to:nodeid+"RejectDecision"})
- decision.appendChild(transition)
- result.push(decision.cloneNode(true))
- //subprocessdecision
- decision=this.createDomElement("decision",{name:(nodeid+"SubprocessDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.SubbpmDec"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:nodeid+"FirstTaskStartDecision"})
- decision.appendChild(transition);
- transition=this.createDomElement("transition",{name:"subprocess",to:(nodeid+"Subprocess")})
- decision.appendChild(transition);
- result.push(decision.cloneNode(true))
- //subprocess
- var subprocess=this.createDomElement("sub-process",{name:(nodeid+"Subprocess"),"sub-process-key":"DynamicProcess",outcome:"#{subprocessresult}"})
- var parameter_in,parameter_out;
- parameter_in=this.createDomElement("parameter-in",{"var":"subbpmName",subvar:data.subprocess_key}) // {"var":"subprocesskey",。Lin
- subprocess.appendChild(parameter_in)
- if(data.subprocess_startfunction){
- parameter_in=this.createDomElement("parameter-in",{"var":"subbpmServName",subvar:data.subprocess_startfunction}) // {"var":"startfunction",。Lin
- subprocess.appendChild(parameter_in)
- }
- if(data.subprocess_endfunction){
- parameter_in=this.createDomElement("parameter-in",{"var":"endfunction",subvar:data.subprocess_endfunction}) // {"var":"endfunction",。先不改,没用到。Lin
- subprocess.appendChild(parameter_in)
- }
- var transition2;
- transition2=this.createDomElement("transition",{to:(nodeid+"FirstTaskStartDecision")});
- subprocess.appendChild(transition2);
- transition2=this.createDomElement("transition",{name:"agree",to:(nodeid+"FirstTaskStartDecision")});
- subprocess.appendChild(transition2);
- result.push(subprocess.cloneNode(true));
- //firsttaskstartdecision
- decision=this.createDomElement("decision",{name:(nodeid+"FirstTaskStartDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.FstTaskDec"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:nodeid+"FirstTask"})
- decision.appendChild(transition)
- result.push(decision.cloneNode(true))
- //firsttask
- result.push(this.createTask(data,nodeid+"FirstTask",nodeid+"SecondSubprocessDecision",nodeid+"SecondSubprocessDecision",{notTaskChain:true})[0]);
- //secondsubprocessdecision
- decision=this.createDomElement("decision",{name:(nodeid+"SecondSubprocessDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.SndSubbpmDec"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:nodeid+"FirstTaskFinishDecision"})
- decision.appendChild(transition);
- transition=this.createDomElement("transition",{name:"subprocess",to:(nodeid+"SecondSubprocess")})
- decision.appendChild(transition);
- result.push(decision.cloneNode(true))
- //secondsubprocess
- var subprocess=this.createDomElement("sub-process",{name:(nodeid+"SecondSubprocess"),"sub-process-key":"DynamicProcess",outcome:"#{subprocessresult}"})
- var parameter_in,parameter_out;
- parameter_in=this.createDomElement("parameter-in",{"var":"subbpmName",subvar:data.subprocess_key}) // {"var":"subprocesskey",。Lin
- subprocess.appendChild(parameter_in)
- if(data.subprocess_startfunction){
- parameter_in=this.createDomElement("parameter-in",{"var":"subbpmServName",subvar:data.subprocess_startfunction}) // {"var":"startfunction",。Lin
- subprocess.appendChild(parameter_in)
- }
- if(data.subprocess_endfunction){
- parameter_in=this.createDomElement("parameter-in",{"var":"endfunction",subvar:data.subprocess_endfunction}) // {"var":"endfunction",。先不改,没用到。Lin
- subprocess.appendChild(parameter_in)
- }
- var transition2;
- transition2=this.createDomElement("transition",{to:(nodeid+"FirstTaskFinishDecision")});
- subprocess.appendChild(transition2);
- transition2=this.createDomElement("transition",{name:"agree",to:(nodeid+"FirstTaskFinishDecision")});
- subprocess.appendChild(transition2);
- transition2=this.createDomElement("transition",{name:"reject",to:(nodeid+"FirstTaskFinishDecision")});
- subprocess.appendChild(transition2);
- result.push(subprocess);
- //firsttaskfinishdecision
- decision=this.createDomElement("decision",{name:(nodeid+"FirstTaskFinishDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.FstTaskEndDec"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:nodeid+"SecondTask"})
- decision.appendChild(transition);
- transition=this.createDomElement("transition",{name:"agree",to:nodeid+"AgreeDecision"})
- decision.appendChild(transition);
- transition=this.createDomElement("transition",{name:"reject",to:nodeid+"RejectDecision"})
- decision.appendChild(transition);
- transition=this.createDomElement("transition",{name:"chaincontinue",to:nodeid+"ChainFinishDecision"})
- decision.appendChild(transition);
- result.push(decision.cloneNode(true))
- //secondtask
- result.push(this.createTask(data,nodeid+"SecondTask",nodeid+"SecondTaskFinishDecision",nodeid+"SecondTaskFinishDecision",
- {notTaskChain:true,
- scope:"sqry",
- nochain:true})[0]);
- //secondtaskfinishdecision
- decision=this.createDomElement("decision",{name:(nodeid+"SecondTaskFinishDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.SndTaskEndDec"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{name:"chaincontinue",to:nodeid+"ChainFinishDecision"})
- decision.appendChild(transition);
- transition=this.createDomElement("transition",{name:"agree",to:nodeid+"AgreeDecision"})
- decision.appendChild(transition);
- transition=this.createDomElement("transition",{name:"reject",to:nodeid+"RejectDecision"})
- decision.appendChild(transition);
- result.push(decision.cloneNode(true));
- //chainfinishdecision
- decision=this.createDomElement("decision",{name:(nodeid+"ChainFinishDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.ChainEndDec"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:nodeid+"ChainStartDecision"})
- decision.appendChild(transition);
- result.push(decision.cloneNode(true));
- // console.log(result)
- return result
- }
- this.getTask=function(){
- var temp=document.createElement("temp");
- var taskData=this.getNoRepeatNameObj()["nodes"];
- var startnode=this.getStartNode();
- for(var key in taskData) {
- if(taskData[key].type=="task"){
- var data=taskData[key];
- if(!this.hasNextNode(data.id)){continue}
- if(true||startnode.secondpersion&&startnode.secondpersion==1){
- var t=this.createSecondTask(data);
- // console.log(t)
- if(t&&t.length>0){
- for(var i=0;i<t.length;i++){
- temp.appendChild(t[i])
- }
- }
- }else{
- var t=this.createTask(data);
- if(t&&t.length>0){
- if(data.rejectnode&&data.rejectnode!=""){
- var t2=this.createTask(taskData[data.rejectnode],data.id+"rejectnode",data.id,true);
- t=t.concat(t2)
- }
- for(var i=0;i<t.length;i++){
- temp.appendChild(t[i])
- }
- }
- }
- }
- }
- return temp.childNodes
- }
- this.getTransmit=function(){
- var temp=document.createElement("temp");
- var taskData=this.getNoRepeatNameObj()["nodes"];
- for(var key in taskData) {
- if(taskData[key].type=="transmit"){
- var data=taskData[key];
- var nodeid=data.id;
- var result=[];
- //声明所需要变量666666
- var field,string,on,event_listener,decision,handler,transition,agreeTo,rejectTo,relate_data;
- var allnodes=this.getNoRepeatNameObj()["nodes"];
- var relatelines=this.getLineListById(data.id);
- //计算已经画好的线
- for(var i=0 ;i<relatelines.length;i++){
- var line=relatelines[i];
- if("reject"==line.status){
- alert("我不可能会弹出来");
- }else{
- agreeTo=this.makeTransitionToName(allnodes[line.to],1)
- }
- }
- if(!agreeTo){
- console.log("节点\""+data.name+"\"没有画到线")
- return null;
- }
- //startdecision
- decision=this.makeStartDecision(data,nodeid+"CalculateDecision")
- temp.appendChild(decision.cloneNode(true));
- //calculatedecision
- decision=this.createDomElement("decision",{name:(nodeid+"CalculateDecision")});
- handler =this.createDomElement("handler",{class:"wd.core.bpm.group.transmit.CalculateDecision"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:nodeid+"Foreach"})
- decision.appendChild(transition);
- temp.appendChild(decision.cloneNode(true))
- //foreach
- var foreach,transition;
- foreach=document.createElement("foreach")
- foreach.setAttribute("name",data.id+"Foreach");
- foreach.setAttribute("in","#{"+data.id+"transmittaskUsers}")
- foreach.setAttribute("var",data.id+"transmittaskUser")
- transition=document.createElement("transition");
- transition.setAttribute("to",data.id+"FirstTask");
- foreach.appendChild(transition)
- temp.appendChild(foreach)
- //firsttask
- temp.appendChild(this.createTask(data,data.id+"FirstTask",data.id+"FirstTaskFinishDecision",data.id+"FirstTaskFinishDecision",
- {notTaskChain:true,
- transmitTo:data.id+"FirstTaskFinishDecision",
- candidateGroups:"#{"+data.id+"transmittaskUser}",
- scope:"env."+data.assignee}
- )[0]);
- //firsttaskfinishdecision
- decision=this.createDomElement("decision",{name:(nodeid+"FirstTaskFinishDecision")});
- handler =this.createDomElement("handler",{class:"wd.core.bpm.group.transmit.FirstTaskFinishDecision"})
- decision.appendChild(handler);
- // to secondtask
- transition=this.createDomElement("transition",{to:nodeid+"SecondTask"})
- decision.appendChild(transition);
- // to calculateDecision
- transition=this.createDomElement("transition",{name:"transmit",to:nodeid+"CalculateDecision"})
- decision.appendChild(transition);
- //agree
- transition=this.createDomElement("transition",{name:"agree",to:nodeid+"SecondTaskFinishDecision"})
- decision.appendChild(transition);
- //reject
- transition=this.createDomElement("transition",{name:"reject",to:nodeid+"SecondTaskFinishDecision"})
- decision.appendChild(transition);
- temp.appendChild(decision.cloneNode(true))
- //secondtask
- temp.appendChild(this.createTask(data,data.id+"SecondTask",
- data.id+"SecondTaskFinishDecision",data.id+"SecondTaskFinishDecision",
- {notTaskChain:true,transmitTo:data.id+"SecondTaskFinishDecision",scope:"sqry"})[0]);
- //secondtaskfinishdecision
- decision=this.createDomElement("decision",{name:(nodeid+"SecondTaskFinishDecision")});
- handler =this.createDomElement("handler",{class:"wd.core.bpm.group.transmit.SecondTaskFinishDecision"})
- decision.appendChild(handler);
- // to calculateDecision
- transition=this.createDomElement("transition",{name:"transmit",to:nodeid+"CalculateDecision"})
- decision.appendChild(transition);
- //agree
- transition=this.createDomElement("transition",{name:"agree",to:nodeid+"Join"})
- decision.appendChild(transition);
- //reject
- transition=this.createDomElement("transition",{name:"reject",to:nodeid+"Join"})
- decision.appendChild(transition);
- temp.appendChild(decision.cloneNode(true))
- //join
- var join,transition;
- join=document.createElement("join")
- join.setAttribute("multiplicity","#{"+data.id+"transmittaskUsersNum}")
- join.setAttribute("name",data.id+"Join");
- transition=document.createElement("transition");
- transition.setAttribute("to",data.id+"TransmitFinishDecision");
- join.appendChild(transition)
- temp.appendChild(join)
- //transmitfinishdecision
- var decision,handler,field,string,transition;
- decision=document.createElement("decision");
- decision.setAttribute("name",data.id+"TransmitFinishDecision");
- handler=document.createElement("handler");
- handler.setAttribute("class","wd.core.bpm.group.transmit.TransmitFinishHandler");
- decision.appendChild(handler);
- if(this.hasNextNode(data.id)){
- var relate_data=this.getNodeListById(data.id)
- for(var i=0;i<relate_data.length;i++){
- transition=document.createElement("transition");
- transition.setAttribute("to",this.makeTransitionToName(relate_data[i],1));
- join.appendChild(transition)
- }
- }
- temp.appendChild(join)
- decision.appendChild(transition)
- temp.appendChild(decision)
- //
- // //decision
- // var decision,handler,field,string,transition;
- // decision=document.createElement("decision");
- // decision.setAttribute("name",data.id);
- // handler=document.createElement("handler");
- // handler.setAttribute("class","wd.core.bpm.decisionHandler.TransmitCalculateForeachUserHandler");
- // decision.appendChild(handler);
- //
- // transition=document.createElement("transition")
- //
- // transition.setAttribute("to",data.id+"transmitforeach")
- // decision.appendChild(transition)
- //
- // temp.appendChild(decision)
- // //foreach
- // var foreach,transition;
- // foreach=document.createElement("foreach")
- // foreach.setAttribute("name",data.id+"transmitforeach");
- // foreach.setAttribute("in","#{"+data.id+"transmittaskUsers}")
- // foreach.setAttribute("var",data.id+"transmittaskUser")
- // transition=document.createElement("transition");
- // transition.setAttribute("to",data.id+"transmittask");
- // foreach.appendChild(transition)
- //
- // temp.appendChild(foreach)
- //
- // temp.appendChild(this.createTask(data,data.id+"transmittask",data.id+"transmitjoin",data.id+"transmitjoin",{notTaskChain:true,transmitTo:data.id})[0]);
- // //join
- // var join,transition;
- // join=document.createElement("join")
- // join.setAttribute("multiplicity","#{"+data.id+"transmittaskUsersNum}")
- // join.setAttribute("name",data.id+"transmitjoin");
- // transition=document.createElement("transition");
- // transition.setAttribute("to",data.id+"transmitefinishdecision");
- // join.appendChild(transition)
- //
- // temp.appendChild(join)
- // //decision
- // var decision,handler,field,string,transition;
- // decision=document.createElement("decision");
- // decision.setAttribute("name",data.id+"transmitefinishdecision");
- //
- // handler=document.createElement("handler");
- // handler.setAttribute("class","wd.core.bpm.decisionHandler.TransmitFinishHandler");
- // decision.appendChild(handler);
- //
- //
- //
- // if(this.hasNextNode(data.id)){
- // var relate_data=this.getNodeListById(data.id)
- // for(var i=0;i<relate_data.length;i++){
- // transition=document.createElement("transition");
- // transition.setAttribute("to",this.makeTransitionToName(relate_data[i],1));
- // join.appendChild(transition)
- //
- // }
- // }
- // temp.appendChild(join)
- //
- // decision.appendChild(transition)
- //
- // temp.appendChild(decision)
- }
- }
- return temp.childNodes
- }
- this.getSubProcess=function(){
- var aa=document.createElement("temp");
- var subprocessdata=this.getNoRepeatNameObj()["nodes"];
- for (var key in subprocessdata) {
- var data=subprocessdata[key]
- if(data.realtype=="subprocess"){
- var subprocess,transition,decision,field,string;
- //多个子流程
- // subprocesstype="multiple"
- if(data.subprocesstype&&data.subprocesstype=="multiple"){
- //startdesicion
- aa.appendChild(this.makeStartDecision(data,data.id+"StartSubprocessDecision"));
- var relate_data=this.getNodeListById(data.id);
- var transition,agreeTo,rejectTo,handler;
- //task一条分支,
- if(relate_data.length==1){
- agreeTo=this.makeTransitionToName(relate_data[0],1);
- }else{
- alert("子流程画图不正确")
- continue;
- }
- //StartSubprocessDecision
- decision=this.createDomElement("decision",{name:(data.id+"StartSubprocessDecision")});
- handler =this.createDomElement("handler",{class:"wd.core.bpm.group.subprocess.StartSubprocessDecision"})
- decision.appendChild(handler);
- //子流程结束
- transition=this.createDomElement("transition",{to:agreeTo+""})
- decision.appendChild(transition);
- //进入子流程
- transition=this.createDomElement("transition",{name:"subprocess",to:(data.id+"subprocess")})
- decision.appendChild(transition);
- aa.appendChild(decision.cloneNode(true));
- //subprocess
- var parameter_in;
- if(data.startfunction){
- subprocess=this.createDomElement("sub-process",{name:(data.id+"subprocess"),"sub-process-key":"DynamicProcess",outcome:"#{subprocessresult}"})
- parameter_in=this.createDomElement("parameter-in",{"var":"subbpmServName",subvar:data.startfunction}) // {"var":"startfunction",。Lin
- subprocess.appendChild(parameter_in)
- if(data.endfunction){
- parameter_in=this.createDomElement("parameter-in",{"var":"endfunction",subvar:data.endfunction}) // {"var":"endfunction",。先不改,没用到。Lin
- subprocess.appendChild(parameter_in)
- }
- }else{
- subprocess=this.createDomElement("sub-process",{name:data.id+"subprocess","sub-process-key":data.subprocesskey,outcome:"#{subprocessresult}"})
- }
- //传入子流程key
- parameter_in=this.createDomElement("parameter-in",{"var":"subbpmName",subvar:data.subprocesskey}) // {"var":"subprocesskey",。Lin
- subprocess.appendChild(parameter_in)
- transition=this.createDomElement("transition",{name:"agree",to:data.id+"EndSubprocessDecision"})
- subprocess.appendChild(transition);
- //reject
- transition=this.createDomElement("transition",{name:"reject",to:data.id+"EndSubprocessDecision"})
- subprocess.appendChild(transition);
- aa.appendChild(subprocess.cloneNode(true))
- //EndSubprocessDecision
- decision=this.createDomElement("decision",{name:(data.id+"EndSubprocessDecision")});
- handler =this.createDomElement("handler",{class:"wd.core.bpm.group.subprocess.EndSubprocessDecision"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:data.id+"StartSubprocessDecision"})
- decision.appendChild(transition);
- aa.appendChild(decision.cloneNode(true))
- }else{
- //单独子流程
- var parameter_in;
- if(data.startfunction){
- subprocess=this.createDomElement("sub-process",{name:(data.id),"sub-process-key":"DynamicProcess",outcome:"#{subprocessresult}"})
- parameter_in=this.createDomElement("parameter-in",{"var":"subbpmServName",subvar:data.startfunction}) // {"var":"startfunction",。Lin
- subprocess.appendChild(parameter_in)
- if(data.endfunction){
- parameter_in=this.createDomElement("parameter-in",{"var":"endfunction",subvar:data.endfunction}) // {"var":"endfunction",。先不改,没用到。Lin
- subprocess.appendChild(parameter_in)
- }
- }else{
- subprocess=this.createDomElement("sub-process",{name:data.id,"sub-process-key":data.subprocesskey,outcome:"#{subprocessresult}"})
- }
- //传入子流程key
- parameter_in=this.createDomElement("parameter-in",{"var":"subbpmName",subvar:data.subprocesskey}) // {"var":"subprocesskey",。Lin
- subprocess.appendChild(parameter_in)
- if(this.hasNextNode(data.id)){
- var relate_data=this.getNodeListById(data.id);
- var transition,agreeTo,rejectTo,handler;
- //task一条分支,
- if(relate_data.length==1){
- agreeTo=this.makeTransitionToName(relate_data[0],1);
- rejectTo=this.makeTransitionToName(relate_data[0],2)
- }
- //task两条分支,一条同意,一条退回
- if(relate_data.length==2){
- var line1,line2,node1,node2;
- node1=relate_data[0];node2=relate_data[1];
- line2=this.getLine(data.id,relate_data[1].id)
- line1=this.getLine(data.id,relate_data[0].id);
- if(line1.id==line2.id){
- var lines=this.getLineListById(data.id);
- line1=lines[0];
- line2=lines[1];
- }
- if(line2.status=="reject"){
- agreeTo=this.makeTransitionToName(node1,1);
- rejectTo=this.makeTransitionToName(node2,0)
- }else if(line1.status=="reject"){
- agreeTo=this.makeTransitionToName(node2,1)
- rejectTo=this.makeTransitionToName(node1,0)
- }else{
- alert("出错了!")
- }
- }
- if(this.isInForeachAndJoin(data.id)){
- rejectTo=this.getConcurrentyJoinId(data.id);
- }
- // //agree
- transition=this.createDomElement("transition",{name:"agree",to:agreeTo})
- subprocess.appendChild(transition);
- //reject
- transition=this.createDomElement("transition",{name:"reject",to:rejectTo})
- subprocess.appendChild(transition);
- }
- aa.appendChild(subprocess);
- }
- }
- }
- return aa.childNodes;
- }
- this.getForeach=function(){
- var aa=document.createElement("temp");
- var foreachdata=this.getNoRepeatNameObj()["nodes"];
- for (var key in foreachdata) {
- var data=foreachdata[key]
- if(data.realtype=="foreach"){
- var foreach,transition,decision,handler;
- var nodeid=data.id;
- //startdesicion
- aa.appendChild(this.makeStartDecision(data,data.id+"ForeachDecision"));
- //foreachDecision
- decision=this.createDomElement("decision",{name:(nodeid+"ForeachDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.EachDec"})
- decision.appendChild(handler);
- transition=this.createDomElement("transition",{to:nodeid+"Foreach"})
- decision.appendChild(transition);
- aa.appendChild(decision.cloneNode(true))
- foreach=document.createElement("foreach")
- foreach.setAttribute("name",data.id+"Foreach");
- foreach.setAttribute("in","#{"+data.id+"users}")
- foreach.setAttribute("var","user")
- foreach.appendChild(this.createDomElement("transition",{"to":(nodeid+"ConcurrencyStart")}))
- aa.appendChild(foreach)
- decision=this.createDomElement("decision",{name:(nodeid+"ConcurrencyStart")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.EachStartDec"})
- decision.appendChild(handler);
- if(this.hasNextNode(data.id)){
- var relate_data=this.getNodeListById(data.id)
- for(var i=0;i<relate_data.length;i++){
- decision.appendChild(this.createDomElement("transition",{"to":(this.makeTransitionToName(relate_data[i],1))}))
- }
- }
- aa.appendChild(decision);
- }
- }
- return aa.childNodes;
- }
- this.getFork=function(){
- var aa=document.createElement("temp");
- var forkdata=this.getNoRepeatNameObj()["nodes"];
- for (var key in forkdata) {
- data=forkdata[key]
- if(data.type=="fork"){
- var fork,transition;
- fork=document.createElement("fork")
- fork.setAttribute("name",data.id);
- if(this.hasNextNode(data.id)){
- var relate_data=this.getNodeListById(data.id)
- for(var i=0;i<relate_data.length;i++){
- transition=document.createElement("transition");
- transition.setAttribute("to",this.makeTransitionToName(relate_data[i],1));
- fork.appendChild(transition)
- }
- }
- aa.appendChild(fork)
- }
- }
- return aa.childNodes;
- }
- this.getJoin=function(){
- var aa=document.createElement("temp");
- var joindata=this.getNoRepeatNameObj()["nodes"];
- for (var key in joindata) {
- var data=joindata[key]
- if(data.type=="join"){
- var join,transition,nodeid,decision,handler;
- nodeid=data.id;
- decision=this.createDomElement("decision",{name:(nodeid)});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.EachEndDec"})
- decision.appendChild(handler);
- decision.appendChild(this.createDomElement("transition",{"to":(nodeid+"Join")}));
- aa.appendChild(decision);
- join=document.createElement("join")
- var foreachid=this.isInForeachAndJoin(nodeid)
- if(foreachid){
- join.setAttribute("multiplicity","#{"+foreachid+"taskNum}")
- }
- /// 增加,实现固定并行。Lin
- else {
- var fixEachid = this.rdFixEachId(nodeid);
- if (fixEachid)
- join.setAttribute("multiplicity", this.countFixeachNum(fixEachid));
- }
- ///
- join.setAttribute("name",nodeid+"Join");
- transition=document.createElement("transition");
- transition.setAttribute("to",data.id+"StartDecision");
- join.appendChild(transition);
- var agreeTo,rejectTo;
- if(this.hasNextNode(nodeid)){
- var relate_data=this.getNodeListById(nodeid)
- var relatelines=this.getLineListById(nodeid);
- for(var i=0;i<relatelines.length;i++){
- var line=relatelines[i];
- var toNode;
- for(var j=0;j<relate_data.length;j++){
- if(line.to==relate_data[j].id)
- toNode=relate_data[j];
- }
- if(!toNode)throw "id查找出错"
- if(line.name&&line.name.length>0){
- rejectTo=this.makeTransitionToName(toNode,1);
- }else{
- agreeTo=this.makeTransitionToName(toNode,1);
- }
- }
- }
- if(!rejectTo)rejectTo=agreeTo;
- aa.appendChild(join)
- //startDecision
- //startdesicion
- aa.appendChild(this.makeStartDecision(data,data.id+"JoinFinish",data.id+"StartDecision"));
- //JoinFinishDecision
- decision=this.createDomElement("decision",{name:(nodeid+"JoinFinish")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.JoinEndDec"})
- decision.appendChild(handler);
- decision.appendChild(this.createDomElement("transition",{"to":(nodeid+"ConfirmDecision")}));
- aa.appendChild(decision.cloneNode(true))
- //confirmDecision
- decision=this.createDomElement("decision",{name:(nodeid+"ConfirmDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.SureDec"})
- decision.appendChild(handler);
- if(data.service_name)
- decision.appendChild(this.createDomElement("transition",{name:"confirm","to":(nodeid+"ConfirmTask")}));
- decision.appendChild(this.createDomElement("transition",{"to":(nodeid+"AgreeDecision")}));
- aa.appendChild(decision.cloneNode(true));
- if(data.service_name){
- //confirmtask
- var confirmTask=this.createTask(data,nodeid+"ConfirmTask",nodeid+"TaskFinishDecision",nodeid+"TaskFinishDecision",{})[0];
- confirmTask.removeAttribute("candidate-groups")
- aa.appendChild(confirmTask);
- //taskFinishDecision
- decision=this.createDomElement("decision",{name:(nodeid+"TaskFinishDecision")});
- handler =this.createDomElement("handler",{class:"wd.core.bpm.group.join.TaskFinishDecision"})
- decision.appendChild(handler);
- decision.appendChild(this.createDomElement("transition",{name:"agree","to":(nodeid+"AgreeDecision")}));
- decision.appendChild(this.createDomElement("transition",{name:"reject","to":(nodeid+"RejectDecision")}));
- aa.appendChild(decision.cloneNode(true));
- }
- //agreeDecision
- decision=this.createDomElement("decision",{name:(nodeid+"AgreeDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.JoinAgrDec"})
- decision.appendChild(handler);
- decision.appendChild(this.createDomElement("transition",{"to":(agreeTo)}));
- aa.appendChild(decision.cloneNode(true));
- //rejectDecision
- decision=this.createDomElement("decision",{name:(nodeid+"RejectDecision")});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.JoinRejDec"})
- decision.appendChild(handler);
- decision.appendChild(this.createDomElement("transition",{"to":(rejectTo)}));
- aa.appendChild(decision.cloneNode(true));
- // if(this.hasNextNode(data.id)){
- // var relate_data=this.getNodeListById(data.id)
- // for(var i=0;i<relate_data.length;i++){
- // transition=document.createElement("transition");
- // transition.setAttribute("to",this.makeTransitionToName(relate_data[i],1));
- // decision.appendChild(transition);
- //
- // }
- // }
- }
- }
- return aa.childNodes;
- }
- this.getDecision=function(){
- var aa=document.createElement("aa");
- var decisiondata=this.getNoRepeatNameObj()["nodes"];
- for (var key in decisiondata) {
- var data=decisiondata[key];
- var decision,handler,field,string,transition;
- if(data.type=="node"){
- decision=document.createElement("decision");
- decision.setAttribute("name",data.id);
- handler=document.createElement("handler");
- // handler.setAttribute("class","env.service.workFlow.DecisionHandler");
- handler.setAttribute("class","ss.bpm.handle.impl.DecDictHandle"); // ,"wd.core.bpm.decisionHandler.DecisionHandler")。Lin
- field=document.createElement("field");
- field.setAttribute("name","dictName"); // ,"key")。Lin
- string=document.createElement("string");
- var key=this.makeScope(data.key);
- string.setAttribute("value",key);
- field.appendChild(string);
- handler.appendChild(field);
- decision.appendChild(handler);
- if(this.hasNextNode(data.id)){
- var relate_data=this.getNodeListById(data.id);
- for(var i=0;i<relate_data.length;i++){
- var relate_line=this.getLine(data.id,relate_data[i].id)
- var names=relate_line.name.split(",");
- for(var j=0;j<names.length;j++){
- transition=document.createElement("transition")
- if(names[j]!=""){transition.setAttribute("name",names[j]);}
- transition.setAttribute("to",this.makeTransitionToName(relate_data[i],1))
- decision.appendChild(transition)
- }
- }
- }
- aa.appendChild(decision)
- }
- }
- return aa.childNodes;
- }
- //防止重复name导致发布失败
- this.getNoRepeatNameObj=function(){
- var obj=this.clone(this.obj);
- // var allnodes=obj["nodes"];
- // for(var key in allnodes){
- // var thisName=allnodes[key].name;
- // //计算重名数
- // var count=0;
- // for(var key2 in allnodes){
- // if(key==key2){continue;}
- // var tempName=allnodes[key2].name;
- // if(thisName==tempName){count=count+1;}
- // }
- //
- // for(var key2 in allnodes){
- // if(key==key2){continue;}
- // var tempName=allnodes[key2].name;
- // if(thisName==tempName){
- // allnodes[key2].name=tempName+count;
- // count=count-1;
- // }
- // }
- // }
- return obj
- }
- this.clone=function(myObj){
- //复制对象
- if(typeof(myObj) != 'object') return myObj;
- if(myObj == null) return myObj;
- var myNewObj = new Object();
- for(var i in myObj)
- myNewObj[i] = clone(myObj[i]);
- return myNewObj;
- }
- //查找线
- this.getLine=function(fromid,toid){
- var allLine=this.getNoRepeatNameObj()["lines"];
- for(var key in allLine){
- var data=allLine[key];
- if(data.from==fromid&&data.to==toid){
- return allLine[key]
- }
- }
- return null;
- }
- this.hasType=function(type){
- var aa=this.getNoRepeatNameObj()["lines"];
- for (var key in aa) {
- if(aa[key].realtype==type){
- return true;
- }
- }
- return false;
- }
- //翻译URL
- this.translateURL=function(sepecialURL,AppName){
- // alert(AppName)
- var thisurl="/service?ssServ=transServStr"; // =lc_Param。Lin
- //应用名
- /* 再改,去掉 thisAppName。Lin
- var urlAppName;
- if(AppName==null){
- urlAppName=this.obj.bpm_name.split(".")[0]; // ???导致 urlAppName 的值为 流程名 -- 流程名不带应用名了???Lin
- }else{
- urlAppName=AppName
- }
- */
- var result=null;
- var aa=$.ajax({
- type:"post",
- url:thisurl,
- async:false,
- data:{
- /* 再改,去掉 thisAppName。Lin
- thisAppName:urlAppName,
- */
- data:sepecialURL
- },
- success:function(data,status){
- result=data;
- if(!data||data.indexOf("null")!=-1){
- result=null;
- if(window.log){
- window.log("服务或页面不存在! "+sepecialURL);
- }else{
- alert("服务或页面不存在! "+sepecialURL);
- }
- throw "服务或页面不存在! "+sepecialURL
- }
- }
- });
- if(aa.status==404){
- alert("连接失败!"+thisurl);
- reuslt=null
- };
- if(!aa.responseText||aa.responseText.indexOf("null")!=-1){
- reuslt=null;
- }
- return result;
- }
- //返回节点ARRAY找出节点连向外面的所有节点
- this.getNodeListById=function(id){
- var bb=new Array();
- var aa=this.getNoRepeatNameObj()["lines"];
- var cc=this.getNoRepeatNameObj()["nodes"];
- for (var key in aa) {
- if(aa[key].from==id){
- bb.push(cc[aa[key].to]);
- }
- }
- return bb
- }
- this.getLineListById=function(id){
- var bb=new Array();
- var aa=this.getNoRepeatNameObj()["lines"];
- // var cc=this.getNoRepeatNameObj()["nodes"];
- for (var key in aa) {
- if(aa[key].from==id){
- bb.push(aa[key]);
- }
- }
- return bb
- }
- //返回节点ARRAY找出节点连向外面的所有节点
- this.getNodeListByType=function(type){
- var bb=new Array();
- var cc=this.getNoRepeatNameObj()["nodes"];
- for (var key in cc) {
- if(cc[key].realtype==type){
- bb.push(cc[key].id);
- }
- }
- return bb
- }
- //查找指向外面线
- this.hasNextNode=function(id){
- var aa=this.getNoRepeatNameObj()["lines"];
- for (var key in aa) {
- if(aa[key].from==id&&"reject"!=aa[key].status){
- return true;
- }
- }
- return false;
- }
- this.getNodeSize=function(){
- var count=0;
- var aa=this.getNoRepeatNameObj()["nodes"];
- for (var key in aa) {
- count++
- }
- return count;
- }
- this.getNextNode=function(id){
- var result=new Array();
- var aa=this.getNoRepeatNameObj()["lines"];
- for (var key in aa) {
- if(aa[key].from==id&&"reject"!=aa[key].status){
- result.push(aa[key].to)
- }
- }
- return result;
- }
- this.isInForeachAndJoin = function(id, option){
- if (!option)
- option = {};
- var that = this;
- var foreachList = this.getNodeListByType("foreach");
- // var joinList=this.getNodeListByType("join");
- for (var i = 0; i < foreachList.length; i ++) {
- var foreachId = foreachList[i];
- //id=foreach
- if (id == foreachId)
- return true
- var vvv = [];
- //当所有结果都为null时才返回false
- var preresult = function(sourceid, requestid) {
- var nextNodeList = that.getNextNode(sourceid)
- var inIt = false;
- for (var i = 0; i < vvv.length; i ++) {
- if (vvv[i] == sourceid)
- inIt = true;
- }
- if (!inIt)
- vvv.push(sourceid)
- for (var j = 0; j < nextNodeList.length; j ++) {
- var nextid = nextNodeList[j];
- var nexttype = that.getNoRepeatNameObj()["nodes"][nextid].realtype;
- if (nextid == requestid)
- return true;
- if (nexttype == "join")
- continue;
- if (inIt)
- continue;
- if (arguments.callee(nextid, requestid))
- return true;
- }
- } (foreachId, id)
- if (preresult)
- return foreachId;
- }
- return false
- }
- /// === 固定并行。Lin
- // 抄自 isInForeachAndJoin(id, option),不改原来的 isInForeachAndJoin(。Lin
- // 与 isInForeachAndJoin( 几乎一样 -- this.getNodeListByType("foreach") 改为 "fork"
- // "fork" = 固定并行
- this.rdFixEachId = function(id){
- var that = this;
- var foreachList = this.getNodeListByType("fork");
- // var joinList=this.getNodeListByType("join");
- for (var i = 0; i < foreachList.length; i ++) {
- var foreachId = foreachList[i];
- //id=foreach
- if (id == foreachId)
- return true
- var vvv = [];
- //当所有结果都为null时才返回false
- var preresult = function(sourceid, requestid) {
- var nextNodeList = that.getNextNode(sourceid)
- var inIt = false;
- for (var i = 0; i < vvv.length; i ++) {
- if (vvv[i] == sourceid)
- inIt = true;
- }
- if (!inIt)
- vvv.push(sourceid)
- for (var j = 0; j < nextNodeList.length; j ++) {
- var nextid = nextNodeList[j];
- var nexttype = that.getNoRepeatNameObj()["nodes"][nextid].realtype;
- if (nextid == requestid)
- return true;
- if (nexttype == "join")
- continue;
- if (inIt)
- continue;
- if (arguments.callee(nextid, requestid))
- return true;
- }
- } (foreachId, id)
- if (preresult)
- return foreachId;
- }
- return false
- }
- // 增加。Lin
- this.countFixeachNum = function(id) {
- var num = 0;
- for (var key in demo.$lineData) {
- if (id == demo.$lineData[key].from)
- num ++;
- }
- return num;
- }
- /// ===
- this.getConcurrentyJoinId=function(id){
- var that=this;
- var ids={};
- return function(rid){
- var nextNodeList=that.getNextNode(rid);
- for(var j=0;j<nextNodeList.length;j++){
- var nextid=nextNodeList[j];
- if(ids[nextid])continue;
- ids[nextid]=true;
- var nexttype=that.getNoRepeatNameObj()["nodes"][nextid].realtype;
- if("join"==nexttype)
- return nextid;
- var nextresult= arguments.callee(nextid);
- if(nextresult)return nextresult;
- }
- return null;
- }(id);
- }
- this.getSuperDecisionJson=function(){
- var jsondata=this.getNoRepeatNameObj()["nodes"];
- var result={
- json:[],
- transition:[]
- };
- var trans;
- var tasks=[]
- for(var key in jsondata){
- if(jsondata[key].realtype=="task"){
- tasks.push(jsondata[key])
- }
- }
- //排序
- tasks=this.sortTaskListByArrow(tasks)
- for (var i=0;i<tasks.length;i++) {
- var task=tasks[i];
- result.json.push({
- id:task.id,
- scope:this.makeScope(task.assignee),
- scopeParam:task.scopeParam,
- taskNo:task.step
- })
- trans=document.createElement("transition");
- trans.setAttribute("name",task.id);
- trans.setAttribute("to",task.id);
- result.transition.push(trans.cloneNode(true));
- }
- console.log(result)
- return result
- }
- this.makeScope=function(key,s){
- if(!key&&!s)return "";
- if(s)return s;
- var scope=key.replace("@","")
- scope=scope.replace("@","");
- /// 再增加,"请选择" 不是字典名。Lin
- /* 再,先不加,TaskAsg 里写死了节点一定要有字典(办理人) -- 升级为 JBPM5 时再弄
- scope = scope.replace("请选择","");
- */
- ///
- // if(scope.indexOf("env.")==-1){scope="env."+scope} // 去掉。Lin
- return scope;
- }
- this.sortTaskListByArrow=function(taskList){//排序 task按连线方向排序
- taskList.sort(function(task1,task2){
- var alllines=this.getNoRepeatNameObj()["lines"];
- var allnodes=this.getNoRepeatNameObj()["nodes"];
- function searchNext(from ,to){
- var realateNode=this.getNodeListById(from);
- for(var i=0;i<realateNode.length;i++){
- var thisline=this.getLine(from,realateNode[i].id);
- if(thisline.status=="agree"&&thisline.to==to){
- return true;
- }else{
- if(searchNext(thisline.to,to)){
- return true;
- }
- }
- }
- return false;
- }
- if(searchNext(task1.id,task2.id)){
- return -1
- }
- if(searchNext(task2.id,task1.id)){
- return 1
- }
- return 0;
- })
- return taskList
- }
- this.calculateDueTime=function(data){
- var days,hours,minutes;
- if(data.days&&days!=""){
- days=parseInt(data.days)
- }else{
- days=0
- }
- if(data.hours&&data.hours!=""){
- hours=parseInt(data.hours)
- }else{
- hours=0
- }
- if(data.minutes&&data.minutes!=""){
- minutes=parseInt(data.minutes)
- }else{
- minutes=0
- }
- // var calculater=(days*24+hours)+" hours"
- //精确到分钟作为单位
- var calculater=(days*24*60+hours*60+minutes)+" minutes"
- return "#{(duedate==null)? ('"+calculater+"') : (duedate)}"
- }
- this.createTransitionElement=function(type){
- }
- this.createDomElement=function(elementName,ElementProperty){
- var ele=document.createElement(elementName);
- for(var key in ElementProperty){
- ele.setAttribute(key,ElementProperty[key]);
- }
- return ele
- }
- this.makeTransitionToName=function(nextNode,transitionType){
- //transitionType: 1:同意 ,0:拒绝,2:退回线,
- if(transitionType==1){
- return (nextNode.type=="end")?(nextNode.agree_name):(nextNode.id)
- }else if(transitionType==0){
- return (nextNode.type=="end")?(nextNode.reject_name):(nextNode.id)
- }else if(transitionType==2){
- // return (nextNode.type=="end")?(nextNode.reject_name):(this.getEndNode()[0].reject_name)
- return (this.getEndNode()[0].reject_name)
- }
- }
- this.appendDomByList=function(domList){
- for(var i=0;i<domList.length;i++){
- if(i==domList.length-1){break;}
- var cur=domList[i];
- var nex=domList[i+1]
- cur.appendChild(nex);
- }
- return domList[0];
- }
- this.generalDesc=function(data){
- var objectName=""
- var version=this.obj.version;
- var resultObj={};
- resultObj.lcmc=objectName=this.obj.bpm_desc+"|"+this.obj.name; // 先不改 "|"。Lin
- if(this.obj.showName){
- resultObj.xslcmc=this.obj.showName;
- }
- if(this.obj.bgmbid){
- resultObj.bgmbid=this.obj.bgmbid;
- }
- if(this.obj.bgmbidList){
- resultObj.bgmbidList=this.obj.bgmbidList;
- }
- if(data.bgbj_xh){
- resultObj.bgbj_xh=data.bgbj_xh;
- }
- //批示意见序号
- if(data.psyj_xh){
- resultObj.psyj_xh=data.psyj_xh;
- }
- //批示落款序号
- if(data.pslk_xh){
- resultObj.pslk_xh=data.pslk_xh;
- }
- //是否手写批示
- resultObj.sfsxps=data.sfsxps||"0";
- resultObj.sfRedo = data.sfRedo || "0"; // 增加 是否重做节点。Lin
- resultObj.sfRun = data.sfRun || "0"; // 增加 是否执行节点。Lin
- if(data.name){
- resultObj.jdmc=data.name;
- }
- //显示名称
- if(data.displayName){
- resultObj.xsjdmc=data.displayName;
- }
- if(data.id){
- resultObj.jdid=data.id;
- }
- /// 再增加 jdxxbt(节点消息标题)、jdxxzw(节点消息正文),增加抄送执行节点 -- 发送企业微信抄送通知 WechatServ.sendWecomCcNotice()。Lin
- /* 再去掉,在抄送消息里增加显示来访基本情况 -- 在 <task type="ccInfo" 里定义 title=、cont=。Lin
- if (data.message_title)
- resultObj.jdxxbt = data.message_title;
- if (data.message_content)
- resultObj.jdxxzw = data.message_content;
- */
- ///
- if(data.messagereceipt){
- var messagereceipt=data.messagereceipt==1?"1":"0"
- resultObj.messagereceipt=messagereceipt;
- }
- if(data.check){
- resultObj.check=data.check;
- }
- if(data.finishService)
- resultObj.finishService=data.finishService;
- if(data.iService){
- resultObj.iService=data.iService;
- }
- if(data.cService){
- resultObj.cService=data.cService;
- }
- if(data.confirmthis){
- resultObj.confirmthis=data.confirmthis;
- }
- if(data.days){
- resultObj.days=data.days;
- }
- if(data.hours){
- resultObj.hours=data.hours;
- }
- if(data.minutes){
- resultObj.minutes=data.minutes;
- }
- if(data.duedatetype){
- resultObj.duedatetype=data.duedatetype;
- }
- if(data.batch){
- resultObj.batch=data.batch;
- }
- if(data.service_key){
- resultObj.service_key=data.service_key;
- }
- var result=JSON.stringify(resultObj);
- return result
- }
- this.makeStartDecision=function(data,defaultTo,defaultId){
- var task,assignment_handler,field,string,on,event_listener,decision,handler,transition,agreeTo,rejectTo,relate_data;
- //分支
- if(!defaultId)defaultId=data.id+""
- decision=this.createDomElement("decision",{name:(defaultId)});
- handler =this.createDomElement("handler",{class:"ss.bpm.dec.impl.StartDec"})
- decision.appendChild(handler);
- // //data
- // string=document.createElement("string");
- // string.setAttribute("value",JSON.stringify(data));
- // field=document.createElement("field");
- // field.setAttribute("name","data");
- // field.appendChild(string);
- // handler.appendChild(field);
- //
- //service 服务
- if(data.service_name){
- string=document.createElement("string");
- string.setAttribute("value",
- (data.service_name.indexOf(".")==-1?data.service_name:data.service_name.split(".")[1]))
- field=document.createElement("field");
- field.setAttribute("name","servName");
- field.appendChild(string);
- handler.appendChild(field);
- }
- //decision-scope 字典
- var scope=this.makeScope( data.assignee);
- if(scope){
- string=document.createElement("string");
- string.setAttribute("value",scope)
- field=document.createElement("field");
- field.setAttribute("name","dictName");
- field.appendChild(string);
- handler.appendChild(field)
- }
- //scopeParam,json-为json数据 指定字典
- if(data.scopeParam&&data.scopeParam!=""){
- string=document.createElement("string");
- string.setAttribute("value",data.scopeParam)
- field=document.createElement("field");
- field.setAttribute("name","scopeParm");
- field.appendChild(string);
- handler.appendChild(field)
- }
- //chain
- if(data.taskChain&&data.taskChain==1){
- string=document.createElement("string");
- string.setAttribute("value","部门内审核")
- field=document.createElement("field");
- field.setAttribute("name","chain");
- field.appendChild(string);
- handler.appendChild(field)
- }
- //transmit
- if(data.transmit&&data.transmit=="true"){
- string=document.createElement("string");
- string.setAttribute("value",data.transmit)
- field=document.createElement("field");
- field.setAttribute("name","transmit");
- field.appendChild(string);
- handler.appendChild(field)
- }
- //title
- string=document.createElement("string");
- string.setAttribute("value",data.message_title)
- field=document.createElement("field");
- field.setAttribute("name","msgTitle");
- field.appendChild(string);
- handler.appendChild(field)
- // content
- string=this.createDomElement("string",{value:data.message_content})
- field=document.createElement("field");
- field.setAttribute("name","msgCont");
- field.appendChild(string);
- handler.appendChild(field);
- if(data.usesubprocess&&data.usesubprocess==1){
- //subprocesskey
- string=this.createDomElement("string",{value:data.subprocess_key})
- field=document.createElement("field");
- field.setAttribute("name","subbpmName"); // ,"subprocesskey")。Lin
- field.appendChild(string);
- handler.appendChild(field);
- if(data.subprocess_startfunction){
- //startfunction
- string=this.createDomElement("string",{value:data.subprocess_startfunction})
- field=document.createElement("field");
- field.setAttribute("name","subbpmServName"); // ,"startfunction")。Lin
- field.appendChild(string);
- handler.appendChild(field);
- if(data.subprocess_endfunction){
- //endfunction
- string=this.createDomElement("string",{value:data.subprocess_endfunction})
- field=document.createElement("field");
- field.setAttribute("name","aftServName"); // ,"endfunction")。没有出现过 <subprocess endfunction=。Lin
- field.appendChild(string);
- handler.appendChild(field);
- }
- }
- }
- //rejectnode
- if(data.rejectnode){
- string=this.createDomElement("string",{value:data.rejectnode})
- field=document.createElement("field");
- field.setAttribute("name","rejNode");
- field.appendChild(string);
- handler.appendChild(field);
- }
- //concurrency
- string=this.createDomElement("string",{value:(this.isInForeachAndJoin(data.id)?"true":"false")})
- field=document.createElement("field");
- field.setAttribute("name","isEach");
- field.appendChild(string);
- handler.appendChild(field);
- //form
- if(data.realtype=="subprocess"){
- string=this.createDomElement("string",{value:(function(){
- var result="";
- var service="",Iservice="",Cservice="";
- if(data.service_name){
- var tempAppName=null;
- /* 改 @service。Lin
- var temp=("@service{name:'"+data.service_name+"',dest:'"+data.service_dest+"'"
- +((data.service_param)?(",param:{"+data.service_param+"}"):(""))
- +"}@")
- */ var temp = "<serv.ss name='"+ data.service_name +"'"+
- ((data.service_dest)? (" dest='"+ data.service_dest +"'") : "") +
- ((data.service_param)? (" parm='{"+ data.service_param +"}'") : "") +"/>";
- service=this.translateURL(temp,tempAppName);
- }
-
- if(data.Cservice_name){
- var tempAppName=null;
- /* 改 @service。Lin
- var temp=("@service{name:'"+data.Cservice_name
- +"',dest:'"+data.Cservice_dest+"'"
- +((data.Cservice_param)?(",param:{"+data.Cservice_param+"}"):(""))
- +"}@")
- */ var temp = "<serv.ss name='"+ data.Cservice_name +"'"+
- ((data.Cservice_dest)? (" dest='"+ data.Cservice_dest +"'") : "") +
- ((data.Cservice_param)? (" parm='{"+ data.Cservice_param +"}'") : "") +"/>";
- Cservice=this.translateURL(temp,tempAppName);
- }
-
- if(data.Iservice_name){
- var tempAppName=null;
- /* 改 @service。Lin
- var temp=(("@service{name:'"+data.Iservice_name+"',dest:'"
- +data.Iservice_dest+"'"
- +((data.Iservice_param)?(",param:{"+data.Iservice_param+"}"):(""))
- +"}@"));
- */ var temp = "<serv.ss name='"+ data.Iservice_name +"'"+
- ((data.Iservice_dest)? (" dest='"+ data.Iservice_dest +"'") : "") +
- ((data.Iservice_param)? (" parm='{"+ data.Iservice_param +"}'") : "") +"/>";
- Iservice=this.translateURL(temp,tempAppName);
- }
- result="{wd:null"
- +(!service?"":(",p_service:"+service))
- +(!Cservice?"":(",p_Cservice:"+Cservice))
- +(!Iservice?"":(",p_Iservice:"+Iservice))
- +"}"
-
- return result
- }).apply(this)})
- field=document.createElement("field");
- field.setAttribute("name","handleUrl");
- field.appendChild(string);
- handler.appendChild(field);
-
- }
-
-
- if(data.subprocesskey){
- string=this.createDomElement("string",{value:data.subprocesskey})
- field=document.createElement("field");
- field.setAttribute("name","subbpmName"); // ,"subprocesskey")。Lin
- field.appendChild(string);
- handler.appendChild(field);
- }
-
- //startfunction
-
- if(data.startfunction){
-
- string=this.createDomElement("string",{value:data.startfunction})
- field=document.createElement("field");
- field.setAttribute("name","subbpmServName"); // ,"startfunction")。Lin
- field.appendChild(string);
- handler.appendChild(field);
- }
-
-
- //endfunction
-
- if(data.endfunction){
- string=this.createDomElement("string",{value:data.endfunction})
- field=document.createElement("field");
- field.setAttribute("name","aftServName"); // ,"endfunction")。没有出现过 <subprocess endfunction=。Lin
- field.appendChild(string);
- handler.appendChild(field);
- }
-
-
- // desc
- var descMessage=this.generalDesc(data);
- string=this.createDomElement("string",{value:descMessage})
- field=document.createElement("field");
- field.setAttribute("name","nodeParm");
- field.appendChild(string);
- handler.appendChild(field);
-
-
-
-
-
- transition=this.createDomElement("transition",{to:defaultTo})
- decision.appendChild(transition);
-
- return decision;
-
- }
-
-
- return this;
- }
|