ECM의 DM_WORKFLOW_E_TRANS_MAX_OUTPUT_CNT_EXCEEDEDED 오류 분석 및 해결
2012-11-10 09:25:51,146 ERROR [STDERR] DfException:: THREAD: http-0.0.0.0-9160-1; MSG: [DM_WORKFLOW_E_TRANS_MAX_OUTPUT_CNT_EXCEEDED]error: "A maximum of 1 output ports can be selected. (The maximum is defined in the activity's transition_max_output_cnt attribute.)"; ERRORCODE: 100; NEXT: null
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.fc.client.impl.docbase.DocbaseExceptionMapper.newException(DocbaseExceptionMapper.java:57)
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.fc.client.impl.connection.docbase.MessageEntry.getException(MessageEntry.java:39)
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.fc.client.impl.connection.docbase.DocbaseMessageManager.getException(DocbaseMessageManager.java:137)
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.fc.client.impl.connection.docbase.netwise.NetwiseDocbaseRpcClient.checkForMessages(NetwiseDocbaseRpcClient.java:305)
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.fc.client.impl.connection.docbase.netwise.NetwiseDocbaseRpcClient.applyForBool(NetwiseDocbaseRpcClient.java:349)
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection$1.evaluate(DocbaseConnection.java:1108)
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.evaluateRpc(DocbaseConnection.java:1046)
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.applyForBool(DocbaseConnection.java:1101)
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.apply(DocbaseConnection.java:1086)
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.fc.client.impl.docbase.DocbaseApi.witemSetOutput(DocbaseApi.java:1240)
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.fc.client.DfWorkitem.setOutput(DfWorkitem.java:406)
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.fc.client.DfWorkitem.setOutputByActivities(DfWorkitem.java:879)
2012-11-10 09:25:51,147 ERROR [STDERR] at com.documentum.bpm.DfWorkitemEx___PROXY.setOutputByActivities(DfWorkitemEx___PROXY.java)
ECM 스냅 프로세스를 사용할 때 완료 후 위의 오류를 보고합니다.
이상은 잘못된 상세한 상황입니다.
해결 방법:
IDfWorkitem workitemid = (IDfWorkitem)session.getObjectByQualification("dmi_workitem where r_object_id='"+sWorkItemId+"'");
IDfList forwardActList = workitemid.getForwardActivities();
if(workitemid.getRuntimeState() != IDfWorkitem.DF_WI_STATE_ACQUIRED) {
workitemid.acquire();
}
IDfActivity actold = (IDfActivity)forwardActList.get(0);
IDfList actList = new DfList();
actList.append(actold);
//workitemid.setOutputByActivities(actList);
IDfList outputPorts = new DfList();
IDfId workflowId = session.getIdByQualification("dm_workflow where r_object_id='4d00000b8001f147'");
IDfWorkflow wf = (IDfWorkflow)session.getObject(workflowId);
IDfId procId = wf.getProcessId();
System.out.println("Process id="+procId.toString());
IDfProcess process = (IDfProcess)session.getObject(procId);
int seqno = getActSeqno(workitemid);
int seqnoIndex = wf.findInt("r_act_seqno", seqno);
if(seqno >= 0)
{
String aliasName = wf.getActName(seqnoIndex);
for(int j = 0; j < actList.getCount(); j++)
{
IDfActivity act = (IDfActivity)actList.get(j);
IDfId actID = act.getObjectId();
IDfList actNames = new DfList();
int numActs = process.getActivityCount();
for(int i = 0; i < numActs; i++)
if(process.getActivityDefId(i).equals(actID))
actNames.appendString(process.getActivityName(i));
for(int i = 0; i < process.getProcessLinkCount(); i++)
{
if(process.getLinkSrcActivity(i).compareTo(aliasName) != 0)
continue;
System.out.println("process.getLinkSrcActivity(i)="+process.getLinkSrcActivity(i));
String destActName = process.getLinkDestActivity(i);
int destListIndex = actNames.findStringIndex(destActName);
if(destListIndex > -1)
{
String srcPort = process.getLinkSrcPort(i);
outputPorts.appendString(srcPort);
}
}
}
}
select * from dm_workflow where r_object_id='4dXXXXXXXXXXX'
발견 dm_워크플로우에 프로세스 템플릿을 기록하는 id 번호 process_id를 다시 DQL로 검사해 보니 대응하는 프로세스 템플릿의 idselect * from dm_process where object_name = 'XXXXXXXXX'
가 다르다는 것을 알 수 있습니다.즉, Process Builder를 통해 프로세스 템플릿을 수정한 후 프로세스 템플릿이 출시되고 이에 대응하는 r_object_id 번호가 업데이트되었습니다.SQL을 사용하여 dm_를 업데이트할 수 없습니다.workflow의 process_id update dm_workflow object set process_id='4bXXXXXXXXXX' where r_object_id='4dXXXXXXXXXXXXXX'
Select * From Dmi_Workitem_R Where R_Object_Id='4aXXXXXXXX';
Select * From Dmi_Workitem_S Where R_Object_Id='4aXXXXXXXX';
Select * From Dmi_Workitem_Sp Where R_Object_Id='4aXXXXX';
Select * From Dmi_Workitem_Rp Where R_Object_Id='4aXXXXXXX';
아니나 다를까, R_Act_Def_Id 이 두 칸은 각각 오래된 dm_를 기록했습니다activity의 id. 마찬가지로 사용, DQL 변경.성공했어... IDfList forwardActList = workitemid.getForwardActivities();
if(workitemid.getRuntimeState() != IDfWorkitem.DF_WI_STATE_ACQUIRED) {
workitemid.acquire();
}
IDfActivity forwardAct = (IDfActivity)forwardActList.get(0);
IDfList actList = new DfList();
actList.append(forwardAct);
workitemid.setOutputByActivities(actList);
workitemid.complete();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.