SpringBootプロジェクトactivitiのjuel式を使用


現在、プロジェクトにはプロセス式の実行結果を取得するビジネスがあります.
ただし、フローチャートの実行結果は、フローノードに到達する前に表示されません.
ここではactivitiのjuel式を手動で呼び出します
資料を探して実現する過程で他の人のいくつかの文章を参考にした.
https://blog.csdn.net/isyoungboy/article/details/81282699
コピーの過程でいくつかの問題にぶつかったが,いっそのこと最後に解決した.
コードは次のとおりです.
activitiプロファイル
/***
 * activiti   
 */
@Configuration
public class ActivitiConfig extends AbstractProcessEngineAutoConfiguration {
    
    /***
	*        
	* @return
	*/
    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource activitiDataSource() {
        return DataSourceBuilder.create().build();
    }

    /***
     *   activiti    
     * @param transactionManager
     * @param springAsyncExecutor
     * @return
     * @throws IOException
     */
    @Bean
    public SpringProcessEngineConfiguration springProcessEngineConfiguration(
            PlatformTransactionManager transactionManager,
            SpringAsyncExecutor springAsyncExecutor) throws IOException {
    	
    	SpringProcessEngineConfiguration config = baseSpringProcessEngineConfiguration(
                activitiDataSource(),
                transactionManager,
                springAsyncExecutor);
        return config;
    }
}

呼び出し方法
@Autowired
private SpringProcessEngineConfiguration processEngineConfiguration;
	
/***
 *   juel   
 * @param el    
 * @param var   
 * @return
 */
public Object invokeJuelExpression(String el, Map var) {
	ApplicationContext applicationContext = processEngineConfiguration.getApplicationContext();
	Map beans = applicationContext.getBeansOfType(Object.class);
	SpringExpressionManager expressionManager = new SpringExpressionManager(applicationContext, beans);
	Expression expression = expressionManager.createExpression(el);
	MyVariableScope impl = new MyVariableScope(var);
        Context.setProcessEngineConfiguration(processEngineConfiguration);
	return expression.getValue(impl);
}

MyVariableScope.java
public class MyVariableScope implements VariableScope {
    private Map variables = null;

    public MyVariableScope(Map variables) {
        this.variables = ParamUtil.isEmpty(variables) ? new HashMap<>() : variables;
    }
    //.....    VariableScope        ,      ,    
}