How To use pluggable process variable persistence with Case Files in jBPM 7
Tutorial on how to persist case files in a different database table along with ProcessInstanceld in jBPM 7 so you can map your particular business information.
Join the DZone community and get the full member experience.
Join For FreeSome times we need to persist case file which includes business information into different database table along with processInstanceId so that you can map business information with particular processInstanceId. We can achieve this with below steps:
- Define custom data object,define it as Entity and make sure to extend VariableEntity
and must implement a Serializable interface, which look like as - In kie-workbench, goto Project settings-->Persistence and add custom entity(com.Shippment) and 'org.drools.persistence.jpa.marshaller.MappedVariable' under persistable data object, like as
- Note down the persistence unit name from the top of the screen and update
the datasource JNDI and hibernate dialect if needed - In kie-workbench, goto Project->Settings->Deployments->Marshalling Strategie and define the following marshaling strategy which is required for case file persistence
new org.drools.persistence.jpa.marshaller.JPAPlaceholderResolverStrategy("persistenceUnitName", classLoader);
- Create a case file variable in case definition of type 'com.Shippment'
- Start case instance with the following payload
-
Java
x10
1{
2"case-data" : {
3"shippment": {
4"com.Shippment":{
5"shippmentId": 1234,
6"shippmentDestination":"IN"
7} } },
8"case-user-assignments" : { },
9"case-group-assignments" : { }}
10
-
- In database schema you can see two tables with name 'Shippment' and 'MappedVariable'. Entries in these tables look like as
-
Java
x
1ysql> select * from Shippment;
2+----+------------+---------------------+
3| id |shippmentId |shippmentDestination |
4+----+------------+---------------------+
5| 1 | 1234 | IN |
6| 2 | 4321 | IN |
7+----+------------+---------------------+
82 rows in set (0.00 sec)
9101112mysql> mysql> select * from MappedVariable;
13+-------------+-------------------+--------+------------+--------------+---------+------------+------------+
14| mappedVarId | processInstanceId | taskId | variableId | variableType | OPTLOCK | workItemId | MAP_VAR_ID |
15+-------------+-------------------+--------+------------+--------------+---------+------------+------------+
16| 1 | 14 | 19 | 1 | com.Shippment | 0 | 28 | 1 |
17| 2 | 15 | 20 | 2 | com.Shippment | 0 | 29 | 2 |
18+-------------+-------------------+--------+------------+--------------+---------+------------+------------+
192 rows in set (0.00 sec)
-
Persistence (computer science)
Database
Opinions expressed by DZone contributors are their own.
Comments