2016-03-28 10 views
0

私はDB2を設定してデータソースを設定したactiviti.cfg.xmlからProcess Engineを読み込もうとしています。しかし、デバッグ中に、プロセス設定がまだH2であることがわかります。また、実行時サービスからProcess Instanceを作成しようとすると、nullに変わります。以下のコードDB2に設定を変更しても、プロセスインスタンスを取得する方法Activitiプロセスの設定が常にH2に設定されています

ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml", "processEngineConfiguration") 


<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> 
    <property name="databaseType" value="db2" /> 
    <property name="dataSource" ref="customDataSource" /> 
</bean> 
<bean id="dataSourceTarget" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="XXX"></property> 

<bean id="customDataSource" class="XXX"> 
    <property name="targetDataSource"><ref local="dataSourceTarget"/></property> 
    <property name="schemaName"><value>XXX</value></property> 
</bean> 


      RuntimeService runtimeService = processEngine.getRuntimeService(); 
     processInstance = runtimeService.startProcessInstanceByKey(processDefinitionName, processVariablesMap); 

はありますか?

答えて

1

私はあなたがあなたがactiviti.propertiesファイルのコメントに、データベースのプロパティH2の設定を変更し、独自のDBを指定する必要がbuildProcessEngine()

ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml", "processEngineConfiguration").buildProcessEngine() 

代わりの

ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml", "processEngineConfiguration") 
+0

私にはプロセスエンジンも組み込まれています。 – user2017810

0

のコールが欠落していると思います構成。そして、これはactiviti enterpriseのためです...あなたのコードからは、コミュニティを使用していて、次に.xmlファイルを使用するのではなく、スタンドアロンプ​​ロセスエンジンを作成しようとしているようです...

+0
+0

私は、次のパスにあるactiviti.propertiesファイルについて説明しています:activiti \ tomcat \ webapps \ activiti-app \ WEB-INF \ classes \ META-INF \ activiti-app –

+0

Are Activitiの企業やコミュニティを使用していますか?上記の指定されたパスはエンタープライズ用です... –

0

ランタイムをJavaDelegateを拡張したクラスですが、それはそれより簡単です。以前の実行時プロパティを継承するには、新しいプロセスが必要です。

ので、代わりの

RuntimeService runtimeService = processEngine.getRuntimeService(); 

をやって、あなたの実際の実行のランタイムを取得することができます。

public class CreateNewInstance implements JavaDelegate { 

    private String processKey; 
    private Map<String, Object> variables; 

    public void execute(DelegateExecution execution) throws Exception { 

     // Load all the variables into the Map 
     variables = execution.getVariables(); 

     RuntimeService runtimeService = execution.getEngineServices() 
       .getRuntimeService(); 
     runtimeService.startProcessInstanceByKey(processKey, variables); 

    } 
} 

お役に立てば幸いです。

関連する問題