2009年2月28日土曜日

jBPM 4.0.0-Alpha2 Released

jBPM4.0.0のAlpha2がリリースされてた。

JIRAによれば、fixされているissueは33個。まぁ個数は問題じゃないけど。

定義情報の名称に変更があったりするようなのでまだまだ開発途上な雰囲気は否めないが、早い時期に更新版をリリースできるのはオープンソースとしては良い傾向にあると思う。スピード感命的な。

jbpm-usersのメーリングリストに、Oracle Workflowからの移行ツールを作ったぜ!という内容の投稿を見つけた。勘弁してくださいよもぅ。

2009年2月19日木曜日

Coherence担当者と会うの巻

Coherenceの担当者であるが来日していたので、彼らに会う。
忙しい中時間を割いてくれて、我々のぼやけた?悩みを聞いてくれた。感謝感謝。
もっとも自分はカタコト英語なので迷惑をかけたかもしれないが...

Coherenceはとても素晴らしい製品(アプリケーションの構造が変わると言っても良いくらいだと思う)なので、もっと広く知れ渡って欲しい。
キャンペーンサイトがあるのでリンクしておく。

急増するリクエスト、データ量に対する拡張可能な超高速インメモリ処理 アプリケーション・グリッド/ Oracle Coherence / 日本オラクル

技術情報はこちら
Coherence Knowledge Base

2009年2月15日日曜日

jBPMに触れてみる 4 of n

jBPM(3.x)でデプロイしたプロセスは、jbpm-consoleというアプリケーションで実行することができる(実行できるようになるまで苦労したが、それはそれ)。

シンプルなjbpm-consoleの操作画面





基本的な機能としては以下のものがあるようだ。
  • プロセスの新規インスタンス起動、停止
  • プロセスの削除(途中キャンセル)
  • プロセスへの引数入力
  • プロセスへのシグナル送信
  • (ユーザのロールに応じた)タスク一覧の表示
  • プロセスの画像表示(インスタンスの状況に応じて該当部分をハイライトできる。ちょっと良い)





ハイライトされたプロセスの画像。

全体的に動作が軽く、使いづらさはさほど感じない。
問題は、時折JSF動作時のコンパイル関係っぽいエラーが出ることと、
このコンソールでプロセスをさくさく進行・確認出来ても、
業務プロセスの実装という観点ではあまり意味がないことだ。

後者は特に重要で...実装およびデプロイされているプロセスに関わる人が皆このアプリケーションを使ってプロセスを進めるとは思えないし。
jBPMのAPIとしての性格から見ると、組み込みプロセスエンジンとしての役割をある程度果たすためには、何かしら外のアプリケーションとのやりとりでプロセスが進んでいくことが必要になるだろうと思う。
管理コンソールで実行してるだけで満足しちゃいかんのである。

「ファイルを定期的に読み取ってプロセス開始」という単純なものでも、
プロセスの途中でメールを送ったり外部のアプリケーションを実行したりすることもあるわけだ。
# Oracle BPEL PMにはそういうことを実装するためのアクティビティやPartnerLinkがあらかた揃ってるわけだが...

今後jBPMを機能面で見ていくにあたり、この観点で調査をしていこうと思う。

2009年2月13日金曜日

Oracle Rich Enterprise Application サイト公開中

ちょっと前から、米国OracleサイトにてOracle REAのサイトが公開されています。

Oracle Rich Enterprise Applications

Oracle ADF/Oracle WebCenterを使った、
リッチなWebアプリケーションを実現するための情報を提供しています。

Oracle REAはJDeveloper 11gでの開発を前提にしています。
このサイトからリッチクライアントおよび
ADF Data Visualization(グラフや地図などデータを入れるだけで使える画面部品群)のデモ、
チュートリアルを見ることができます。

是非一度ご覧ください。

InfoQにもざっとした概要の記事があったので、貼っておきます。
Oracle launches Rich Enterprise Application (REA) site

今後開発Tipsなどをこのブログで紹介できればと思いつつ。

jBPMに触れてみる 3.2 of n (how to use jBPM 3.x)

インストール直後に利用できるwebsaleが動かない件。
なんかもーこの時点で駄目な気がするが、追ってみた。

MLアーカイブにひとまず回答らしきものを発見。

Re: Error setup with both MySQL and Hypersonic

実際にはMySQLがどうこうという話ではなく、websaleのタスクをExamineするとこんなエラーが出るんだよ!という話(実際私もこれではまっていた)。

Error completing task: An exception of type "org.jbpm.graph.def.DelegationException" was thrown. The message is: Cannot open connection

Closing the database context failed: An exception of type org.hibernate.exception.GenericJDBCException was thrown, with the message: Cannot open connection

で、回答にあたるのがリンク先なんだけど...何故かEJBTimerServiceのデータソースを変更しろっていう話なんだよね。投稿してる本人も解らんと言ってるので解らんのでしょう。JBossのjmx-consoleでEJBTimerBeanのPersistencePolicyの使うデータソースをDefaultDSからJbpmDSに変更し、MBeanを再起動したらとりあえずこの問題は出なくなった。JBoss再起動したりするので、今後はejb-deployer.xmlを変更しないと駄目だな。

何かまだ落とし穴がありそうな気がする。
環境でつまづくのはもうお腹いっぱいだから、早く開発に移りたい...

2009年2月9日月曜日

jBPMに触れてみる 3.1 of n (how to use jBPM3.x)

インストーラ通りにインストールしたんだが...
jsf-consoleが動かない。gwt-consoleは動く。うーん。

jbossのバージョンを5.0.0-GAから4.2.3-GAに変えて再インストールしてみたら動いた。
# JSF関連のエラーみたいだけど...面倒なので内容は追わないことにした。
なので、jBPM 3.3.1 + JBoss 4.2.3は一応動きましたってことで。








jsf-consoleの画面。すっきりしている。
このバージョンでもwebsaleプロセスが準備されているので、Think ITのjBPM記事を参考に実行できる...はずなのだが、最初のタスクでエラー...Hibernateがこけてるので、きっとバックエンドのDBあたりがおかしいんだと思う。インストール時にHipersonicを選んだのだが、勝手に設定してくれるわけじゃないのかな...。

[Think IT] 第2回 : 15分で試してみよう! (jBPMを試そう!特集)

以下はgwt-consoleの画面。BIRTだらけ。Preview機能だがBAMツールってことらしい。
プロセスを実行してないから?こっちもエラーが出てるけど...(^^;)

2009年2月7日土曜日

jBPMに触れてみる 3 of n (how to use jBPM3.x)

jBPM4はまだまだ実用レベルではないと判断して(alphaだからしょうがないが)、しばらくはjBPM3を触ることにする。以下、使えるようにするためのメモ書き。

PreRequiresとしてJBoss ASとEclipseがあると良い。今回はJBossAS-5.0.0-GAとEclipse3.4.1を選択。
  1. jBPM Downloadsから3.3.1をダウンロード。ページにSizeは28.0MBと書いてあるが実際は70MB程ある。
  2. ダウンロードしたjarファイルを実行するとインストーラが起動する。



  3. jBPMのインストール先を決める。



  4. インストールする追加コンポーネントを決める。



  5. 利用するJBossとサーバ構成を指定する。



  6. バックエンドで状態保持をするデータベースを指定する(Hypersonic/MySQL/Sybase)。



  7. JBossのHOMEを聞かれるので指定する。
  8. 確認画面後、ファイルが展開されて終了。
Eclipse側のセットアップはjBPM4で登録したプラグインを削除してから実施することにする。
(jPDL FeatureとFlow Common Featureを削除、XMLのスキーマ読み込みの解除)
マニュアルを見てないので正確ではないが、jBPM3をインストールしたディレクトリ/designerディレクトリにあるjbpm-jpdl-designer-site.zipをEclipseのSiteに追加したらOKな様子。

プラグインをインストールすると新規の一覧からJBoss jBPM >> Process Projectが選択できる。
とりあえずこれを使ってみよう。
  1. 新規でProcess Projectを選択するとプロジェクトの名前を聞かれる
  2. jBPMのRuntimeの場所を聞かれる。インストール先に指定したディレクトリを選択。
  3. finishでプロジェクト生成の完了。
生成されたプロジェクトにはサンプルが入っていて、src/main/jpdl/processdefinition.xmlを開くとプロセスエディタで見る事ができる。jBPM4より色々使えそう。そりゃそうか。
ひとまず今日はここまで...。



2009年2月4日水曜日

jBPMに触れてみる 2 of n (how to use jBPM4)

jBPM 4.0.0-Alpha1で遊ぶの巻。

セットアップ

Eclipseは3.4.1(ganymede)以上を利用。
セットアップ手順は同梱のreadmeに詳しいので参照されたし。
  1. jBPMサイトからアーカイブをダウンロード
  2. [GPD] ローカルに展開したファイルをサイトとして追加
  3. EclipseにjBPMライブラリを定義
  4. jPDL4 スキーマカタログを追加
  5. サンプルプロジェクトの追加 -> JUnitが足りないのでdependencyのUser Libraryも追加しておくと良い
プロセス構築について
  • 基本はプロセスを作る⇒それをハンドリングするJavaプログラムを書く、の順だと思われる。
  • GPDはどうも壊れることが多いようだ…
  • サンプルではstateアクティビティが良く使われているが、GPD利用時にstateがComponents一覧に無いのはどういうことなのか良くわからない。しょうがないのでjPDL4Editorは使わず、XMLEditorでごにょごにょすることにする。
プロセス実行までにソース上でやらなきゃいけないこと

ProcessEngineの初期化 <-- 設定ファイルが利用可能
ProcessServiceによるプロセスのデプロイ
ExecutionServiceによるプロセスの実行 <-- プロセスのバージョン指定も可能

プロセスを始めたり進めたりは出来るが、嬉しいポイントがまだわからない。
jBPM自体はただのライブラリなので「やろうと思えばどういう実装でも可能」というのが嬉しいところなんだろうけど...。
パートナーリンクとプロセス進行にあたる部分の自作を要求されているようで、そこが嬉しいのかどうかが今のところの疑問点。

このエントリを書いている時点では、jBPM4自体はAlpha版だけあってドキュメントも少なく、プロダクトとしての完成度はまだまだ。
ただTokenを使ってtoken.signal()とだけしていたもの(v3をちゃんと見ていないのでそれしか知らない)が、キー文字列やidでプロセスをあやつれる分API的には進化してそう。

jBPMに触れてみる 1 of n

某氏からリクエストを受けたのでjBPMについて書いてみることに。
まったく知らないので、一から勉強。

今のところjBPMについて自分が把握している事をとりあえず列挙。
知っていることと知らないことを明確にするのは重要だ。
  • 最新版はv4 Alpha1。安定版は3.3。
  • Embeddable。JavaSE環境での実行が可能。つまりJavaが動けばどこにでも載せられるBPMエンジン。
  • 自分の情報管理にDBを利用する(Oracle BPEL Process Managerのデハイドレーション・ストア・データベースみたいなもの?)。
  • jPDL (jBPM的プロセス言語、のはず), WS-BPEL, Seam Pageflowをサポートする。
  • Eclipse開発支援プラグインが準備されている(GPD)
  • 他未実装の機能がいくつか。
以下は未確認事項
  • v3とv4にどれだけ違いがあるのかはまだ調査していない。どっちを調べよう...
  • 依存ライブラリにhsqldbが入ってるので、外部にDBサーバが無いときはこれを使うに違いない。Java6からはJavaDBなんだろうか。
  • jPDLとWS-BPELの違いがどこまであるのか。
  • デハイド(正式名称が解らないのでこう呼んでしまうが)が同じ場所を指す二つのアプリケーションがある場合はちゃんと動くか?(Oracle BPEL PMのクラスタのイメージ)
Embeddableなのは良い事なのか悪いことなのか...予想できるのはプロセスのテストにデプロイが要らないだろうってことだが、BPM的なものが必要なアプリケーションって、WebサービスとかEJBとかとくっつけて一緒に動かないと意味ないんじゃーって思ったり。