Finally I got jBPM deployed successfully on Weblogic 9.2. Thanks to "Maciej Swiderski" and "HuiSheng Xu" for their timely help and suggestions. I am also very much thankful to my company CrossCountry Infotech for supporting my efforts.
I used Weblogic 9.2, jBPM 4.4, Mysql 5 and Eclipse 3.5 combination. I would suggest you to install Weblogic Eclipse plug-in. That will help you to edit some of the Weblogic configuration xmls.
I am assuming that you have downloaded and installed Weblogic 9.2, Mysql 5.
Pre Deployment Activities
We need to create two shared libraries for Weblogic, one for jBPM core jars and one for BIRT jars. Instead of creating the shared libraries you can put the said jars on classpath but I would recommend the shared library approach.
The shared library approach will give us control over loading required classes from our package if same are conflicting with Weblogic provided classes. All the required configuration xmls (jBPM, hibernate, mail and logging) can be bundled as jar and placed in above mentioned jBPM core library.
Library Creation
jBPM Configuration Library
Create a Jar with following files and name it, jbpm-cfg.jar
- jbpm.cfg.xml
- jbpm.hibernate.cfg.xml
- jbpm.mail.properties
- logging.properties
All the above mentioned files are attached with this article. To set the respective values please refer to jBPM developer handbook (jBPM in J2EE environment) or user guide documentation.
jBPM Core Shared Library Creation
Create an EAR project in Eclipse named as “jBPMCoreLibrary”. Add following jars to APP-INF/lib directory. You will find all the jars in { jbpm.home }/lib directory
- activation.jar
- antlr.jar
- antlr-runtime.jar
- bsh.jar
- cglib.jar
- commons-collections.jar
- commons-logging.jar
- dom4j.jar
- drools-api.jar
- drools-core.jar
- drools-compiler.jar
- freemarker.jar
- gwt-console-rpc.jar
- gwt-console-server-integration.jar
- hibernate-core.jar
- janino.jar
- javassist.jar
- jaxb-api.jar
- jaxb-impl.jar
- jbpm.jar
- jbpm-console-form-plugin.jar
- jbpm-console-integration.jar
- jbpm-console-graphView-plugin.jar
- joda-time.jar
- jsr173_1.0_api.jar
- jta.jar
- juel-api.jar
- juel-engine.jar
- juel-impl.jar
- livetribe-jsr223.jar
- log4j.jar
- mail.jar
- mvel2.jar
- slf4j-api.jar
- slf4j-jdk14.jar
- jbpm-cfg.jar (Created Above)
Create one dynamic web project, “jBPMCoreLibraryWeb” and add it to the above created EAR project. This is to resolve the error in EAR project, “A Java EE Enterprise Application must contain one or more modules in application.xml”
Once you are done with above EAR creation edit the “weblogic-application.xml” and add following lines to it inside </wls:weblogic-application> element. It is in “META-INF” directory of the EAR project.
<wls:prefer-application-packages>
<wls:package-name>org.mozilla.javascript.*</wls:package-name>
<wls:package-name>org.mozilla.classfile.*</wls:package-name>
</wls:prefer-application-packages>
This is to avoid the js.jar conflict. Please refer to this link for more details. http://wiki.eclipse.org/BIRT/FAQ/Deployment#Q:_How_do_I_install_BIRT_in_WebLogic_10.0
BIRT Shared Library
Similarly we need to create the BIRT shared library. Create an EAR project for the same and name it as, “jBPMBIRTLibrary”.
Add following jars to APP-INF/lib directory of that EAR project.
- chartengineapi.jar
- com.ibm.icu_3.8.1.v20080530.jar
- commons-cli-1.0.jar
- coreapi.jar
- crosstabcoreapi.jar
- dataadapterapi.jar
- dataaggregationapi.jar
- dataextraction.jar
- dteapi.jar
- engineapi.jar
- flute.jar
- js.jar
- modelapi.jar
- modelodaapi.jar
- odadesignapi.jar
- org.apache.commons.codec_1.3.0.v20080530-1600.jar
- org.eclipse.emf.common_2.4.0.v200902171115.jar
- org.eclipse.emf.ecore.xmi_2.4.1.v200902171115.jar
- org.eclipse.emf.ecore_2.4.2.v200902171115.jar
- org.w3c.css.sac_1.3.0.v200805290154.jar
- scriptapi.jar
You will find all the jars in ReportEngine/lib directory. This is the extracted directory of “report-engine.zip” and can be found in { jbpm.home }/lib directory.
Create one dynamic web project, “jBPMBIRTLibraryWeb” and add it to the above created EAR project. This is to resolve the error in EAR project, “A Java EE Enterprise Application must contain one or more modules in application.xml”
Once you are done with above EAR creation edit the “weblogic-application.xml” and add following lines to it inside </wls:weblogic-application> element. It is in “META-INF” directory of the EAR project.
<wls:prefer-application-packages>
<wls:package-name>org.mozilla.javascript.*</wls:package-name>
<wls:package-name>org.mozilla.classfile.*</wls:package-name>
</wls:prefer-application-packages>
BIRT Installation
Create a directory named “serverDirForBirt” inside the Weblogic domain directory. Create one more directory named “birt” inside it.
Now unzip the {jbpm.home }/lib/report-engine.zip into that directory. Remove all the jars from the unzipped ReportEngine/lib directory. Those jars are included in the above BIRT Shared Library.
Unzip {jbpm.home }/lib/jbpm-console-reports.jar into the same directory.
Set “-Dorg.jbpm.report.engine.dir” java options in serverDirForBirt\birt {Weblogic_domain_dir/bin/}setDomainEnv.cmd/sh file.
e.g. -Dorg.jbpm.report.engine.dir=C:\bea923\user_projects\domains\Int_domain\serverDirForBirt\birt
jBPM Console Application
Import “gwt-console-jbpm.war” and “gwt-console-server-jbpm.war” into eclipse. (Can be found in {jbpm.home } /lib)
Rename them to,
gwt-console-jbpm => jbpm-console
gwt-console-server-jbpm. => gwt-console-server
Add the “weblogic.xml” in the WEB-INF directory of “gwt-console-server” project and add the following lines to it.
<weblogic-web-app>
<security-role-assignment>
<role-name>administrator</role-name>
<principal-name>jBPMAdmin</principal-name>
</security-role-assignment>
</weblogic-web-app>
You can map the roles in web.xml with your principle names configured in Weblogic. Please refer to the "Security Configuration" section of this article for more details on roles. Here I have mapped only “administrator” role. There are two more roles “manager” and “user”. You can map them as per your choice.
We will deploy the console WARs as part of EAR. So create a third EAR project named, “jBPMConsoleApp”. Add above two web projects to this EAR project viz. jbpm-console and gwt-console-server.
The console application requires some jars from jBPM core library so make them available by adding following tags in Weblogic-application.xml of this EAR.
<wls:library-ref>
<wls:library-name>jBPM-Core-Library</wls:library-name>
<wls:specification-version>4.4</wls:specification-version>
<wls:exact-match>false</wls:exact-match>
</wls:library-ref>
<wls:library-ref>
<wls:library-name>jBPM-BIRT-Library</wls:library-name>
<wls:specification-version>1.0</wls:specification-version>
<wls:exact-match>false</wls:exact-match>
</wls:library-ref>
Once you are done with the above EAR creation edit the “weblogic-application.xml” and add following lines to it inside </wls:weblogic-application> element. It is in “META-INF” directory of the EAR project.
<wls:prefer-application-packages>
<wls:package-name>org.mozilla.javascript.*</wls:package-name>
<wls:package-name>org.mozilla.classfile.*</wls:package-name>
</wls:prefer-application-packages>
Database Schema
Execute Mysql scripts and create the database named “jbpm4”. The scripts for mysql can be found in, “{jbpm.home }\install\src\db\create” directory with name, jbpm.mysql.create.sql.
You can load the sample users and data by using script, example.identities.sql located at,
{jbpm.home }\ install\src\demo.
Start Weblogic Server....
Configurations On Weblogic
Datasource Creation On Weblogic
Create Mysql datasource on Weblogic with following name, jBPM DS and JNDI name, “JbpmDS”. You can choose any data source name but JNDI name should be “JbpmDS”.
Security Roles Configuration On Weblogic
We have now come to the final configuration. This is the security roles configuration on Weblogic.
Create a new “Authentication Providers” of type SQL Authenticator.
Provide following values to the given fields.
Navigation in Weblogic Console, Home > Summary of Security Realms > myrealm > Providers
Field | Value |
Name | jBPMAuth |
Control Flag | SUFFICIENT |
Data Source Name | jBPM DS (Created Above) |
Plaintext Passwords Enabled | True |
SQL Get Users Password | SELECT PASSWORD_ FROM JBPM4_ID_USER WHERE ID_=? |
SQL User Exists | SELECT ID_ FROM JBPM4_ID_USER WHERE ID_ = ? |
SQL List Users | SELECT ID_ FROM JBPM4_ID_USER WHERE ID_ LIKE ? |
SQL List Groups | SELECT ID_ FROM JBPM4_ID_GROUP WHERE ID_ LIKE ? |
SQL Group Exists | SELECT ID_ FROM JBPM4_ID_GROUP WHERE ID_ = ? |
SQL Is Member | SELECT u.ID_ FROM JBPM4_ID_MEMBERSHIP m, JBPM4_ID_USER u, JBPM4_ID_GROUP g WHERE g.ID_ = ? AND u.ID_ = ? AND m.GROUP_ = g.DBID_ AND m.USER_ = u.DBID_ |
SQL List Member Groups | SELECT g.ID_ FROM JBPM4_ID_MEMBERSHIP m, JBPM4_ID_USER u, JBPM4_ID_GROUP g WHERE u.ID_ = ? AND m.GROUP_ = g.DBID_ AND m.USER_ = u.DBID_ |
SQL Get User Description (If you check the “Descriptions Supported” box) | SELECT GIVENNAME_ FROM JBPM4_ID_USER WHERE ID_ = ? |
SQL Get Group Description (If you check the “Descriptions Supported” box) | SELECT TYPE_ FROM JBPM4_ID_GROUP WHERE ID_ = ? |
P.S. Please check the cases of table names if it does not work on Linux.
You need to restart the Weblogic server...
You can verify the configuration success using following navigation. Home > Summary of Security Realms > myrealm > Users and Groups
It should show something like Figure 1. These are the users inserted by example.identities.sql.
Figure 1
https://community.jboss.org/servlet/JiveServlet/downloadImage/102-15968-14-10472/310-148/users_list.PNG
Deploying created libraries and application
Now we are ready to deploy the above created entities.
1. jBPMCoreLibrary.ear
2. jBPMBIRTLibrary.ear
3. jBPMConsoleApp.ear
Deploy the first two EARs, jBPMCoreLibrary.ear and jBPMBIRTLibrary.ear as library on Weblogic. The third should be deployed as application. Your deployments will look as shown in below diagram.
https://community.jboss.org/servlet/JiveServlet/downloadImage/102-15968-14-10474/450-81/deployments.PNG
Try http://localhost:7001/jbpm-console/app.html and start building powerful applications in jBPM which can run on Weblogic.
For the applications running on that server to use the jBPM refer to above jBPMCoreLibrary from that application.
Reference Links:
http://community.jboss.org/thread/152527
http://community.jboss.org/thread/153405
http://community.jboss.org/thread/152589
You can use this URL to access the console app,
http://localhost:8080/jbpm-console
You have to write the client code to create jbpm process instance or tasks or add users.
See if this helps,
http://docs.jboss.org/jbpm/v5.4/userguide/ch.quickstarts.html