You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@aries.apache.org by Łukasz Dywicki <lu...@code-house.org> on 2011/12/15 08:58:47 UTC

Aries and fluent builders

Hello,
I tried to use Aries instead of Spring to configure Activiti process engine. The problem I meet was related to fluent builders. Activiti can be configured with fluent builder, for example:

ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
  .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
  .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
  .setJobExecutorActivate(true)
  .buildProcessEngine();

I ported this fragment to an XML fragment:

    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
        <property name="jobExecutorActivate" value="true" />
        <property name="databaseSchemaUpdate" value="false" />
        <property name="dataSource">
            <bean class="org.h2.jdbcx.JdbcDataSource">
                <property name="url" value="jdbc:h2:mem:activiti" />
            </bean>
        </property>
    </bean>
    <bean id="processEngine" factory-ref="processEngineConfiguration" factory-method="buildProcessEngine">
    </bean>

The error reported by blueprint is:
org.osgi.service.blueprint.container.ComponentDefinitionException: No setter for jobExecutorActivate property

The jobExecutorActivate property returns an instance of ProcessEngineConfiguration so it is not a regular Java Bean property. Do you have any ideas how to manage both - Aries and Activiti to work together?

Best regards,
Lukasz

Re: Aries and fluent builders

Posted by Łukasz Dywicki <lu...@code-house.org>.
Hey,
So far I managed  to make it working without additional namespace. Because activiti ProcessEngineConfiguration always returns a own instance I was able to use ext:field-injection to complete this task. 

Many thanks for support,
Best regards,
Lukasz

> Timothy,
> That's looks really good! I'll try do something myself, to reach this. If I will meet problems then will post a message to dev@.
> 
> Best regards,
> Lukasz
> 
> 
>> All contributions are welcome!
>> 
>> I would imagine that the most practical approach would be to add a new namespace handler called fluent, builder or similar. This could be provided as a new bundle in the blueprint project.
>> 
>> Adding some XML along the lines of the following to your blueprint:
>> 
>> <bean class="builderClass" fluent:begin-method="getConfigurable" fluent:end-method="create">
>> 
>>   <argument>2</argument>
>> 
>>   <fluent:configure method="setJDBCURL" value="someValue"/>
>>   <fluent:configure method="autoCommit">
>>       <value>true</value>
>>   <fluent:configure method="addListener" ref="someBeanId"/>
>> </bean>
>> 
>> 
>> could result in a configured bean using a fluent API like
>> 
>> builderClass.getConfigurable(2).setJDBCURL("someValue").autoCommit(true).addListener(blueprintBean).create();
>> 
>> Under the covers the namespace handler can turn the bean metadata into a "normal" blueprint metadata tree like the really verbose XML I gave as an example before.
>> 
>> What do you think?
>> 
>> Regards,
>> 
>> Tim Ward
>> -------------------
>> Apache Aries PMC member & Enterprise OSGi advocate
>> Enterprise OSGi in Action (http://www.manning.com/cummins)
>> -------------------
>> 
>> 
>> From: luke@code-house.org
>> Subject: Re: Aries and fluent builders
>> Date: Thu, 15 Dec 2011 09:42:40 +0100
>> To: user@aries.apache.org
>> 
>> Timothy,
>> If you could give an advice where to start, I can experiment. Maybe we can add an attribute from additional namespace (aries-util?) which will mark an field as non standard java bean and let inject given value? But, it is possible to extend a <property> behavior somehow?
>> 
>> Regards,
>> Lukasz
>> 
>> We could look at adding some better fluent support in Aries blueprint (although it would be in a non-standard namespace). It might be a while before there was anything actually in trunk though.
>> 
>> Regards
>> 
>> Tim Ward
>> -------------------
>> Apache Aries PMC member & Enterprise OSGi advocate
>> Enterprise OSGi in Action (http://www.manning.com/cummins)
>> -------------------
>> 
>> 
>> From: luke@code-house.org
>> Subject: Re: Aries and fluent builders
>> Date: Thu, 15 Dec 2011 09:26:37 +0100
>> To: user@aries.apache.org
>> 
>> Hey Timothy,
>> I know that solution proposed by you will work but it will mess a XML. Once I'll need to inject more values I will have 100 lines only to put true or false in some fields.
>> 
>> Regards,
>> Lukasz
>> 
>> 
>> Hi,
>> 
>> It's not very concise, but this should work:
>> 
>>     <bean id="processEngineConfiguration1" class="org.activiti.engine.ProcessEngineConfiguration" factory-method="createStandaloneInMemProcessEngineConfiguration"/>
>> 
>>     <bean id="processEngineConfiguration2" factory-ref="processEngineConfiguration1" factory-method="setDatabaseSchemaUpdate">
>>       <argument value="false"/>
>>     </bean>
>> 
>>     <bean id="processEngineConfiguration3" factory-ref="processEngineConfiguration2" factory-method="setDataSource">
>>       <argument>
>>         <bean class="org.h2.jdbcx.JdbcDataSource">
>>           <property name="url" value="jdbc:h2:mem:activiti" />
>>         </bean>
>>       </argument>
>>     </bean>
>> 
>>     <bean id="processEngineConfiguration4" factory-ref="processEngineConfiguration3" factory-method="setJobExecutorActivate">
>>       <argument value="true"/>
>>     </bean>
>> 
>> 
>>     <bean id="processEngine" factory-ref="processEngineConfiguration4" factory-method="buildProcessEngine"/>
>> 
>> If you're interested in more information about advanced blueprint techniques then you may find Enterprise OSGi in Action to be a useful resource. You can get 37% off if you use the code eosgi37 at the Manning website - http://www.manning.com/cummins 
>> 
>> Regards,
>> 
>> Tim Ward
>> -------------------
>> Apache Aries PMC member & Enterprise OSGi advocate
>> Enterprise OSGi in Action (http://www.manning.com/cummins)
>> -------------------
>> 
>> 
>> From: luke@code-house.org
>> Subject: Aries and fluent builders
>> Date: Thu, 15 Dec 2011 08:58:47 +0100
>> To: user@aries.apache.org
>> 
>> Hello,
>> I tried to use Aries instead of Spring to configure Activiti process engine. The problem I meet was related to fluent builders. Activiti can be configured with fluent builder, for example:
>> 
>> ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
>>   .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
>>   .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
>>   .setJobExecutorActivate(true)
>>   .buildProcessEngine();
>> 
>> I ported this fragment to an XML fragment:
>> 
>>     <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
>>         <property name="jobExecutorActivate" value="true" />
>>         <property name="databaseSchemaUpdate" value="false" />
>>         <property name="dataSource">
>>             <bean class="org.h2.jdbcx.JdbcDataSource">
>>                 <property name="url" value="jdbc:h2:mem:activiti" />
>>             </bean>
>>         </property>
>>     </bean>
>>     <bean id="processEngine" factory-ref="processEngineConfiguration" factory-method="buildProcessEngine">
>>     </bean>
>> 
>> The error reported by blueprint is:
>> org.osgi.service.blueprint.container.ComponentDefinitionException: No setter for jobExecutorActivate property
>> 
>> The jobExecutorActivate property returns an instance of ProcessEngineConfiguration so it is not a regular Java Bean property. Do you have any ideas how to manage both - Aries and Activiti to work together?
>> 
>> Best regards,
>> Lukasz
>> 
>> 
>> 
>> 
> 


Re: Aries and fluent builders

Posted by Łukasz Dywicki <lu...@code-house.org>.
Timothy,
That's looks really good! I'll try do something myself, to reach this. If I will meet problems then will post a message to dev@.

Best regards,
Lukasz


> All contributions are welcome!
> 
> I would imagine that the most practical approach would be to add a new namespace handler called fluent, builder or similar. This could be provided as a new bundle in the blueprint project.
> 
> Adding some XML along the lines of the following to your blueprint:
> 
> <bean class="builderClass" fluent:begin-method="getConfigurable" fluent:end-method="create">
> 
>   <argument>2</argument>
> 
>   <fluent:configure method="setJDBCURL" value="someValue"/>
>   <fluent:configure method="autoCommit">
>       <value>true</value>
>   <fluent:configure method="addListener" ref="someBeanId"/>
> </bean>
> 
> 
> could result in a configured bean using a fluent API like
> 
> builderClass.getConfigurable(2).setJDBCURL("someValue").autoCommit(true).addListener(blueprintBean).create();
> 
> Under the covers the namespace handler can turn the bean metadata into a "normal" blueprint metadata tree like the really verbose XML I gave as an example before.
> 
> What do you think?
> 
> Regards,
> 
> Tim Ward
> -------------------
> Apache Aries PMC member & Enterprise OSGi advocate
> Enterprise OSGi in Action (http://www.manning.com/cummins)
> -------------------
> 
> 
> From: luke@code-house.org
> Subject: Re: Aries and fluent builders
> Date: Thu, 15 Dec 2011 09:42:40 +0100
> To: user@aries.apache.org
> 
> Timothy,
> If you could give an advice where to start, I can experiment. Maybe we can add an attribute from additional namespace (aries-util?) which will mark an field as non standard java bean and let inject given value? But, it is possible to extend a <property> behavior somehow?
> 
> Regards,
> Lukasz
> 
> We could look at adding some better fluent support in Aries blueprint (although it would be in a non-standard namespace). It might be a while before there was anything actually in trunk though.
> 
> Regards
> 
> Tim Ward
> -------------------
> Apache Aries PMC member & Enterprise OSGi advocate
> Enterprise OSGi in Action (http://www.manning.com/cummins)
> -------------------
> 
> 
> From: luke@code-house.org
> Subject: Re: Aries and fluent builders
> Date: Thu, 15 Dec 2011 09:26:37 +0100
> To: user@aries.apache.org
> 
> Hey Timothy,
> I know that solution proposed by you will work but it will mess a XML. Once I'll need to inject more values I will have 100 lines only to put true or false in some fields.
> 
> Regards,
> Lukasz
> 
> 
> Hi,
> 
> It's not very concise, but this should work:
> 
>     <bean id="processEngineConfiguration1" class="org.activiti.engine.ProcessEngineConfiguration" factory-method="createStandaloneInMemProcessEngineConfiguration"/>
> 
>     <bean id="processEngineConfiguration2" factory-ref="processEngineConfiguration1" factory-method="setDatabaseSchemaUpdate">
>       <argument value="false"/>
>     </bean>
> 
>     <bean id="processEngineConfiguration3" factory-ref="processEngineConfiguration2" factory-method="setDataSource">
>       <argument>
>         <bean class="org.h2.jdbcx.JdbcDataSource">
>           <property name="url" value="jdbc:h2:mem:activiti" />
>         </bean>
>       </argument>
>     </bean>
> 
>     <bean id="processEngineConfiguration4" factory-ref="processEngineConfiguration3" factory-method="setJobExecutorActivate">
>       <argument value="true"/>
>     </bean>
> 
> 
>     <bean id="processEngine" factory-ref="processEngineConfiguration4" factory-method="buildProcessEngine"/>
> 
> If you're interested in more information about advanced blueprint techniques then you may find Enterprise OSGi in Action to be a useful resource. You can get 37% off if you use the code eosgi37 at the Manning website - http://www.manning.com/cummins 
> 
> Regards,
> 
> Tim Ward
> -------------------
> Apache Aries PMC member & Enterprise OSGi advocate
> Enterprise OSGi in Action (http://www.manning.com/cummins)
> -------------------
> 
> 
> From: luke@code-house.org
> Subject: Aries and fluent builders
> Date: Thu, 15 Dec 2011 08:58:47 +0100
> To: user@aries.apache.org
> 
> Hello,
> I tried to use Aries instead of Spring to configure Activiti process engine. The problem I meet was related to fluent builders. Activiti can be configured with fluent builder, for example:
> 
> ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
>   .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
>   .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
>   .setJobExecutorActivate(true)
>   .buildProcessEngine();
> 
> I ported this fragment to an XML fragment:
> 
>     <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
>         <property name="jobExecutorActivate" value="true" />
>         <property name="databaseSchemaUpdate" value="false" />
>         <property name="dataSource">
>             <bean class="org.h2.jdbcx.JdbcDataSource">
>                 <property name="url" value="jdbc:h2:mem:activiti" />
>             </bean>
>         </property>
>     </bean>
>     <bean id="processEngine" factory-ref="processEngineConfiguration" factory-method="buildProcessEngine">
>     </bean>
> 
> The error reported by blueprint is:
> org.osgi.service.blueprint.container.ComponentDefinitionException: No setter for jobExecutorActivate property
> 
> The jobExecutorActivate property returns an instance of ProcessEngineConfiguration so it is not a regular Java Bean property. Do you have any ideas how to manage both - Aries and Activiti to work together?
> 
> Best regards,
> Lukasz
> 
> 
> 
> 


RE: Aries and fluent builders

Posted by Timothy Ward <ti...@apache.org>.
All contributions are welcome!

I would imagine that the most practical approach would be to add a new namespace handler called fluent, builder or similar. This could be provided as a new bundle in the blueprint project.

Adding some XML along the lines of the following to your blueprint:

<bean class="builderClass" fluent:begin-method="getConfigurable" fluent:end-method="create">

  <argument>2</argument>

  <fluent:configure method="setJDBCURL" value="someValue"/>
  <fluent:configure method="autoCommit">
      <value>true</value>
  <fluent:configure method="addListener" ref="someBeanId"/>
</bean>


could result in a configured bean using a fluent API like

builderClass.getConfigurable(2).setJDBCURL("someValue").autoCommit(true).addListener(blueprintBean).create();

Under the covers the namespace handler can turn the bean metadata into a "normal" blueprint metadata tree like the really verbose XML I gave as an example before.

What do you think?

Regards,

Tim Ward
-------------------
Apache Aries PMC member & Enterprise OSGi advocate
Enterprise OSGi in Action (http://www.manning.com/cummins)
-------------------


From: luke@code-house.org
Subject: Re: Aries and fluent builders
Date: Thu, 15 Dec 2011 09:42:40 +0100
To: user@aries.apache.org



Timothy,If you could give an advice where to start, I can experiment. Maybe we can add an attribute from additional namespace (aries-util?) which will mark an field as non standard java bean and let inject given value? But, it is possible to extend a <property> behavior somehow?
Regards,LukaszWe could look at adding some better fluent support in Aries blueprint (although it would be in a non-standard namespace). It might be a while before there was anything actually in trunk though.

Regards

Tim Ward
-------------------
Apache Aries PMC member & Enterprise OSGi advocate
Enterprise OSGi in Action (http://www.manning.com/cummins)
-------------------


From: luke@code-house.org
Subject: Re: Aries and fluent builders
Date: Thu, 15 Dec 2011 09:26:37 +0100
To: user@aries.apache.org

Hey Timothy,I know that solution proposed by you will work but it will mess a XML. Once I'll need to inject more values I will have 100 lines only to put true or false in some fields.
Regards,Lukasz
Hi,

It's not very concise, but this should work:

    <bean id="processEngineConfiguration1" class="org.activiti.engine.ProcessEngineConfiguration" factory-method="createStandaloneInMemProcessEngineConfiguration"/>

    <bean id="processEngineConfiguration2" factory-ref="processEngineConfiguration1" factory-method="setDatabaseSchemaUpdate">
      <argument value="false"/>
    </bean>

    <bean id="processEngineConfiguration3" factory-ref="processEngineConfiguration2" factory-method="setDataSource">
      <argument>
        <bean class="org.h2.jdbcx.JdbcDataSource">
          <property name="url" value="jdbc:h2:mem:activiti" />
        </bean>
      </argument>
    </bean>

    <bean id="processEngineConfiguration4" factory-ref="processEngineConfiguration3" factory-method="setJobExecutorActivate">
      <argument value="true"/>
    </bean>


    <bean id="processEngine" factory-ref="processEngineConfiguration4" factory-method="buildProcessEngine"/>
If you're interested in more information about advanced blueprint techniques then you may find Enterprise OSGi in Action to be a useful resource. You can get 37% off if you use the code eosgi37 at the Manning website - http://www.manning.com/cummins 

Regards,

Tim Ward
-------------------
Apache Aries PMC member & Enterprise OSGi advocate
Enterprise OSGi in Action (http://www.manning.com/cummins)
-------------------


From: luke@code-house.org
Subject: Aries and fluent builders
Date: Thu, 15 Dec 2011 08:58:47 +0100
To: user@aries.apache.org

Hello,I tried to use Aries instead of Spring to configure Activiti process engine. The problem I meet was related to fluent builders. Activiti can be configured with fluent builder, for example:
ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
  .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
  .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
  .setJobExecutorActivate(true)
  .buildProcessEngine();
I ported this fragment to an XML fragment:
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">        <property name="jobExecutorActivate" value="true" />        <property name="databaseSchemaUpdate" value="false" />        <property name="dataSource">            <bean class="org.h2.jdbcx.JdbcDataSource">                <property name="url" value="jdbc:h2:mem:activiti" />            </bean>        </property>    </bean>    <bean id="processEngine" factory-ref="processEngineConfiguration" factory-method="buildProcessEngine">    </bean>
The error reported by blueprint is:org.osgi.service.blueprint.container.ComponentDefinitionException: No setter for jobExecutorActivate property
The jobExecutorActivate property returns an instance of ProcessEngineConfiguration so it is not a regular Java Bean property. Do you have any ideas how to manage both - Aries and Activiti to work together?
Best regards,Lukasz

 		 	   		  

Re: Aries and fluent builders

Posted by Łukasz Dywicki <lu...@code-house.org>.
Timothy,
If you could give an advice where to start, I can experiment. Maybe we can add an attribute from additional namespace (aries-util?) which will mark an field as non standard java bean and let inject given value? But, it is possible to extend a <property> behavior somehow?

Regards,
Lukasz

> We could look at adding some better fluent support in Aries blueprint (although it would be in a non-standard namespace). It might be a while before there was anything actually in trunk though.
> 
> Regards
> 
> Tim Ward
> -------------------
> Apache Aries PMC member & Enterprise OSGi advocate
> Enterprise OSGi in Action (http://www.manning.com/cummins)
> -------------------
> 
> 
> From: luke@code-house.org
> Subject: Re: Aries and fluent builders
> Date: Thu, 15 Dec 2011 09:26:37 +0100
> To: user@aries.apache.org
> 
> Hey Timothy,
> I know that solution proposed by you will work but it will mess a XML. Once I'll need to inject more values I will have 100 lines only to put true or false in some fields.
> 
> Regards,
> Lukasz
> 
> 
> Hi,
> 
> It's not very concise, but this should work:
> 
>     <bean id="processEngineConfiguration1" class="org.activiti.engine.ProcessEngineConfiguration" factory-method="createStandaloneInMemProcessEngineConfiguration"/>
> 
>     <bean id="processEngineConfiguration2" factory-ref="processEngineConfiguration1" factory-method="setDatabaseSchemaUpdate">
>       <argument value="false"/>
>     </bean>
> 
>     <bean id="processEngineConfiguration3" factory-ref="processEngineConfiguration2" factory-method="setDataSource">
>       <argument>
>         <bean class="org.h2.jdbcx.JdbcDataSource">
>           <property name="url" value="jdbc:h2:mem:activiti" />
>         </bean>
>       </argument>
>     </bean>
> 
>     <bean id="processEngineConfiguration4" factory-ref="processEngineConfiguration3" factory-method="setJobExecutorActivate">
>       <argument value="true"/>
>     </bean>
> 
> 
>     <bean id="processEngine" factory-ref="processEngineConfiguration4" factory-method="buildProcessEngine"/>
> 
> If you're interested in more information about advanced blueprint techniques then you may find Enterprise OSGi in Action to be a useful resource. You can get 37% off if you use the code eosgi37 at the Manning website - http://www.manning.com/cummins 
> 
> Regards,
> 
> Tim Ward
> -------------------
> Apache Aries PMC member & Enterprise OSGi advocate
> Enterprise OSGi in Action (http://www.manning.com/cummins)
> -------------------
> 
> 
> From: luke@code-house.org
> Subject: Aries and fluent builders
> Date: Thu, 15 Dec 2011 08:58:47 +0100
> To: user@aries.apache.org
> 
> Hello,
> I tried to use Aries instead of Spring to configure Activiti process engine. The problem I meet was related to fluent builders. Activiti can be configured with fluent builder, for example:
> 
> ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
>   .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
>   .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
>   .setJobExecutorActivate(true)
>   .buildProcessEngine();
> 
> I ported this fragment to an XML fragment:
> 
>     <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
>         <property name="jobExecutorActivate" value="true" />
>         <property name="databaseSchemaUpdate" value="false" />
>         <property name="dataSource">
>             <bean class="org.h2.jdbcx.JdbcDataSource">
>                 <property name="url" value="jdbc:h2:mem:activiti" />
>             </bean>
>         </property>
>     </bean>
>     <bean id="processEngine" factory-ref="processEngineConfiguration" factory-method="buildProcessEngine">
>     </bean>
> 
> The error reported by blueprint is:
> org.osgi.service.blueprint.container.ComponentDefinitionException: No setter for jobExecutorActivate property
> 
> The jobExecutorActivate property returns an instance of ProcessEngineConfiguration so it is not a regular Java Bean property. Do you have any ideas how to manage both - Aries and Activiti to work together?
> 
> Best regards,
> Lukasz
> 
> 


RE: Aries and fluent builders

Posted by Timothy Ward <ti...@apache.org>.
We could look at adding some better fluent support in Aries blueprint (although it would be in a non-standard namespace). It might be a while before there was anything actually in trunk though.

Regards

Tim Ward
-------------------
Apache Aries PMC member & Enterprise OSGi advocate
Enterprise OSGi in Action (http://www.manning.com/cummins)
-------------------


From: luke@code-house.org
Subject: Re: Aries and fluent builders
Date: Thu, 15 Dec 2011 09:26:37 +0100
To: user@aries.apache.org



Hey Timothy,I know that solution proposed by you will work but it will mess a XML. Once I'll need to inject more values I will have 100 lines only to put true or false in some fields.
Regards,Lukasz
Hi,

It's not very concise, but this should work:

    <bean id="processEngineConfiguration1" class="org.activiti.engine.ProcessEngineConfiguration" factory-method="createStandaloneInMemProcessEngineConfiguration"/>

    <bean id="processEngineConfiguration2" factory-ref="processEngineConfiguration1" factory-method="setDatabaseSchemaUpdate">
      <argument value="false"/>
    </bean>

    <bean id="processEngineConfiguration3" factory-ref="processEngineConfiguration2" factory-method="setDataSource">
      <argument>
        <bean class="org.h2.jdbcx.JdbcDataSource">
          <property name="url" value="jdbc:h2:mem:activiti" />
        </bean>
      </argument>
    </bean>

    <bean id="processEngineConfiguration4" factory-ref="processEngineConfiguration3" factory-method="setJobExecutorActivate">
      <argument value="true"/>
    </bean>


    <bean id="processEngine" factory-ref="processEngineConfiguration4" factory-method="buildProcessEngine"/>
If you're interested in more information about advanced blueprint techniques then you may find Enterprise OSGi in Action to be a useful resource. You can get 37% off if you use the code eosgi37 at the Manning website - http://www.manning.com/cummins 

Regards,

Tim Ward
-------------------
Apache Aries PMC member & Enterprise OSGi advocate
Enterprise OSGi in Action (http://www.manning.com/cummins)
-------------------


From: luke@code-house.org
Subject: Aries and fluent builders
Date: Thu, 15 Dec 2011 08:58:47 +0100
To: user@aries.apache.org

Hello,I tried to use Aries instead of Spring to configure Activiti process engine. The problem I meet was related to fluent builders. Activiti can be configured with fluent builder, for example:
ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
  .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
  .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
  .setJobExecutorActivate(true)
  .buildProcessEngine();
I ported this fragment to an XML fragment:
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">        <property name="jobExecutorActivate" value="true" />        <property name="databaseSchemaUpdate" value="false" />        <property name="dataSource">            <bean class="org.h2.jdbcx.JdbcDataSource">                <property name="url" value="jdbc:h2:mem:activiti" />            </bean>        </property>    </bean>    <bean id="processEngine" factory-ref="processEngineConfiguration" factory-method="buildProcessEngine">    </bean>
The error reported by blueprint is:org.osgi.service.blueprint.container.ComponentDefinitionException: No setter for jobExecutorActivate property
The jobExecutorActivate property returns an instance of ProcessEngineConfiguration so it is not a regular Java Bean property. Do you have any ideas how to manage both - Aries and Activiti to work together?
Best regards,Lukasz
 		 	   		  

Re: Aries and fluent builders

Posted by Łukasz Dywicki <lu...@code-house.org>.
Hey Timothy,
I know that solution proposed by you will work but it will mess a XML. Once I'll need to inject more values I will have 100 lines only to put true or false in some fields.

Regards,
Lukasz


> Hi,
> 
> It's not very concise, but this should work:
> 
>     <bean id="processEngineConfiguration1" class="org.activiti.engine.ProcessEngineConfiguration" factory-method="createStandaloneInMemProcessEngineConfiguration"/>
> 
>     <bean id="processEngineConfiguration2" factory-ref="processEngineConfiguration1" factory-method="setDatabaseSchemaUpdate">
>       <argument value="false"/>
>     </bean>
> 
>     <bean id="processEngineConfiguration3" factory-ref="processEngineConfiguration2" factory-method="setDataSource">
>       <argument>
>         <bean class="org.h2.jdbcx.JdbcDataSource">
>           <property name="url" value="jdbc:h2:mem:activiti" />
>         </bean>
>       </argument>
>     </bean>
> 
>     <bean id="processEngineConfiguration4" factory-ref="processEngineConfiguration3" factory-method="setJobExecutorActivate">
>       <argument value="true"/>
>     </bean>
> 
> 
>     <bean id="processEngine" factory-ref="processEngineConfiguration4" factory-method="buildProcessEngine"/>
> 
> If you're interested in more information about advanced blueprint techniques then you may find Enterprise OSGi in Action to be a useful resource. You can get 37% off if you use the code eosgi37 at the Manning website - http://www.manning.com/cummins 
> 
> Regards,
> 
> Tim Ward
> -------------------
> Apache Aries PMC member & Enterprise OSGi advocate
> Enterprise OSGi in Action (http://www.manning.com/cummins)
> -------------------
> 
> 
> From: luke@code-house.org
> Subject: Aries and fluent builders
> Date: Thu, 15 Dec 2011 08:58:47 +0100
> To: user@aries.apache.org
> 
> Hello,
> I tried to use Aries instead of Spring to configure Activiti process engine. The problem I meet was related to fluent builders. Activiti can be configured with fluent builder, for example:
> 
> ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
>   .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
>   .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
>   .setJobExecutorActivate(true)
>   .buildProcessEngine();
> 
> I ported this fragment to an XML fragment:
> 
>     <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
>         <property name="jobExecutorActivate" value="true" />
>         <property name="databaseSchemaUpdate" value="false" />
>         <property name="dataSource">
>             <bean class="org.h2.jdbcx.JdbcDataSource">
>                 <property name="url" value="jdbc:h2:mem:activiti" />
>             </bean>
>         </property>
>     </bean>
>     <bean id="processEngine" factory-ref="processEngineConfiguration" factory-method="buildProcessEngine">
>     </bean>
> 
> The error reported by blueprint is:
> org.osgi.service.blueprint.container.ComponentDefinitionException: No setter for jobExecutorActivate property
> 
> The jobExecutorActivate property returns an instance of ProcessEngineConfiguration so it is not a regular Java Bean property. Do you have any ideas how to manage both - Aries and Activiti to work together?
> 
> Best regards,
> Lukasz


RE: Aries and fluent builders

Posted by Timothy Ward <ti...@apache.org>.
Hi,

It's not very concise, but this should work:


    <bean id="processEngineConfiguration1" class="org.activiti.engine.ProcessEngineConfiguration" factory-method="createStandaloneInMemProcessEngineConfiguration"/>

    <bean id="processEngineConfiguration2" factory-ref="processEngineConfiguration1" factory-method="setDatabaseSchemaUpdate">
      <argument value="false"/>
    </bean>

    <bean id="processEngineConfiguration3" factory-ref="processEngineConfiguration2" factory-method="setDataSource">
      <argument>
        <bean class="org.h2.jdbcx.JdbcDataSource">
          <property name="url" value="jdbc:h2:mem:activiti" />
        </bean>
      </argument>
    </bean>

    <bean id="processEngineConfiguration4" factory-ref="processEngineConfiguration3" factory-method="setJobExecutorActivate">
      <argument value="true"/>
    </bean>


    <bean id="processEngine" factory-ref="processEngineConfiguration4" factory-method="buildProcessEngine"/>

If you're interested in more information about advanced blueprint techniques then you may find Enterprise OSGi in Action to be a useful resource. You can get 37% off if you use the code eosgi37 at the Manning website - http://www.manning.com/cummins 

Regards,

Tim Ward
-------------------
Apache Aries PMC member & Enterprise OSGi advocate
Enterprise OSGi in Action (http://www.manning.com/cummins)
-------------------


From: luke@code-house.org
Subject: Aries and fluent builders
Date: Thu, 15 Dec 2011 08:58:47 +0100
To: user@aries.apache.org



Hello,I tried to use Aries instead of Spring to configure Activiti process engine. The problem I meet was related to fluent builders. Activiti can be configured with fluent builder, for example:
ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
  .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
  .setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
  .setJobExecutorActivate(true)
  .buildProcessEngine();
I ported this fragment to an XML fragment:
    <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">        <property name="jobExecutorActivate" value="true" />        <property name="databaseSchemaUpdate" value="false" />        <property name="dataSource">            <bean class="org.h2.jdbcx.JdbcDataSource">                <property name="url" value="jdbc:h2:mem:activiti" />            </bean>        </property>    </bean>    <bean id="processEngine" factory-ref="processEngineConfiguration" factory-method="buildProcessEngine">    </bean>
The error reported by blueprint is:org.osgi.service.blueprint.container.ComponentDefinitionException: No setter for jobExecutorActivate property
The jobExecutorActivate property returns an instance of ProcessEngineConfiguration so it is not a regular Java Bean property. Do you have any ideas how to manage both - Aries and Activiti to work together?
Best regards,Lukasz