At line 1 changed 1 line. |
__Part I:__ [Integrating jBPM into AppFuse] - Integrating jBPM Support (via Spring-Modules) into AppFuse.\\ |
__Part I:__ [Integrating jBPM into AppFuse] - Integrate jBPM Support (via Spring-Modules) into AppFuse.\\ |
At line 3 changed 1 line. |
__Part III:__ [Integrating jBPM into AppFuse Part Trois] - Enhancing defintions to support tasks, users, schedule and injecting spring beans into actions.\\ |
__Part III:__ [Integrating jBPM into AppFuse Part Trois] - Enhance defintions to support tasks, users, schedule and injecting spring beans into actions.\\ |
At line 7 changed 1 line. |
This is the 3rd tutorial of a 3 part series. The tutorial will cover enhanding defintions with users, tasks, schedule, peristnece and injecting spring beans into action. Before proceeding further please review Part I / Part II.\\ |
This is the 3rd tutorial of a 3 part series. The tutorial will cover enhancing defintions with users, tasks, schedule, persistence and injecting spring beans into action. Before proceeding further please review Part I / Part II.\\ |
At line 11 changed 7 lines. |
* [2] Create and load identities into jBPM database |
* [3] Enhance Process Defintion by creating and assigning tasks |
* [4] Write test case to validate Process Definition execution |
* [5] Enhance Process Defintion by creating ActionHandlers (DecisionHandler) |
* [6] Write test case to validate new Process Definition execution |
* [7] Wire spring beans inside jBPM Actions |
* [8] Test spring bean execution |
* [2] Enhance Process Defintion by creating and assigning tasks |
* [3] Write test case to validate Process Definition execution |
* [4] Enhance Process Defintion by creating ActionHandlers (DecisionHandler) |
* [5] Write test case to validate new Process Definition execution |
* [6] Wire spring beans inside jBPM Actions |
* [7] Test spring bean execution |
At line 20 added 81 lines. |
Before we create the schema tasks lets create some packages which willl contain actions and config files. |
|
Create the following packages:\\ |
{{org.appfuse.jbpm.config}}\\ |
{{org.appfuse.jbpm.action}}\\ |
|
The following files are from the Jbpm Starter Kit (see [IntegratingJBPMIntoAppFuse] for the download link) :- |
|
Copy these files to {{org.appfuse.jbpm.config}}:\\ |
1. {{jbpm/src/config.files/hibernate.cfg.xml}}\\ |
2. {{jbpm/src/resources/hsqldb/create.db.hibernate.properties}}\\ |
3. {{jbpm/src/resources/hsqldb/identity.db.xml}}\\ |
|
{{create.db.hibernate.properties}} does require modification . It has to point to the Jbpm datasource (same as the one defined in Part I). |
|
{{{ |
|
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect |
hibernate.connection.driver_class=com.mysql.jdbc.Driver |
hibernate.connection.url=jdbc:mysql://localhost/jbpm?useUnicode=true&characterEncoding=utf-8 |
hibernate.connection.username=root |
hibernate.connection.password= |
hibernate.show_sql=true |
|
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider |
|
}}} |
|
;:%%(color: blue)''You might want to change the cache provider for production usage to a more robust one such as Ecache. If you plan on sticking with this one, ensure that {{dao.compile.classpath}} in {{properties.xml}} contains this reference:''%% |
|
{{{ |
<!-- DAO --> |
<path id="dao.compile.classpath"> |
... |
<pathelement location="${commons-collections.jar}"/> |
... |
</path> |
}}} |
|
{{identity.db.xml}} contains users/group/participation data. It can be modified to your liking. More on this later when we delve into creating / assinging tasks in the workflow. |
|
|
And finally add these targets to your main AppFuse {{build.xml}} file: |
|
{{{ |
|
<target name="build.processes" description="builds the example processes"> |
<copy todir="build/dao/gen/org/appfuse/jbpm/process/test"> |
<fileset dir="src/dao/org/appfuse/jbpm/process/test" /> |
</copy> |
<zip destfile="build/dao/gen/org/appfuse/jbpm/process/test.process"> |
<fileset dir="build/dao/gen/org/appfuse/jbpm/process/test" /> |
</zip> |
</target> |
|
<target name="clean_jbpm" depends="build.processes, declare.jbpm.tasks" description="refreshes jbpm database"> |
<jbpmschema actions="drop" |
cfg="src/dao/org/appfuse/jbpm/config/hibernate.cfg.xml" |
properties="src/dao/org/appfuse/jbpm/config/create.db.hibernate.properties"/> |
<jbpmschema actions="create" |
cfg="src/dao/org/appfuse/jbpm/config/hibernate.cfg.xml" |
properties="src/dao/org/appfuse/jbpm/config/create.db.hibernate.properties"/> |
<deployprocess cfg="src/dao/org/appfuse/jbpm/config/hibernate.cfg.xml" |
properties="src/dao/org/appfuse/jbpm/config/create.db.hibernate.properties"> |
<fileset dir="build/dao/gen/org/appfuse/jbpm/process" includes="*.process" /> |
</deployprocess> |
<loadidentities file="src/dao/org/appfuse/jbpm/config/identity.db.xml" |
cfg="src/dao/org/appfuse/jbpm/config/hibernate.cfg.xml" |
properties="src/dao/org/appfuse/jbpm/config/create.db.hibernate.properties"/> |
</target> |
|
<target name="declare.jbpm.tasks"> |
<taskdef classpathref="dao.compile.classpath" resource="org/jbpm/ant/jbpm.ant.tasks.properties" format="properties"></taskdef> |
</target> |
}}} |
\\ |
{{build.processes}} is a convenience task to build process defnitions. Multiple definitions can be added.\\ |
{{declare.jbpm.tasks}} does exactly what it names implies, loads task definitions used in clean_jbpm target.\\ |
{{clean_jbpm}} refreshes the jbpm db. Which i find myself doing a lot of! It first drops the schema(you will lose all changes, so beware), then creates a new one, then deploys process defintions and finally loads workflow identities(users) into the jbpm database. |
|
Execute __ant clean_jbpm__ and watch the magic happen! |