public static List calcMatchedTransitions()

in core/src/main/java/com/alibaba/smart/framework/engine/bpmn/behavior/gateway/helper/CommonGatewayHelper.java [302:349]


    public static List<PvmTransition> calcMatchedTransitions(PvmActivity pvmActivity, ExecutionContext context) {
        String processDefinitionActivityId = pvmActivity.getModel().getId();
        Map<String, PvmTransition> outcomeTransitions = pvmActivity.getOutcomeTransitions();


        List<PvmTransition> matchedTransitions = new ArrayList<PvmTransition>(outcomeTransitions.size());

        for (Map.Entry<String, PvmTransition> transitionEntry : outcomeTransitions.entrySet()) {

            PvmTransition pendingTransition = transitionEntry.getValue();
            boolean matched = pendingTransition.match(context);

            if (matched) {
                matchedTransitions.add(pendingTransition);
            }

        }

        //如果都没匹配到,就使用DefaultSequenceFlow
        if(0 == matchedTransitions.size()){

            Map<String, String> properties = pvmActivity.getModel().getProperties();
            if(MapUtil.isNotEmpty(properties)){
                String defaultSeqFLowId = properties.get(DEFAULT);
                if(StringUtil.isNotEmpty(defaultSeqFLowId)){
                    PvmTransition pvmTransition = outcomeTransitions.get(defaultSeqFLowId);
                    if (null != pvmTransition){
                        matchedTransitions.add(pvmTransition);
                    }else {
                        throw new EngineException("default sequence flow is assigned, but not found the pvmTransition ,check sequenceFlow id: "+ defaultSeqFLowId);
                    }
                }else{
                    // do nothing
                }

            }else{
                throw new EngineException("properties can not be empty,  check activity id :"+ processDefinitionActivityId);

            }


        }

        if(0 == matchedTransitions.size()){
            throw new EngineException("No Transitions matched,please check input request and condition expression,activity id :"+ processDefinitionActivityId);
        }
        return matchedTransitions;
    }