|
楼主 |
发表于 2014-1-20 11:22:22
|
显示全部楼层
zhaixin 发表于 2014-1-20 11:13
流程图是什么样的,都设置了哪些规则,写了哪些事件
打印出后续可能流转的环节名称 ...
控制台信息:- CLIENTACCOUNT:QIAODAN
- BIZORIGN:qiaodan
- DeptId:590E1F1C5836407984263C431F913402
- PERID:AD99AD758C214EFEA97280BDF70B7A7D
- BizKind:kqOvertimeApply
- FBizGUID:6D58E97F468341F492C1CE8092E8A916
- CREATEPOSLEV:10
- AuditKind:akAudit,akVerify
- PARAMKIND:pkRegion,pkRegion
- PARAMVALUE:4,4
- AndoOrStr:aoAnd,aoAnd
- 执行FlowOut存储过程
- 执行FN函数 是否需继续审批
- FCurActivityID=akAudit40
- IndexI=0
- 是否需继续审批结果:false
- 执行FN函数 是否需继续审批
- FCurActivityID=akAudit40
- IndexI=0
- 是否需继续审批结果:false
- 流程审批总记录数:2
- 当前任务GUID: 595A60CE7CF64AD7AB76F787CAF03237
- sql:select count(*) as FRowCount from SA_TaskRelation where sTaskID2 = '595A60CE7CF64AD7AB76F787CAF03237'
- 任务关联表记录数:1
- 当前环节ID:加班单审批
- 不是首环节
- 审批环节执行者列表个数:1
- 后续可能流转的环节: Process
- 后续可能流转的环节: Process
- 下一个环节:akProcess20
复制代码 流程图:
到处理人的时候没有条件限制,所有单据都要到处理人
查找处理人事件:- // 执行流转操作 获取执行者
- public static String DoExecFlowOut(){
- FlowOutClass tmpFlowOutClass = new FlowOutClass();
- //String FResultActivityID = null;
- String FdyActivityID = null;
- String FnextActivityID = null;
- String FCurBigApproveType = null;
- String FCurActivtiyID =null;
- Integer i = 0;
- Integer j ;
- Integer z ;
- String FCurActivityID = ProcessUtils.getCurrentAI().getActivityName();
- String CurBizID = ProcessUtils.getProcessData1();
- List<Object> FlowFinallist=new ArrayList <Object>();
- List<Object> Flowlist=new ArrayList <Object>();
- String ksql = "select a.* from xt_TmpFlowData a where a.FkindGuid='" + CurBizID + "' order by a.FRecNO ";
- Table table = KSQL.select(ksql, null, DATA_MODEL, null);
- Iterator<Row> tabs = table.iterator();
- while (tabs.hasNext()){
- Row CurRow = tabs.next();
- FlowOutClass.FlowDataInfoclass FtmpFlowinfo = tmpFlowOutClass.new FlowDataInfoclass();
- FtmpFlowinfo.FProcessDetpFID = CurRow.getString("FProcessDeptFID");
- FtmpFlowinfo.FProcessPosFID = CurRow.getString("FProcessPosFID");
- FtmpFlowinfo.FProcessPerFID = CurRow.getString("FProcessPerFID");
- FtmpFlowinfo.FactivityID = CurRow.getString("FactivityID");
- FtmpFlowinfo.FBigApproveType = CurRow.getString("FBigApproveType");
- FtmpFlowinfo.FProcessPerFName = CurRow.getString("FProcessPerFName");
- Flowlist.add(FtmpFlowinfo);
- }
- System.out.println("流程审批总记录数:"+ Flowlist.size());
- if (tmpFlowOutClass.IsFirtActivity(FCurActivityID)){
- if (Flowlist.size()>0){
- FnextActivityID = ((FlowDataInfoclass)Flowlist.get(0)).FactivityID;
- System.out.println("开始环节审批环节ID:"+ FnextActivityID);
- FCurBigApproveType = ((FlowDataInfoclass)Flowlist.get(0)).FBigApproveType;
- for (i = 0; i < Flowlist.size(); i++){
- FdyActivityID = ((FlowDataInfoclass)Flowlist.get(i)).FactivityID;
- if (FlowOutClass.isEqu(FnextActivityID, FdyActivityID)){
- FlowFinallist.add(Flowlist.get(i));
- }
- }
- System.out.println("开始环节执行者列表个数:"+FlowFinallist.size());
- getFlowExecutor(FlowFinallist, FnextActivityID, FCurBigApproveType);
- } else {
- System.out.println(String.format("找不到匹配的流程审批数据或流程审批数据未配置!!!"));
- return FnextActivityID;
- }
- } else {
- FCurActivtiyID = ProcessUtils.getProcessData2();
- for ( i = 0; i < Flowlist.size(); i++){
- if (FlowOutClass.isEqu(FCurActivtiyID, ((FlowDataInfoclass)Flowlist.get(i)).FactivityID)){
- for ( j = i+1; j < Flowlist.size();j++ ){
- if (!FlowOutClass.isEqu(((FlowDataInfoclass)Flowlist.get(j)).FactivityID, FCurActivtiyID)){
- String FdyActivityID2 = ((FlowDataInfoclass)Flowlist.get(j)).FactivityID;
- FnextActivityID = ((FlowDataInfoclass)Flowlist.get(j)).FactivityID;
- FCurBigApproveType = ((FlowDataInfoclass)Flowlist.get(j)).FBigApproveType;
- FlowFinallist.add(Flowlist.get(j));
- for ( z = j+1; z < Flowlist.size();z++ ){
- if (FlowOutClass.isEqu(((FlowDataInfoclass)Flowlist.get(z)).FactivityID, FdyActivityID2)){
- FlowFinallist.add(Flowlist.get(z));
- }
- }
- break;
- }
- }
- break;
- }
- }
- System.out.println("审批环节执行者列表个数:"+FlowFinallist.size());
- getFlowExecutor(FlowFinallist, FnextActivityID, FCurBigApproveType);
- }
- System.out.println("下一个环节:"+ FnextActivityID);
- return FnextActivityID;
- }
- public static void getFlowExecutor(List<Object> list,String FnextActivityID,String FCurBigApproveType){
- //首先获取某个任务后续的流转数据结构
- ProcessControl flowControl = ProcessUtils.getProcessContext().getProcessControl();
- /* if (flowControl.getFlowTos().size()>1){
- System.out.println("后续可能流转的环节数不能大于1");
- return;
- }*/
- for (int i = 0; i < flowControl.getFlowTos().size(); i++){
- String FCurActivtiyID = flowControl.getFlowTos().get(i).getUnit();
- System.out.println("后续可能流转的环节: "+ FCurActivtiyID);
- // if (FlowOutClass.isEqu(FCurActivtiyID, FnextActivityID) || FCurActivtiyID.contains(FCurBigApproveType)) {
- flowControl.getFlowTos().get(i).clearExecutors();
- for (int j = 0; j<list.size(); j++){
- //留下要流转的环节,并自定义执行者
- OrgUnit CurOrgUnit = new OrgUnit(((FlowDataInfoclass)list.get(j)).FProcessPerFID,((FlowDataInfoclass)list.get(j)).FProcessPerFName);
- flowControl.getFlowTos().get(i).addExecutor(CurOrgUnit);
- }
- }
- }
复制代码 |
-
流程图
|