EAS_获取审批节点的决策项值

在提供给第三方接口进行审批的时候,需要同时提供给该审批节点的任务决策项值和名称,因为流程定义里面走不同的支线可能会根据不同的值来,比如,不同意的话,可能提供的2种操作,打回修改或终止,这种就有2种路径,如下图

image

这时候,我们提供的审批接口需要在构建审批对象时候,正确的设值才能够走到正确的路径,这里我们可以通过任务assignId来获取该节点的审批策略设值

 

import com.kingdee.bos.workflow.ActivityInstInfo;
import com.kingdee.bos.workflow.AssignmentInfo;
import com.kingdee.bos.workflow.define.ExtendedAttributeCollection;
import com.kingdee.bos.workflow.define.ProcessDef;
import com.kingdee.bos.workflow.define.extended.ApproveActivityDef;
import com.kingdee.bos.workflow.metas.OptionType;
import com.kingdee.bos.workflow.portal.quickapprove.QuickApproveUtil;
import com.kingdee.bos.workflow.service.ormrpc.EnactmentServiceFactory;
import com.kingdee.bos.workflow.service.ormrpc.IEnactmentService;

//主要代码如下,assignmentId为任务ID
StringBuffer sbf = new StringBuffer(); String tip = ""; IEnactmentService service = EnactmentServiceFactory.createEnactService(ctx); Locale locale2 = this.ctx.getLocale(); String assignmentId = inParam.getTaskId(); AssignmentInfo assignmentInfo = service.getAssignmentById(assignmentId); ProcessDef procDef = service.getProcessDefByDefineHashValue(assignmentInfo.getProcDefHashValue()); ActivityInstInfo actInstInfo = service.getActivityInstByActInstId(assignmentInfo.getActInstId()); ApproveActivityDef actDef = (ApproveActivityDef)procDef.getActivityDef(actInstInfo.getActDefId()); ExtendedAttributeCollection eac = actDef.getActivityHeader().getExtendedAttributes(); String approveDecisionItems = QuickApproveUtil.getApproveDecisionItems(actDef, eac, locale2);

String[] decisionItems = approveDecisionItems.split(":");
JSONArray handlerOpinionArr = new JSONArray();
for (int i = 0; i < decisionItems.length; i++) {
String[] itemsDetail = decisionItems[i].split(";");
JSONObject obj = new JSONObject();
int handlerOpinion = Integer.parseInt(itemsDetail[0]); //决策值
String multiHandlerOpinion = itemsDetail[1]; //决策项内容
boolean approveResult = itemsDetail[2].equals("同意")?true: false; //审批结果 同意/不同意
obj.put("handlerOpinion", handlerOpinion);
obj.put("multiHandlerOpinion", multiHandlerOpinion);
obj.put("approveResult", approveResult);
handlerOpinionArr.add(obj);
}

获取的字符串内容为“0;无;同意;:1;打回上一级修改;不同意;:6;打回修改;不同意;”,其以冒号":"分割,数字代表决策项值,第一个中文代表决策项内容,第二中文同意或不同意代表审批结果,即approveResult,接口应穿true或false,代表审批同意还是不同意

image

 

posted @ 2025-10-17 16:19  凉了记忆  阅读(6)  评论(0)    收藏  举报