JSF2.0 と JBoss jBPM の併用。
Eclipse 3.5 上 で、WTP と m2eclipse を使ってやってみる。試しに、jBPM のプロセス定義をJSF 2.0の表で表示してみる。
■ 使用プロダクト
- Eclipse 3.5 Galileo
- Maven 2.2.1
- WTP 3.1.1
- MySQL 5.0.45
- JSF 2.0.1
- jBPM 4.1
■ プロジェクトの作成
- 名前:jsf-jbpm2 で Dynamic Web Projectを作成。
- プロジェクトのコンテキストメニューから [Maven]->[Enable Dependency Management]を実行
- pom.xml の dependencies に以下を追記
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.10</version> </dependency> <dependency> <groupId>org.jbpm.jbpm4</groupId> <artifactId>jbpm-jboss4</artifactId> <version>4.1</version> <exclusions> <exclusion> <groupId>juel</groupId> <artifactId>juel</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.0.1-FCS</version> </dependency> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.0.1-FCS</version> </dependency>
もし、なんかの jar が 無いとか言われたら repositories に、例えば以下の URL とかを追加するといいかもしれない。ダメかもしれない。
http://repository.jboss.com/maven2/ - プロジェクトの Properties の[Java EE Module Dependencies] で、Maven Dependencies にチェックを入れる
■ JSF 2.0 の確認
- Servers ビューで jsf-jbpm2 プロジェクトを追加する
- WebContent 直下に以下の test.xhtml を置く
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"> <h:body> <h:outputLabel for="text1"> <h:outputText id="text1" value="Hello, World!" /> </h:outputLabel> </h:body> </html>
- Servers ビューから Tomcat v6.0 を起動する
- 適当なブラウザで、http://localhost:8080/jsf-jbpm2/test.faces を見てみる
- ”Hello, World!”が表示されて、ソースにも怪しいところが無ければ成功。
※ 以下、すでにプロセス定義がいくつか登録されている前提
- ソースフォルダ resources を新規作成する
- resources 下で、以下のファイルを作成する
- jbpm.cfg.xml
<?xml version="1.0" encoding="UTF-8"?> <jbpm-configuration> <import resource="jbpm.default.cfg.xml" /> <import resource="jbpm.jpdl.cfg.xml" /> <import resource="jbpm.tx.hibernate.cfg.xml" /> <import resource="jbpm.identity.cfg.xml" /> </jbpm-configuration>
- jbpm.hibernate.cfg.xml (MySQL サービスが立ち上がっている前提。データベースは適当でOK。)
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost/jbpm</property> <property name="hibernate.connection.username"></property> <property name="hibernate.connection.password"></property> <property name="hibernate.hbm2ddl.auto">verify</property> <property name="hibernate.format_sql">true</property> <mapping resource="jbpm.repository.hbm.xml" /> <mapping resource="jbpm.execution.hbm.xml" /> <mapping resource="jbpm.history.hbm.xml" /> <mapping resource="jbpm.task.hbm.xml" /> <mapping resource="jbpm.identity.hbm.xml" /> </session-factory> </hibernate-configuration>
- log4j.properties を適当に書く
log4j.rootLogger=DEBUG, CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p %C{1} : %m%n log4j.logger.org.jbpm=DEBUG log4j.logger.org.hibernate=INFO
- jbpm.cfg.xml
- ソースフォルダ src を新規作成する
- 以下のクラスを src 下に作成する
package mypackage; import 略 @ManagedBean(name="definitionList") public class ProcessDefinitions { public List<ProcessDefinition> getItems() { ProcessEngine engine = Configuration.getProcessEngine(); RepositoryService rs = engine.get(RepositoryService.class); return rs.createProcessDefinitionQuery().list(); } }
- resources 下に以下のようにmessages.properties を作成する
idLabel=ID keyLabel=KEY nameLabel=NAME versionLabel=VERSION
- WebContent 下に、以下のようにprocessDefinitions.xhtmlを作成する。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <h:head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>rules</title> <style> .list-background{border-collapse:collapse;border:1px solid grey;} .list-header{background-color:Plum;border:1px solid grey;width:96px;} .col-center{border-right:1px solid grey;} .row-odd{background-color:moccasin;} .row-even{background-color:mistyRose;} </style> </h:head> <h:body> <f:loadBundle basename="messages" var="msg" /> <h:dataTable id="processDefinitionList" columnClasses="col-center,col-center,col-center" headerClass="list-header" rowClasses="row-odd,row-even" styleClass="list-background" value="#{definitionList.items}" var="definition" cellpadding="0" cellspacing="0"> <h:column> <f:facet name="header">#{msg.idLabel}</f:facet> #{definition.id} </h:column> <h:column> <f:facet name="header">#{msg.keyLabel}</f:facet> #{definition.key} </h:column> <h:column> <f:facet name="header">#{msg.nameLabel}</f:facet> #{definition.name} </h:column> <h:column> <f:facet name="header">#{msg.versionLabel}</f:facet> #{definition.version} </h:column> </h:dataTable> </h:body> </html>
・以下のように内容が表示されれば、JSF と jBPM の両方がちゃんと使えてる事になる。
0 件のコメント:
コメントを投稿