2016-11-08 59 views
1

我嘗試在KARAF OSGI中使用Activiti和駱駝。Activiti OSGI和Blueprint的問題

我從服務組合配置中複製了一些部分。

<?xml version="1.0" encoding="UTF-8"?> 
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/blueprint" 
     xsi:schemaLocation=" 
    http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd 
    http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd" 
     xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0" 
     xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0" 
     xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"> 

<ext:property-placeholder /> 

<!-- 
    Setting up the process engine configuration, using an embedded H2 database together with our default Aries 
    transaction manager. 
--> 
<bean id="dataSource" class="org.h2.jdbcx.JdbcDataSource"> 
    <property name="URL" value="jdbc:h2:~/activiti"/> 
    <property name="user" value="sa"/> 
    <property name="password" value=""/> 
</bean> 

<reference id="transactionManager" interface="javax.transaction.TransactionManager"/> 

<bean id="configuration" class="org.activiti.engine.impl.cfg.JtaProcessEngineConfiguration" ext:field-injection="true"> 
    <property name="databaseType" value="h2"/> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="transactionManager" ref="transactionManager"/> 
    <property name="databaseSchemaUpdate" value="true"/> 
    <property name="transactionsExternallyManaged" value="true" /> 
    <property name="defaultCamelContext" value="defaultContext"/> 
</bean> 

<!-- 
    Set up the custom resolver implementation to ease integration with Camel routes 
--> 
<bean id="resolver" class="de.myproject.CamelAwareELResolver"/> 

<reference-list availability="optional" interface="org.activiti.camel.ContextProvider"> 
    <reference-listener ref="resolver" bind-method="addContextProvider" unbind-method="removeContextProvider" /> 
</reference-list> 

<reference-list availability="optional" interface="org.activiti.engine.delegate.JavaDelegate"> 
    <reference-listener ref="resolver" bind-method="bindService" unbind-method="unbindService" /> 
</reference-list> 

<!-- 
    Set up the Activiti process engine itself 
--> 
<bean id="processEngineFactory" class="org.activiti.osgi.blueprint.ProcessEngineFactoryWithELResolver" init-method="init" destroy-method="destroy"> 
    <property name="processEngineConfiguration" ref="configuration"/> 
    <property name="bundle" ref="blueprintBundle"/> 
    <property name="blueprintELResolver" ref="resolver" /> 
</bean> 

<bean id="processEngine" factory-ref="processEngineFactory" factory-method="getObject"/> 

<bean id="runtimeService" factory-ref="processEngine" factory-method="getRuntimeService" /> 

<!-- 
    Register the ProcessEngine and RuntimeService as OSGi services to allow other bundles to use them 
--> 
<service ref="processEngine" interface="org.activiti.engine.ProcessEngine"/> 
<service ref="runtimeService" interface="org.activiti.engine.RuntimeService"/> 


<bean id="routeBuilder" class="de.myproject.bpmn.BpmnRestRouteBuilder"/> 

<camelContext id="clientContext" trace="false" xmlns="http://camel.apache.org/schema/blueprint"> 
    <routeBuilder ref="routeBuilder" />   
    <route id="entryPointClient"> 
     <from uri="vm:client_queue"/> 
     <to uri="jobsbpmn://bpmn"/> 
    </route> 
</camelContext> 

我可以在對容器的問題部署包。當我用駱駝模塊觸發工作流程時,我得到這些異常:

2016-11-08 11:56:43,569 |錯誤| m:// client_queue | JobsBpmnProducer | 45 - 作業記錄 - 1.0.0 |沒有ProcessDefinition與此 標識符ActivitiException:期望 Activiti Camel模塊的SpringProcessEngineConfiguration。
ClassCastException異常: org.activiti.engine.impl.cfg.JtaProcessEngineConfiguration不能 投地org.activiti.spring.SpringProcessEngineConfiguration **

我如何可以部署使用OSGI春天讓駱駝符合流程引擎工作?

回答

0

此問題可能已在活動代碼中得到解決。 請參閱https://github.com/Activiti/Activiti/pull/519

您可以試用最新的Activitiy版本嗎?

+0

任何Idear這個解決方案包括哪些版本?我使用5.19.0.4 –

+0

5.19.0在問題解決後發佈。所以你的版本可能會包含它。我仍然會給最新的版本一個旋轉檢查。 –

+0

看着Activiti代碼這個問題不是固定的,@ChristianSchneider提到的pr確實解決了一個ClassCastException,但是沒有解決這個問題.. 查看代碼[1],CamelBehavior總是期待SpringProcessEngineConfiguration(第197行)。 1:https://github.com/Activiti/Activiti/blob/master/modules/activiti-camel/src/main/java/org/activiti/camel/CamelBehavior.java#L188 –