public ExecutionInstance find()

in extension/storage/storage-custom/src/main/java/com/alibaba/smart/framework/engine/persister/custom/CustomExecutionInstanceStorage.java [39:84]


    public ExecutionInstance find(String instanceId,
                                  ProcessEngineConfiguration processEngineConfiguration) {

        Collection<ProcessInstance> processInstances = PersisterSession.currentSession().getProcessInstances().values();

        boolean matched = false;

        ExecutionInstance executionInstance = null;

        for (ProcessInstance processInstance : processInstances) {

            List<ActivityInstance> activityInstances = processInstance.getActivityInstances();

            if (null == activityInstances || activityInstances.isEmpty()) {

                // do nothing , cause exception.
            } else {
                int size = activityInstances.size();
                for (int i = size - 1; i >= 0; i--) {
                    ActivityInstance activityInstance = activityInstances.get(i);

                    List<ExecutionInstance> executionInstances =    activityInstance.getExecutionInstanceList();
                    for (ExecutionInstance tempExecutionInstance : executionInstances) {
                        if (null != tempExecutionInstance && tempExecutionInstance.getInstanceId().equals(instanceId)) {
                            executionInstance = tempExecutionInstance;
                            matched = true;
                            break;

                        }
                    }

                }

            }
            if (matched) {
                break;
            }
        }

        if(!matched){
            throw new EngineException("No ExecutionInstance found for id : "+instanceId);
        }

        return executionInstance;

    }