public void assertResult(WorkflowSession session) { super.assertResult(session); // 验证ProcessInstance信息 WorkflowQuery<ProcessInstance> q4ProcInst = session.createWorkflowQuery(ProcessInstance.class); ProcessInstance procInst = q4ProcInst.get(processInstanceId); Assert.assertNotNull(procInst); Assert.assertEquals(bizId, procInst.getBizId()); Assert.assertEquals(processName, procInst.getProcessId()); Assert.assertEquals(FpdlConstants.PROCESS_TYPE_FPDL20, procInst.getProcessType()); Assert.assertEquals(new Integer(1), procInst.getVersion()); Assert.assertEquals(processName, procInst.getProcessName()); // name 为空的情况下默认等于processId, Assert.assertEquals( processDisplayName, procInst.getProcessDisplayName()); // displayName为空的情况下默认等于name Assert.assertEquals(ProcessInstanceState.COMPENSATED, procInst.getState()); Assert.assertEquals(Boolean.FALSE, procInst.isSuspended()); Assert.assertEquals(FireWorkflowSystem.getInstance().getId(), procInst.getCreatorId()); Assert.assertEquals(FireWorkflowSystem.getInstance().getName(), procInst.getCreatorName()); Assert.assertEquals(FireWorkflowSystem.getInstance().getDeptId(), procInst.getCreatorDeptId()); Assert.assertEquals( FireWorkflowSystem.getInstance().getDeptName(), procInst.getCreatorDeptName()); Assert.assertNotNull(procInst.getCreatedTime()); Assert.assertNotNull(procInst.getEndTime()); Assert.assertNull(procInst.getExpiredTime()); Assert.assertNull(procInst.getParentActivityInstanceId()); Assert.assertNull(procInst.getParentProcessInstanceId()); Assert.assertNull(procInst.getParentScopeId()); Assert.assertNull(procInst.getNote()); // 验证Token信息 WorkflowQuery<Token> q4Token = session.createWorkflowQuery(Token.class); q4Token .add(Restrictions.eq(TokenProperty.PROCESS_INSTANCE_ID, processInstanceId)) .addOrder(Order.asc(TokenProperty.STEP_NUMBER)); List<Token> tokenList = q4Token.list(); Assert.assertNotNull(tokenList); Assert.assertEquals(18, tokenList.size()); Token procInstToken = tokenList.get(0); Assert.assertEquals( processName + ModelElement.ID_SEPARATOR + WorkflowProcess.MAIN_PROCESS_NAME, procInstToken.getElementId()); Assert.assertEquals(processInstanceId, procInstToken.getElementInstanceId()); Assert.assertEquals(processName, procInstToken.getProcessId()); Assert.assertEquals(FpdlConstants.PROCESS_TYPE_FPDL20, procInstToken.getProcessType()); Assert.assertEquals(new Integer(1), procInstToken.getVersion()); Assert.assertEquals(TokenState.COMPENSATED, procInstToken.getState()); Assert.assertNull(procInstToken.getParentTokenId()); Assert.assertTrue(procInstToken.isBusinessPermitted()); Assert.assertEquals(procInst.getTokenId(), procInstToken.getId()); Token startNodeToken = tokenList.get(1); Assert.assertEquals(processName, startNodeToken.getProcessId()); Assert.assertEquals(new Integer(1), startNodeToken.getVersion()); Assert.assertEquals(FpdlConstants.PROCESS_TYPE_FPDL20, startNodeToken.getProcessType()); Assert.assertEquals(procInstToken.getId(), startNodeToken.getParentTokenId()); Assert.assertTrue(startNodeToken.isBusinessPermitted()); Token activity1Token = tokenList.get(3); // 检验fromToken的有效性 for (Token t : tokenList) { if (t != procInstToken) { Assert.assertNotNull(t.getFromToken()); } } // 验证ActivityInstance信息 WorkflowQuery<ActivityInstance> q4ActInst = session.createWorkflowQuery(ActivityInstance.class); q4ActInst .add(Restrictions.eq(ActivityInstanceProperty.PROCESS_INSTANCE_ID, processInstanceId)) .add( Restrictions.eq( ActivityInstanceProperty.NODE_ID, processName + ModelElement.ID_SEPARATOR + WorkflowProcess.MAIN_PROCESS_NAME + ".Activity1")); List<ActivityInstance> actInstList = q4ActInst.list(); Assert.assertNotNull(actInstList); Assert.assertEquals(1, actInstList.size()); ActivityInstance activityInstance = actInstList.get(0); Assert.assertEquals(bizId, activityInstance.getBizId()); Assert.assertEquals("Activity1", activityInstance.getName()); Assert.assertEquals("Activity1", activityInstance.getDisplayName()); Assert.assertEquals(processInstanceId, activityInstance.getParentScopeId()); Assert.assertNotNull(activityInstance.getCreatedTime()); Assert.assertNotNull(activityInstance.getStartedTime()); Assert.assertNotNull(activityInstance.getEndTime()); Assert.assertNull(activityInstance.getExpiredTime()); Assert.assertNotNull(activityInstance.getTokenId()); Assert.assertEquals(activity1Token.getId(), activityInstance.getTokenId()); Assert.assertEquals(activity1Token.getElementId(), activityInstance.getNodeId()); Assert.assertEquals(activity1Token.getElementInstanceId(), activityInstance.getId()); Assert.assertNotNull(activityInstance.getScopeId()); Assert.assertEquals(new Integer(1), activityInstance.getVersion()); Assert.assertEquals(FpdlConstants.PROCESS_TYPE_FPDL20, activityInstance.getProcessType()); Assert.assertEquals(procInst.getProcessName(), activityInstance.getProcessName()); Assert.assertEquals(procInst.getProcessDisplayName(), activityInstance.getProcessDisplayName()); Assert.assertEquals(ActivityInstanceState.COMPLETED, activityInstance.getState()); // Activity2,Activity3应该是被补偿状态 q4ActInst.reset(); q4ActInst .add(Restrictions.eq(ActivityInstanceProperty.PROCESS_INSTANCE_ID, processInstanceId)) .add( Restrictions.eq( ActivityInstanceProperty.NODE_ID, processName + ModelElement.ID_SEPARATOR + WorkflowProcess.MAIN_PROCESS_NAME + ".Activity2")); actInstList = q4ActInst.list(); Assert.assertNotNull(actInstList); Assert.assertEquals(1, actInstList.size()); activityInstance = actInstList.get(0); Assert.assertEquals(ActivityInstanceState.COMPENSATED, activityInstance.getState()); q4ActInst.reset(); q4ActInst .add(Restrictions.eq(ActivityInstanceProperty.PROCESS_INSTANCE_ID, processInstanceId)) .add( Restrictions.eq( ActivityInstanceProperty.NODE_ID, processName + ModelElement.ID_SEPARATOR + WorkflowProcess.MAIN_PROCESS_NAME + ".Activity3")); actInstList = q4ActInst.list(); Assert.assertNotNull(actInstList); Assert.assertEquals(1, actInstList.size()); activityInstance = actInstList.get(0); Assert.assertEquals(ActivityInstanceState.COMPENSATED, activityInstance.getState()); }
public static ProcessKey valueOf(Token token) { return new ProcessKey(token.getProcessId(), token.getVersion(), token.getProcessType()); }