2011-10-26 10 views
3

呼び出すと、私は同じようservicetaskを使用してのSpring Beanを呼び出すことができます。は屋外でactiviti内で屋外activitiプロセスからのSpring Bean

<serviceTask id="assignApplicationId" name="Assign Application Id" 
    activiti:expression="${sequenceUtil.getOutboundId(task.id)}" 
    activiti:resultVariable="OutboundWF_ApplicationNumber"/> 

しかし、私のカスタムのコンテキストで私は次のようsequenceUtilを宣言:

<bean id="sequenceUtil" name="sequenceUtil" class="com.tts.mersal.presentation.bean.dialog.util.SequenceUtil"> 
    <property name="searchService"> 
     <ref bean="searchService" /> 
    </property> 
    <property name="nodeService"> 
     <ref bean="nodeService" /> 
    </property> 
    <property name="workflowService"> 
     <ref bean="WorkflowService" /> 
    </property>  
</bean> 

は、実際に私は、私はそれを得た

org.activiti.engine.impl.javax.el.PropertyNotFoundException: Cannot resolve identifier 'sequenceUtil' 
at org.activiti.engine.impl.juel.AstIdentifier.eval(AstIdentifier.java:83) 
at org.activiti.engine.impl.juel.AstMethod.invoke(AstMethod.java:79) 
at org.activiti.engine.impl.juel.AstMethod.eval(AstMethod.java:75) 
at org.activiti.engine.impl.juel.AstEval.eval(AstEval.java:50) 
at org.activiti.engine.impl.juel.AstNode.getValue(AstNode.java:26) 
at org.activiti.engine.impl.juel.TreeValueExpression.getValue(TreeValueExpression.java:114) 
at org.activiti.engine.impl.el.JuelExpression.getValue(JuelExpression.java:46) 

答えて

2

次の例外を得た:)

私はエルepressionsに豆の名をマップするためにもっと良い方法があり

<!-- --> 
<!-- Activiti Process Engine --> 
<!-- --> 
<bean id="activitiProcessEngineConfiguration" 
    class="org.alfresco.repo.workflow.activiti.AlfrescoProcessEngineConfiguration"> 
    <property name="dataSource" ref="wrappedDataSource" /> 
    <property name="transactionManager" ref="transactionManager" /> 
    <property name="databaseSchemaUpdate" value="${db.schema.update}" /> 
    <property name="history" value="full" /> 
    <property name="jobExecutorActivate" value="true" /> 

<!-- Limit the visible beans in expressions --> 


<property name="beans"> 
    <map> 
     <entry key="services" value-ref="ServiceRegistry" /> 
     <entry key="sequenceUtil" value-ref="sequenceUtil" /> 
    </map>  
</property> 

    <property name="customTypes"> 
     <list> 
      <ref bean="activitiScriptNodeType" /> 
      <ref bean="activitiScriptNodeListType" /> 
     </list> 
    </property> 
    <property name="customPreBPMNParseListeners"> 
     <list> 
      <ref bean="activitiParseListener" /> 
     </list> 
    </property> 
</bean> 
1

豆プロパティ以内に私のカスタムBeanを含めるようにactivitiProcessEngineConfiguration豆をオーバーライドする必要があります。少なくともalfresco5.2の場合。 activitiBeanRegistryはそのように定義さ

<bean id="activitiProcessEngineConfiguration" class="org.alfresco.repo.workflow.activiti.AlfrescoProcessEngineConfiguration"> 

     <!-- Limit the visible beans in expressions --> 
     <property name="beans" ref="activitiBeanRegistry" /> 
</bean> 

<util:map id="activitiBeanRegistry" map-class="java.util.HashMap"> 
    <entry key="services" value-ref="ServiceRegistry" /> 
</util:map> 

ですから、簡単にオリジナルのactivitiProcessEngineConfigurationに触れることなく名前であなたの豆を追加することができるように定義

もともとactivitiProcessEngineConfiguration。そのような:

<bean id="my.activitiBeanRegistry" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" depends-on="activitiBeanRegistry"> 
<property name="targetObject"> 
    <ref bean="activitiBeanRegistry" /> 
</property> 
<property name="targetMethod" value="put" /> 
<property name="arguments"> 
    <list> 
    <value>sequenceUtil</value> 
    <ref bean="sequenceUtil" /> 
    </list> 
</property> 

オープン拡張のための修正のため閉鎖:)

完全なソースはhere

activiti-context.xml

も参照して見つけることができます
関連する問題