Вызов весеннего боба на свежем воздухе. - PullRequest
4 голосов
/ 26 октября 2011

В alfresco activiti, могу ли я вызвать боб весны с помощью сервицеты как:

<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 ]

2 голосов
/ 27 октября 2011

Я понял :)

Мне нужно переопределить bean-компонент activitiProcessEngineConfiguration, чтобы включить свой пользовательский bean-компонент в свойство bean-компонента

<!-- -->
<!-- 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 голос
/ 08 ноября 2016

Существует гораздо лучший способ сопоставить имена бинов с el epressions. По крайней мере, для alfresco 5.2.

Первоначально activitiProcessEngineConfiguration определено так:

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

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

Где activitiBeanRegistry определено так:

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

Так что вы можете легко добавить свои бобы с именами, не касаясь оригинала 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>

Открыт для расширения, закрыт для модификации:)

Полный источник можно найти здесь

См. Также activiti-context.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...