常用场景:根据用户的情况,在表单中选择用户,将现在需要审批处理的节点,转给另一个用户进行审批。
参考脚本:- (function(){
- var doc = getcurrentdocument();
- var userids = getwebuser().getid();
- var user = doc.getitemvalueasstring("审批人"); //表单字段
- var docprocess = getdocprocess(getapplication());
- var docids = splittext(user, ";");
- var userlist = createobject("java.util.arraylist");
- var list = new packages.java.util.arraylist();
- for (var i = 0; i < docids.length; i ) {
- if(docids != null) {
- list.add(docids[i]);
- }
- }
- var params = getparamstable();
- params.setparameter("auditorlist",list);
- var currnodeid= "1617073756399"; //当前节点id
- params.setparameter("_currid", currnodeid);
- var actorjson = new packages.net.sf.json.jsonobject();
- actorjson.put(currnodeid,list);
- doc.setauditorlist(actorjson.tostring());
- docprocess.dochangeauditor(doc,params,getwebuser());
- })();
复制代码 补充:- /**
- * 批量更新当前流程节点审批人
- * @param docid
- * 文档id
- * @param applicationid
- * 软件id
- * @param content 请求包体
- * @return
- * @throws exception
- */
- @putmapping("/domain/workflow/approvers/batch")
- @responsestatus(httpstatus.ok)
- @apioperation(value = "批量更新当前流程节点审批人", notes = "批量更新当前流程节点审批人")
- @apiimplicitparams({
- @apiimplicitparam(name = "content",value = "请求包体",required = true,paramtype = "body",datatype = "string")
- })
- public resource batchuupdateapprovers(@requestbody string content) {
- try {
- jsonobject jsonobject = jsonobject.fromobject(content);
- list userids = jsonobject.getjsonarray("userids");
- jsonarray docs = jsonobject.getjsonarray("docs");
- webuser user = webuser.getadminuser(request);
- list errormsg = new arraylist();
- int count = 0;
- for(iterator iterator = docs.iterator();iterator.hasnext();){
- try{
- jsonobject json = iterator.next();
- string docid = json.getstring("docid");
- string applicationid = json.getstring("applicationid");
- documentprocess process = (documentprocess)processfactory.createruntimeprocess(documentprocess.class, applicationid);
- document doc = (document)process.doview(docid);
- if(doc == null){
- count ;
- errormsg.add("第" count "条处理失败。原因:数据不存在!");
- continue;
- }
- var params = createparamstable();
- //paramstable params = new paramstable(getparams());
- params.setparameter("auditorlist", userids);
- flowstatert instance = doc.getstate();
- if(instance == null){
- count ;
- errormsg.add("第" count "条处理失败。原因:当前流程实例不存在!");
- continue;
- }
- nodert nodert = instance.getnoderts().iterator().next();
- if(nodert == null){
- count ;
- errormsg.add("第" count "条处理失败。原因:当前节点实例不存在!");
- }
- string currnodeid = nodert.getnodeid();
- jsonobject actorjson = new jsonobject();
- actorjson.put(currnodeid, userids);
- doc.setauditorlist(actorjson.tostring());
- params.setparameter("_currid", currnodeid);
- process.dochangeauditor(doc, params, user);
- doc.seteditableloaded(false);
- memorycacheutil.puttoprivatespace(doc.getid(), doc, user);
- count ;
- } catch (exception e){
- count ;
- errormsg.add("第" count "条处理失败。");
- }
- }
- if(errormsg.isempty()){
- return success("ok", null);
- } else {
- return success("ok", errormsg);
- }
- } catch (exception e) {
- e.printstacktrace();
- return error(500, e.getmessage(), null);
- }
- }
复制代码 |