1 Reply Latest reply on Feb 6, 2007 9:56 AM by Chris Russell

    Adding JBPM to existing JBOSS 4.0.4 AS

    Jason Greiner Newbie

      I am attempting to add the JBPM Engine to my existing JBOSS 4.0.4 AS Configuration.

      When I run the ant dist I get this error. Anyone know where this file is? I searched my entire harddrive for support.xml and could not find it.

      C:\Development\Java\jbpm-starters-kit-3.1.2\jbpm\src\userguide\build.xml:5: Cannot find ../../../docbook-support/support.xml imported from C:\Development\Java\jbpm-starters-kit-3.1.2\jbpm\src\userguide\build.xml


      On a side note, does anyone know of any documentation that talks through adding the jbpm to an existing JBOSS 4.0.4 AS Configuration? I have found some documentation in readme files, and commits inside the build scripts. However most documents I see talks about using the existing jbpm configuration that comes with the starter kit.

      Thanks

        • 1. Re: Adding JBPM to existing JBOSS 4.0.4 AS
          Chris Russell Newbie

          For jbpm.3.2beta1 I have had some success but still get some exceptions related to transaction management when I try to signal a process to its end state.
          In a nutshell assuming you are deploying jbpm-enterprise.ear.
          1. Configure jboss with jms messaging as per jboss instructions.
          2. Config your data source e.g. cp jbpm-ds.xml $jboss/server/messaging/deploy
          2.5 Create the jbpm database using the scripts from jpdl/dist/ddl
          e.g. jbpm.jpdl.hsqldb.sql
          2.75 create and populate identity tables
          Cant remember where I got these??

          
          create table JBPM_ID_GROUP (ID_ bigint generated by default as identity (start with 1), CLASS_ char(1) not null, NAME_ varchar(255), TYPE_ varchar(255), PARENT_ bigint, primary key (ID_));
          create table JBPM_ID_MEMBERSHIP (ID_ bigint generated by default as identity (start with 1), CLASS_ char(1) not null, NAME_ varchar(255), ROLE_ varchar(255), USER_ bigint, GROUP_ bigint, primary key (ID_));
          create table JBPM_ID_PERMISSIONS (ENTITY_ bigint not null, CLASS_ varchar(255), NAME_ varchar(255), ACTION_ varchar(255));
          create table JBPM_ID_USER (ID_ bigint generated by default as identity (start with 1), CLASS_ char(1) not null, NAME_ varchar(255), EMAIL_ varchar(255), PASSWORD_ varchar(255), primary key (ID_));
          
          alter table JBPM_ID_GROUP add constraint FK_ID_GRP_PARENT foreign key (PARENT_) references JBPM_ID_GROUP;
          alter table JBPM_ID_MEMBERSHIP add constraint FK_ID_MEMSHIP_GRP foreign key (GROUP_) references JBPM_ID_GROUP;
          alter table JBPM_ID_MEMBERSHIP add constraint FK_ID_MEMSHIP_USR foreign key (USER_) references JBPM_ID_USER;
          
          
          
          INSERT INTO JBPM_ID_GROUP VALUES(1,'G','participant','security-role',NULL)
          INSERT INTO JBPM_ID_GROUP VALUES(2,'G','administrator','security-role',NULL)
          INSERT INTO JBPM_ID_GROUP VALUES(3,'G','hr','organisation',NULL)
          INSERT INTO JBPM_ID_GROUP VALUES(4,'G','sales','organisation',NULL)
          INSERT INTO JBPM_ID_GROUP VALUES(5,'G','manager','security-role',NULL)
          INSERT INTO JBPM_ID_MEMBERSHIP VALUES(1,'M',NULL,NULL,2,2)
          INSERT INTO JBPM_ID_MEMBERSHIP VALUES(2,'M',NULL,NULL,3,1)
          INSERT INTO JBPM_ID_MEMBERSHIP VALUES(3,'M',NULL,NULL,3,3)
          INSERT INTO JBPM_ID_MEMBERSHIP VALUES(4,'M',NULL,NULL,2,3)
          INSERT INTO JBPM_ID_MEMBERSHIP VALUES(5,'M',NULL,NULL,1,4)
          INSERT INTO JBPM_ID_MEMBERSHIP VALUES(6,'M',NULL,'boss',2,4)
          INSERT INTO JBPM_ID_MEMBERSHIP VALUES(7,'M',NULL,NULL,2,5)
          INSERT INTO JBPM_ID_MEMBERSHIP VALUES(8,'M',NULL,NULL,2,1)
          INSERT INTO JBPM_ID_MEMBERSHIP VALUES(9,'M',NULL,NULL,1,1)
          INSERT INTO JBPM_ID_USER VALUES(1,'U','cookie monster','cookie.monster@sesamestreet.tv','cookie monster')
          INSERT INTO JBPM_ID_USER VALUES(2,'U','ernie','ernie@sesamestreet.tv','ernie')
          INSERT INTO JBPM_ID_USER VALUES(3,'U','bert','bert@sesamestreet.tv','bert')
          INSERT INTO JBPM_ID_USER VALUES(4,'U','grover','grover@sesamestreet.tv','grover')
          
          insert into JBPM_ID_USER (ID_, CLASS_, NAME_, EMAIL_, PASSWORD_)
           values ('1', 'U', 'cookie monster', 'cookie.monster@sesamestreet.tv', 'cookie monster');
          insert into JBPM_ID_USER (ID_,CLASS_, NAME_, EMAIL_, PASSWORD_)
           values ('2', 'U', 'ernie', 'ernie@sesamestreet.tv', 'ernie');
          insert into JBPM_ID_USER (ID_,CLASS_, NAME_, EMAIL_, PASSWORD_)
           values ('3', 'U', 'bert', 'bert@sesamestreet.tv', 'bert');
          insert into JBPM_ID_USER (ID_,CLASS_, NAME_, EMAIL_, PASSWORD_)
           values ('4', 'U', 'grover', 'grover@sesamestreet.tv', 'grover');
          
          

          3. Add 2 queues to $jboss/server/messaging/deploy/jboss-messaging.sar/destinations-service.xml
           <mbean code="org.jboss.jms.server.destination.Queue"
           name="jboss.messaging.destination:service=Queue,name=JbpmCommandQueue"
           xmbean-dd="xmdesc/Queue-xmbean.xml">
           <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
           <attribute name="SecurityConfig">
           <security>
           <role name="guest" read="true" write="true"/>
           <role name="publisher" read="true" write="true" create="false"/>
           <role name="noacc" read="false" write="false" create="false"/>
           </security>
           </attribute>
           </mbean>
          
           <mbean code="org.jboss.jms.server.destination.Queue"
           name="jboss.messaging.destination:service=Queue,name=JbpmJobQueue"
           xmbean-dd="xmdesc/Queue-xmbean.xml">
           <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
           <attribute name="SecurityConfig">
           <security>
           <role name="guest" read="true" write="true"/>
           <role name="publisher" read="true" write="true" create="false"/>
           <role name="noacc" read="false" write="false" create="false"/>
           </security>
           </attribute>
           </mbean>
          

          Or figure out how to add a jbpm-services.xml with same queue definitions.
          4. Configure jboss's "other" security realm. The jbpm-console is using the security domain other. Therefore we need for the security domain other config to look like that sent in the
          preconfigured jbpm starter kit server so I copied the following from the
          starter kit/server/jbpm/conf/login-config.xml

          e.g. Edit $jboss/server/messaging/conf/login-config.xml
           <application-policy name = "other">
           <!-- A simple server login module, which can be used when the number
           of users is relatively small. It uses two properties files:
           users.properties, which holds users (key) and their password (value).
           roles.properties, which holds users (key) and a comma-separated list of
           their roles (value).
           The unauthenticatedIdentity property defines the name of the principal
           that will be used when a null username and password are presented as is
           the case for an unuathenticated web client or MDB. If you want to
           allow such users to be authenticated add the property, e.g.,
           unauthenticatedIdentity="nobody"
           -->
          
          <!-- RUSSELL added this to match the jbpm server config given. Changed JbpmDS to DefaultDS so we can see stuff.-->
           <authentication>
           <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule"
           flag="required">
           <module-option name="dsJndiName">java:/DefaultDS</module-option>
           <module-option name="principalsQuery">
           SELECT PASSWORD_ FROM JBPM_ID_USER WHERE NAME_=?
           </module-option>
           <module-option name="rolesQuery">
           SELECT g.NAME_ ,'Roles'
           FROM JBPM_ID_USER u,
           JBPM_ID_MEMBERSHIP m,
           JBPM_ID_GROUP g
           WHERE g.TYPE_='security-role'
           AND m.GROUP_ = g.ID_
           AND m.USER_ = u.ID_
           AND u.NAME_=?
           </module-option>
           </login-module>
           </authentication>
           </application-policy>
          

          You may want to leave your datasource at JbpmDS assuming step 2.
          5. Deploy the ear cp jbpm-enterprise.ear $jboss/server/messaging/deploy
          Should now be able to hit http://localhost:8080/jbpm-console

          Depends on versions but you might also look at this posting for hints
          http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4003457#4003457