现在的位置: 首页 > 综合 > 正文

JBPM 3.3.0 + JBOSS 4.2.3 + ORACLE 9i

2013年10月07日 ⁄ 综合 ⁄ 共 4222字 ⁄ 字号 评论关闭

    最近因为工作需要想研究一下jbpm,看过相关文档后知道jbpm3.3有了安装包比前面的版本有了提升。可安装的时候才发现事情远没有想得那么简单,尤其是在使用安装包不支持的数据库时。于是,呕心沥血:)在网上查找相关资料,自己尝试,总结出下面的安装过程。

 

    1.jbpm-installer-3.3.0.GA.jar安装,安装过程中指定好JBOSS目录。因为缺省情况下安装包不支持ORACLE,所以从安装界面随便选定一种数据库安装就可以。安装完后,在安装路径下会产生一个jbpm-3.3.0.GA的目录(以下以${JBPM3.3}表示)。在${JBOSSPATH}/server/default/deploy/路径下会产生一个jbpm的目录(以下以${JBOSS-JBPM}表示)。第一步完成。

    2.配置Oracle数据源。

        2.1配置ORACLE连接驱动。在${JBOSS-JBPM}路径下存在一个“*-ds.xml”的文件,“*”与安装过程选的数据库名一致,可能还有一个向关的数据库驱动jar包,我们在这里将它删除。然后将oracle的驱动ojdbc14.jar拷一份过来,然后我们再写一个oracle-ds.xml。什么,不会写!没关系,你可以从${JBOSSPATH}/docs/examples/jca目录下拷一份出来,然后修改成你需要的地址和数据库名。

        2.2ORACLE导入JBPM数据。随便找个ORACLE客户端,如TOAD等,将${JBPM3.3}/database/jbpm.jpdl.oracle.sql文件中的sql脚本执行一遍。数据库建完。

        2.3配置hibernate。打开${JBOSS-JBPM}/jbpm-service.sar/hibernate.cfg.xml文件,将<property name="hibernate.dialect">的值改为org.hibernate.dialect.Oracle9Dialect

    OK!安装完成!看看效果吧!

    输入地址http://localhost:8080/jbpm-console看到下面这个页面

 


    好好吧,让我们试着登陆一下!抱歉,现在你没有办法登上,认证授权还不支持。下面,我们继续努力!

    3.安装jbpm-console认证授权。

    3.1oracle生成相关认证数据表。没有合适的数据,自己按照页面上的用户情况生成了如下数据库脚本:

create table JBPM_ID_GROUP (ID_ number(19,0) not null, CLASS_ char(1) not null, NAME_ varchar(255), TYPE_ varchar(255), PARENT_ number(19,0), primary key (ID_));

create table JBPM_ID_MEMBERSHIP (ID_ number(19,0) not null, CLASS_ char(1) not null, NAME_ varchar(255), ROLE_ varchar(255), USER_ number(19,0), GROUP_ number(19,0), primary key (ID_));

create table JBPM_ID_PERMISSIONS (ENTITY_ number(19,0) not null, CLASS_ varchar(255), NAME_ varchar(255), ACTION_ varchar(255));

create table JBPM_ID_USER (ID_ number(19,0) not null, 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_USER (ID_, CLASS_, NAME_, EMAIL_, PASSWORD_) values ('1', 'U', 'user', 'sample.user@sample.domain', 'user');

insert into JBPM_ID_USER (ID_,CLASS_, NAME_, EMAIL_, PASSWORD_) values ('2', 'U', 'manager', 'sample.manager@sample.domain', 'manager');

insert into JBPM_ID_USER (ID_,CLASS_, NAME_, EMAIL_, PASSWORD_) values ('3', 'U', 'shipper', 'sample.shipper@sample.domain', 'shipper');

insert into JBPM_ID_USER (ID_,CLASS_, NAME_, EMAIL_, PASSWORD_) values ('4', 'U', 'admin', 'sample.admin@sample.domain', 'admin');

insert into JBPM_ID_GROUP VALUES(1,'G','admin','security-role',NULL);

insert into JBPM_ID_GROUP VALUES(2,'G','manager','security-role',NULL);

insert into JBPM_ID_GROUP VALUES(3,'G','user','organisation',NULL);

insert into JBPM_ID_MEMBERSHIP VALUES(1,'M',NULL,'user',1,3);

insert into JBPM_ID_MEMBERSHIP VALUES(2,'M',NULL,'admin',2,1);

insert into JBPM_ID_MEMBERSHIP VALUES(3,'M',NULL,'manager',2,2);

insert into JBPM_ID_MEMBERSHIP VALUES(4,'M',NULL,'user',2,3);

insert into JBPM_ID_MEMBERSHIP VALUES(5,'M',NULL,'user',3,3);

insert into JBPM_ID_MEMBERSHIP VALUES(6,'M',NULL,'admin',4,1);

insert into JBPM_ID_MEMBERSHIP VALUES(7,'M',NULL,'user',4,3);

把这些脚本在oracle中执行一遍。

    3.2配置login-config.xml。打开${JBOSSPATH}/server/default/conf/login-config.xml文件,在文件中加入

       <application-policy name = "jbpm-console">

              <authentication>

                <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule"

                              flag="required">

                  <module-option name="dsJndiName">java:/JbpmDS</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>

   其中jbpm-console必须与${JBOSS-JBPM}/jbpm-enterprise-bundle.ear/jsf-console.war/WEB-INF/jboss-web.xml中的<security-domain>所设置的名字一致。

3.3设置web.xml。打开${JBOSS-JBPM}/jbpm-enterprise-bundle.ear/jsf-console.war/WEB-INF/web.xml

抱歉!评论已关闭.