Raible's Wiki

Raible Designs
Wiki Home
News
Recent Changes

AppFuse

Homepage
  - Korean
  - Chinese
  - Italian
  - Japanese

QuickStart Guide
  - Chinese
  - French
  - German
  - Italian
  - Korean
  - Portuguese
  - Spanish
  - Japanese

User Guide
  - Korean
  - Chinese

Tutorials
  - Chinese
  - German
  - Italian
  - Korean
  - Portuguese
  - Spanish

FAQ
  - Korean

Latest Downloads

Other Applications

Struts Resume
Security Example
Struts Menu

Set your name in
UserPreferences


Referenced by
AmeerAhmed
IntegratingJBPMIntoA...
IntegratingJBPMIntoA...




JSPWiki v2.2.33

[RSS]


Hide Menu

IntegratingJBPMIntoAppFusePartTrois


This is version 7. It is not the current version, and thus it cannot be edited.
[Back to current version]   [Restore this version]


Part I: Integrating jBPM into AppFuse - Integrate jBPM Support (via Spring-Modules) into AppFuse.
Part II: Integrating jBPM into AppFuse Part Deux - Setup AppFuse/jBPM in Eclipse, model defintions using the Jbpm Process Designer.
Part III: Integrating jBPM into AppFuse Part Trois - Enhance defintions to support tasks, users, schedule and injecting spring beans into actions.

About this tutorial

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.

Table of Contents

  • [1] Create JBPM Schema Ant Tasks
  • [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

[#1] Create JBPM Schema Ant Tasks

Before we create the schema tasks lets create some packages which willl contain actions, configurations and ant tasks:

Create the following packages:
org.appfuse.jbpm.config - will contain hibernate configuration files / identity files
org.appfuse.jbpm.action - will contain jbpm actions

The following files are from the Jbpm Starter Kit (see IntegeratingJBPMIntoAppfuse for the download link) :-

Copy the following 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 to point to the Jbpm datasource (the same as the one defined previously 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



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 the next 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 beaware), then creates a new one, then deploys the process defintions and finally loads the workflow identities(users) into the jbpm database.



Go to top   More info...   Attach file...
This particular version was published on 03-Mar-2007 23:10:49 MST by AmeerAhmed.