Java计算Activiti 排他网关(ExclusiveGateway)的条件表达式(EL表达式)的值

/ 0条评论 / 0 个点赞 / 1139人阅读

执行计算表达式

/**
    * 计算boolean表达式的值
    * @param expression 表达式
    * @param varsMap 参数
    * @return boolean值
    */
public boolean calculateExpression(String expression, Map<String, Object> varsMap) {
ExpressionFactory factory = new ExpressionFactoryImpl();
SimpleContext context = new SimpleContext();
for (Object k : varsMap.keySet()) {
if (varsMap.get(k) != null) {
context.setVariable(k.toString(), factory.createValueExpression(varsMap.get(k), varsMap.get(k).getClass()));
}
}
ValueExpression e = factory.createValueExpression(context, expression, Boolean.class);
return (Boolean) e.getValue(context);
}

执行方法表达式

	/**
	 * 执行方法表达式
	 * @Description TODO
	 * @param expression
	 * @param varsMap
	 * @return
	 * @return Object
	 * @Author 何湘简
	 * @Date 2021年7月6日 下午7:54:31
	 */
	public Object calculateMethodExpression(String expression, Map<String, Object> varsMap) {
		DataSourceContextHolder
		.setDataSourceType(DataSourceType.dataSource_centusoft);
		ApplicationContext applicationContext = processEngineConfiguration.getApplicationContext();
		Map beans = applicationContext.getBeansOfType(Object.class);
		SpringExpressionManager expressionManager = new SpringExpressionManager(applicationContext, beans);
		Expression e = expressionManager.createExpression(expression);
		MyVariableScope impl = new MyVariableScope(varsMap);
		Context.setProcessEngineConfiguration(processEngineConfiguration);
		return e.getValue(impl);
	}

MyVariableScope.java

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import org.activiti.engine.delegate.VariableScope;


public class MyVariableScope implements VariableScope{
   
	 private Map<String, Object> variables=new HashMap<String, Object>();
	    public MyVariableScope(Map<String, Object> variables){
	        this.variables=variables;
	    }
	    @Override
	    public Map<String, Object> getVariables() {
	        // TODO Auto-generated method stub
	        return variables;
	    }

	    public Map<String, VariableScope> getVariableInstances() {
	        /*// TODO Auto-generated method stub
	         Map<String, VariableScope> variableInstanceMap=new HashMap();
	         System.out.println("通过Map.entrySet遍历key和value");
	          for (Map.Entry<String, Object> entry : variables.entrySet()) {
	              VariableInstanceEntity variableInstance=VariableInstanceEntity.create( entry.getKey(), type, entry.getValue())
	          
	          }*/
	        return null;
	    }

	    public Map<String, Object> getVariables(Collection<String> variableNames) {
	        // TODO Auto-generated method stub
	        return variables;
	    }

	    public Map<String, VariableScope> getVariableInstances(Collection<String> variableNames) {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    public Map<String, Object> getVariables(Collection<String> variableNames, boolean fetchAllVariables) {
	        // TODO Auto-generated method stub
	        return variables;
	    }

	    public Map<String, VariableScope> getVariableInstances(Collection<String> variableNames,
	            boolean fetchAllVariables) {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    @Override
	    public Map<String, Object> getVariablesLocal() {
	        // TODO Auto-generated method stub
	        return variables;
	    }

	    public Map<String, VariableScope> getVariableInstancesLocal() {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    public Map<String, Object> getVariablesLocal(Collection<String> variableNames) {
	        // TODO Auto-generated method stub
	        return variables;
	    }

	    public Map<String, VariableScope> getVariableInstancesLocal(Collection<String> variableNames) {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    public Map<String, Object> getVariablesLocal(Collection<String> variableNames, boolean fetchAllVariables) {
	        // TODO Auto-generated method stub
	        return variables;
	    }

	    public Map<String, VariableScope> getVariableInstancesLocal(Collection<String> variableNames,
	            boolean fetchAllVariables) {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    @Override
	    public Object getVariable(String variableName) {
	        // TODO Auto-generated method stub
	        return variables.get(variableName);
	    }

	    public VariableScope getVariableInstance(String variableName) {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    public Object getVariable(String variableName, boolean fetchAllVariables) {
	        // TODO Auto-generated method stub
	        return this.getVariable(variableName);
	    }

	    public VariableScope getVariableInstance(String variableName, boolean fetchAllVariables) {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    @Override
	    public Object getVariableLocal(String variableName) {
	        // TODO Auto-generated method stub
	        return this.getVariable(variableName);
	    }

	    public VariableScope getVariableInstanceLocal(String variableName) {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    public Object getVariableLocal(String variableName, boolean fetchAllVariables) {
	        // TODO Auto-generated method stub
	        return this.getVariable(variableName);
	    }

	    public VariableScope getVariableInstanceLocal(String variableName, boolean fetchAllVariables) {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    public <T> T getVariable(String variableName, Class<T> variableClass) {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    public <T> T getVariableLocal(String variableName, Class<T> variableClass) {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    @Override
	    public Set<String> getVariableNames() {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    @Override
	    public Set<String> getVariableNamesLocal() {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    @Override
	    public void setVariable(String variableName, Object value) {
	        // TODO Auto-generated method stub
	        variables.put(variableName,value);
	    }

	    public void setVariable(String variableName, Object value, boolean fetchAllVariables) {
	        // TODO Auto-generated method stub
	        this.setVariable(variableName, value);
	    }

	    @Override
	    public Object setVariableLocal(String variableName, Object value) {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    public Object setVariableLocal(String variableName, Object value, boolean fetchAllVariables) {
	        // TODO Auto-generated method stub
	        return null;
	    }

	    @Override
	    public void setVariables(Map<String, ? extends Object> variables) {
	        // TODO Auto-generated method stub
	        this.variables=(Map<String, Object>) variables;
	    }

	    @Override
	    public void setVariablesLocal(Map<String, ? extends Object> variables) {
	        // TODO Auto-generated method stub
	        this.variables=(Map<String, Object>) variables;
	    }

	    @Override
	    public boolean hasVariables() {
	        // TODO Auto-generated method stub
	        return variables.size()>0;
	    }

	    @Override
	    public boolean hasVariablesLocal() {
	        // TODO Auto-generated method stub
	        return variables.size()>0;
	    }

	    @Override
	    public boolean hasVariable(String variableName) {
	        // TODO Auto-generated method stub
	        return variables.containsKey(variableName);
	    }

	    @Override
	    public boolean hasVariableLocal(String variableName) {
	        // TODO Auto-generated method stub
	        return variables.containsKey(variableName);
	    }

	    @Override
	    public void createVariableLocal(String variableName, Object value) {
	        // TODO Auto-generated method stub
	        
	    }

	    @Override
	    public void removeVariable(String variableName) {
	        // TODO Auto-generated method stub
	        
	    }

	    @Override
	    public void removeVariableLocal(String variableName) {
	        // TODO Auto-generated method stub
	        
	    }

	    @Override
	    public void removeVariables(Collection<String> variableNames) {
	        // TODO Auto-generated method stub
	        
	    }

	    @Override
	    public void removeVariablesLocal(Collection<String> variableNames) {
	        // TODO Auto-generated method stub
	        
	    }

	    @Override
	    public void removeVariables() {
	        // TODO Auto-generated method stub
	        
	    }

	    @Override
	    public void removeVariablesLocal() {
	        // TODO Auto-generated method stub
	        
	    }

}