protected void instantiateScopes( MigratingScopeInstance ancestorScopeInstance, MigratingScopeInstanceBranch executionBranch, List<ScopeImpl> scopesToInstantiate) { if (scopesToInstantiate.isEmpty()) { return; } // must always be an activity instance MigratingActivityInstance ancestorActivityInstance = (MigratingActivityInstance) ancestorScopeInstance; ExecutionEntity newParentExecution = ancestorActivityInstance.createAttachableExecution(); Map<PvmActivity, PvmExecutionImpl> createdExecutions = newParentExecution.instantiateScopes((List) scopesToInstantiate, skipCustomListeners, skipIoMappings); for (ScopeImpl scope : scopesToInstantiate) { ExecutionEntity createdExecution = (ExecutionEntity) createdExecutions.get(scope); createdExecution.setActivity(null); createdExecution.setActive(false); executionBranch.visited(new MigratingActivityInstance(scope, createdExecution)); } }
protected void instantiateScopes( MigratingScopeInstance ancestorScopeInstance, MigratingScopeInstanceBranch executionBranch, List<ScopeImpl> scopesToInstantiate) { if (scopesToInstantiate.isEmpty()) { return; } // must always be an activity instance MigratingActivityInstance ancestorActivityInstance = (MigratingActivityInstance) ancestorScopeInstance; ExecutionEntity newParentExecution = ancestorActivityInstance.createAttachableExecution(); Map<PvmActivity, PvmExecutionImpl> createdExecutions = newParentExecution.instantiateScopes((List) scopesToInstantiate, skipCustomListeners, skipIoMappings); for (ScopeImpl scope : scopesToInstantiate) { ExecutionEntity createdExecution = (ExecutionEntity) createdExecutions.get(scope); createdExecution.setActivity(null); createdExecution.setActive(false); executionBranch.visited(new MigratingActivityInstance(scope, createdExecution)); } }
@Override public void detachState() { ExecutionEntity currentExecution = resolveRepresentativeExecution(); currentExecution.setActivity(null); currentExecution.leaveActivityInstance(); currentExecution.setActive(false); getParent().destroyAttachableExecution(currentExecution); }
@Override public void attachState() { representativeExecution = getParent().createAttachableExecution(); representativeExecution.setActivity((PvmActivity) sourceScope); representativeExecution.setActivityInstanceId(activityInstance.getId()); representativeExecution.setActive(activeState); }
@Override public void detachState() { ExecutionEntity currentExecution = resolveRepresentativeExecution(); currentExecution.setActivity(null); currentExecution.leaveActivityInstance(); currentExecution.setActive(false); getParent().destroyAttachableExecution(currentExecution); }
@Override public void attachState() { representativeExecution = getParent().createAttachableExecution(); representativeExecution.setActivity((PvmActivity) sourceScope); representativeExecution.setActivityInstanceId(activityInstance.getId()); representativeExecution.setActive(activeState); }
@Override public void detachState() { jobInstance.detachState(); for (MigratingInstance dependentInstance : migratingDependentInstances) { dependentInstance.detachState(); } ExecutionEntity execution = resolveRepresentativeExecution(); execution.setActive(false); getParent().destroyAttachableExecution(execution); setParent(null); }
@Override public void detachState() { jobInstance.detachState(); for (MigratingInstance dependentInstance : migratingDependentInstances) { dependentInstance.detachState(); } ExecutionEntity execution = resolveRepresentativeExecution(); execution.setActive(false); getParent().destroyAttachableExecution(execution); setParent(null); }
@Override public void attachState(MigratingScopeInstance scopeInstance) { if (!(scopeInstance instanceof MigratingActivityInstance)) { throw MIGRATION_LOGGER.cannotHandleChild(scopeInstance, this); } MigratingActivityInstance activityInstance = (MigratingActivityInstance) scopeInstance; setParent(activityInstance); representativeExecution = activityInstance.createAttachableExecution(); representativeExecution.setActivityInstanceId(null); representativeExecution.setActive(activeState); jobInstance.attachState(this); for (MigratingInstance dependentInstance : migratingDependentInstances) { dependentInstance.attachState(this); } }
@Override public void attachState(MigratingScopeInstance scopeInstance) { if (!(scopeInstance instanceof MigratingActivityInstance)) { throw MIGRATION_LOGGER.cannotHandleChild(scopeInstance, this); } MigratingActivityInstance activityInstance = (MigratingActivityInstance) scopeInstance; setParent(activityInstance); representativeExecution = activityInstance.createAttachableExecution(); representativeExecution.setActivityInstanceId(null); representativeExecution.setActive(activeState); jobInstance.attachState(this); for (MigratingInstance dependentInstance : migratingDependentInstances) { dependentInstance.attachState(this); } }
@Override public ExecutionEntity createAttachableExecution() { ExecutionEntity scopeExecution = resolveRepresentativeExecution(); ExecutionEntity attachableExecution = scopeExecution; if (currentScope.getActivityBehavior() instanceof ModificationObserverBehavior) { ModificationObserverBehavior behavior = (ModificationObserverBehavior) currentScope.getActivityBehavior(); attachableExecution = (ExecutionEntity) behavior.createInnerInstance(scopeExecution); } else { if (!scopeExecution.getNonEventScopeExecutions().isEmpty() || scopeExecution.getActivity() != null) { attachableExecution = (ExecutionEntity) scopeExecution.createConcurrentExecution(); attachableExecution.setActive(false); scopeExecution.forceUpdate(); } } return attachableExecution; }
@Override public ExecutionEntity createAttachableExecution() { ExecutionEntity scopeExecution = resolveRepresentativeExecution(); ExecutionEntity attachableExecution = scopeExecution; if (currentScope.getActivityBehavior() instanceof ModificationObserverBehavior) { ModificationObserverBehavior behavior = (ModificationObserverBehavior) currentScope.getActivityBehavior(); attachableExecution = (ExecutionEntity) behavior.createInnerInstance(scopeExecution); } else { if (!scopeExecution.getNonEventScopeExecutions().isEmpty() || scopeExecution.getActivity() != null) { attachableExecution = (ExecutionEntity) scopeExecution.createConcurrentExecution(); attachableExecution.setActive(false); scopeExecution.forceUpdate(); } } return attachableExecution; }
@Override protected void instantiateScopes( MigratingScopeInstance ancestorScopeInstance, MigratingScopeInstanceBranch executionBranch, List<ScopeImpl> scopesToInstantiate) { if (scopesToInstantiate.isEmpty()) { return; } ExecutionEntity ancestorScopeExecution = ancestorScopeInstance.resolveRepresentativeExecution(); ExecutionEntity parentExecution = ancestorScopeExecution; for (ScopeImpl scope : scopesToInstantiate) { ExecutionEntity compensationScopeExecution = parentExecution.createExecution(); compensationScopeExecution.setScope(true); compensationScopeExecution.setEventScope(true); compensationScopeExecution.setActivity((PvmActivity) scope); compensationScopeExecution.setActive(false); compensationScopeExecution.activityInstanceStarting(); compensationScopeExecution.enterActivityInstance(); EventSubscriptionEntity eventSubscription = EventSubscriptionEntity.createAndInsert(parentExecution, EventType.COMPENSATE, (ActivityImpl) scope); eventSubscription.setConfiguration(compensationScopeExecution.getId()); executionBranch.visited(new MigratingEventScopeInstance(eventSubscription, compensationScopeExecution, scope)); parentExecution = compensationScopeExecution; } }
@Override protected void instantiateScopes( MigratingScopeInstance ancestorScopeInstance, MigratingScopeInstanceBranch executionBranch, List<ScopeImpl> scopesToInstantiate) { if (scopesToInstantiate.isEmpty()) { return; } ExecutionEntity ancestorScopeExecution = ancestorScopeInstance.resolveRepresentativeExecution(); ExecutionEntity parentExecution = ancestorScopeExecution; for (ScopeImpl scope : scopesToInstantiate) { ExecutionEntity compensationScopeExecution = parentExecution.createExecution(); compensationScopeExecution.setScope(true); compensationScopeExecution.setEventScope(true); compensationScopeExecution.setActivity((PvmActivity) scope); compensationScopeExecution.setActive(false); compensationScopeExecution.activityInstanceStarting(); compensationScopeExecution.enterActivityInstance(); EventSubscriptionEntity eventSubscription = EventSubscriptionEntity.createAndInsert(parentExecution, EventType.COMPENSATE, (ActivityImpl) scope); eventSubscription.setConfiguration(compensationScopeExecution.getId()); executionBranch.visited(new MigratingEventScopeInstance(eventSubscription, compensationScopeExecution, scope)); parentExecution = compensationScopeExecution; } }
eventScopeExecution.activityInstanceStarting(); eventScopeExecution.enterActivityInstance(); eventScopeExecution.setActive(false); eventScopeExecution.setConcurrent(false); eventScopeExecution.setEventScope(true);
eventScopeExecution.activityInstanceStarting(); eventScopeExecution.enterActivityInstance(); eventScopeExecution.setActive(false); eventScopeExecution.setConcurrent(false); eventScopeExecution.setEventScope(true);
public void testExecutionEntitySerialization() throws Exception { ExecutionEntity execution = new ExecutionEntity(); ActivityImpl activityImpl = new ActivityImpl("test", null); activityImpl.getExecutionListeners().put("start", Collections.<ExecutionListener>singletonList(new TestExecutionListener())); execution.setActivity(activityImpl); ProcessDefinitionImpl processDefinitionImpl = new ProcessDefinitionImpl("test"); processDefinitionImpl.getExecutionListeners().put("start", Collections.<ExecutionListener>singletonList(new TestExecutionListener())); execution.setProcessDefinition(processDefinitionImpl); TransitionImpl transitionImpl = new TransitionImpl("test", new ProcessDefinitionImpl("test")); transitionImpl.addExecutionListener(new TestExecutionListener()); execution.setTransition(transitionImpl); execution.getProcessInstanceStartContext().setInitial(activityImpl); execution.setSuperExecution(new ExecutionEntity()); execution.setActive(true); execution.setCanceled(false); execution.setBusinessKey("myBusinessKey"); execution.setDeleteReason("no reason"); execution.setActivityInstanceId("123"); execution.setScope(false); byte[] data = writeObject(execution); execution = (ExecutionEntity) readObject(data); assertEquals("myBusinessKey", execution.getBusinessKey()); assertEquals("no reason", execution.getDeleteReason()); assertEquals("123", execution.getActivityInstanceId()); }
compensatingExecution.setActive(true);
compensatingExecution.setActive(true);
@Override public void detachState() { jobInstance.detachState(); for (MigratingInstance dependentInstance : migratingDependentInstances) { dependentInstance.detachState(); } ExecutionEntity execution = resolveRepresentativeExecution(); execution.setActive(false); getParent().destroyAttachableExecution(execution); setParent(null); }