[jboss-user] [JBoss jBPM] - Re: A sample with HibernateLongInstance or HibernateStringI
doballve
do-not-reply at jboss.com
Thu Feb 1 08:32:29 EST 2007
Just to give it code example, here is how you would do for a HibernateLongInstance:
First, You have a hibernate entity with id of type Long and a hibernate mapping to your class properly loaded in the same session as JBPM mappings. The mapping:
<class name="mypackage.MyEntity" table="SAMPLE_ENTITY">
| <id name="id" column="id" unsaved-value="0" type="java.lang.Long">
| <generator class="native"/>
| </id>
| ...
| </class>
Then you use a HibernateLongInstance to wrap your entity and store it as any other JBPM variable:
...
| // create my entity an wrap it with HibernateLongInstance
| MyEntity ent = new MyEntity();
| HibernateLongInstance entWrapper = new HibernateLongInstance();
| envWrapper.setObject(ent);
|
| // store it to root token context
| ContextInstance contextInstance = (ContextInstance)
| token.getProcessInstance().getInstance(ContextInstance.class);
| contextInstance.setVariable("my-entity-variable", entWrapper);
| ...
To access it later, just get the wrapped object and class cast it back to your entity:
...
| ContextInstance contextInstance = (ContextInstance)
| token.getProcessInstance().getInstance(ContextInstance.class);
| HibernateLongInstance entWrapper = (HibernateLongInstance)
| contextInstance.getVariable("my-entity-variable");
| MyEntity entData = (MyEntity)entWrapper.getObject();
| ...
That's it!
A warning though: The default configuration has Serializable type mapped before Hibernate and EJB types. That means that if your entity class implements java.io.Serializable it will get serialized as a byte array and not as a Hibernate entity. To avoid this behavior, re-order the types in jbpm.varmapping.xml.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4009404#4009404
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4009404
More information about the jboss-user
mailing list