interstage business process manager v10 -...

161
B1WD-1431-08Z0(00) 20091Interstage Business Process Manager V10 開発者ガイド

Upload: others

Post on 25-Dec-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

B1WD-1431-08Z0(00)2009年1月

Interstage Business Process Manager V10

開発者ガイド

Page 2: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

まえがき

本書の目的

本書では、ユーザの要件に適応するよう、Interstage BPMのAPIを使用してInterstage BPMのカスタマイズや拡張方法について説明さ

れています。

本書の読者

本書は、次の読者を対象としています。

・ ビジネスプロセスの開発に携わるIT専門家

・ ワークフローによる自社製品の強化を考えている独立ソフトウェアベンダー

・ ワークフローを活用するアプリケーションの構築やワークフローによる既存アプリケーションの強化を計画しているシステム管理者

本書の構成

本書は以下の内容で構成されています。

章 タイトル 説明

1 概要 Interstage BPMの特長や概要など、全体の概要について説明します。

2 Interstage BPM の基本設計 Interstage BPMのコンポーネントとその連携について説明します。

3 Interstage BPMの基礎知識 Interstage BPMを操作するために必要な、基本的な事項について説明しま

す。

4 Model API Model APIを使用したアプリケーション開発のためのシステム環境につい

て説明します。

5 プロセス定義のデザイン 単純なプロセス定義と複雑なプロセス定義のプログラミング例、およびプロ

セスインスタンスのプログラミング例について説明します。

6 Interstage BPMの強化 JavaActionと詳細なフィルタとソートを含む、Interstage BPMを強化するさま

ざまな手法について説明します。

7 運用管理 運用管理機能のプログラミング例について説明します。

8 履歴情報の取得 ワークフローの履歴情報をデータベースから取得する方法について説明

します。

付録A Interstage BPMのサンプル Interstage BPMに提供されているサンプルの一覧、その構造、および使い

方について説明します。

付録B JavaScript関数 JavaScriptについて説明します。

付録C トラブルシューティング Interstage BPMの使用に関連する問題の解決に役立つ情報について説明

します。

用語集 用語の解説です。

本書の読み方

本書は、以下の表を目安にお読みください。

目的 章

Interstage BPMの概要について知りたい。 1

Interstage BPMの基本設計について知りたい。 2

Interstage BPMの基礎知識について知りたい。 3

Model APIの使用方法について知りたい。 4

- i -

Page 3: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

目的 章

プロセス定義およびプロセスインスタンスのプログラミングについて知りたい。 5

システムの拡張方法について知りたい。 6

運用管理アクティビティのプログラミングについて知りたい。 7

ワークフローの履歴情報をデータベースから取得する方法について知りたい。 8

サンプルプログラムについて知りたい。 付録A

JavaScriptについて知りたい。 付録B

トラブルシューティングについて知りたい 付録C

表記規則

本書は、次の規則に従って記述されています。

例 意味

[画面に表示されるテキスト] ユーザインタフェースに表示されるテキストです。[]付きで表示されます。

「参照先」 参照先は「」付きで表示されます。

関連マニュアル

Interstage Business Process Managerには、以下のマニュアルがあります。必要に応じてご利用ください。

・ ソフトウェア説明書

ソフトウェア説明書には、提供媒体の内容、留意事項など重要な情報について説明します。ご使用になる前に、ソフトウェア説明

書を必ずお読みください。

・ マニュアル体系と読み方

Interstage Business Process Manager のマニュアル体系とそれぞれのマニュアルの読み方について説明します。

・ サーバ導入ガイド

Interstage Business Process Managerサーバのソフトウェア、ハードウェア要件と、Interstage Business Process Managerサーバのイン

ストール方法について説明します。

・ コンソール導入ガイド

Interstage Business Process Manager コンソールのインストール方法について説明します。

・ コンソールユーザーズガイド

Interstage Business Process Manager コンソールのユーザインタフェースを使用する方法について説明します。

・ サーバ管理者ガイド

Interstage Business Process Managerの設定および管理方法について説明します。Interstage Business Process Managerサーバの

設定パラメータの説明が含まれます。

・ 開発者ガイド

Interstage Business Process Manager開発の手順について説明します。

Interstage Business Process Manager のAPI を使用したInterstage Business Process Manager のカスタマイズやカスタムアプリケー

ションの開発方法について説明します。

・ Studioユーザーズガイド

Interstage Business Process Manager Studioを使用してプロセスをモデル化する方法について説明します。

・ Javadoc (APIリファレンス)

カスタムアプリケーションの開発のためのAPIおよびパッケージ、インタフェース、クラスの構文について説明します。

- ii -

Page 4: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

略称

本マニュアルで説明される製品を次のように省略します。

・ 「Microsoft® Windows Server® 2003」は「Windows Server® 2003」と省略します。

・ 「Interstage Business Process Manager」は「Interstage BPM」と省略します。

・ 「Microsoft® Windows® 2000 Server」は「Windows® 2000 Server」と省略します。

・ 「Solaris™ Operating System」は「Solaris」と省略します。

輸出管理規制について

当社ドキュメントには、外国為替および外国貿易管理法に基づく特定技術が含まれていることがあります。特定技術が含まれている場

合は、当該ドキュメントを輸出または非居住者に提供するとき、同法に基づく許可が必要となります

発行日 2009年1月

版数 3版

登録商標について Interstage、Symfowareは、富士通株式会社の登録商標です。

ARISはIDS Scheer AGの登録商標です。

Microsoft、Windows、WindowsNT、Windows Serverは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。

UNIXは、米国およびその他の国におけるオープン・グループの登録商標で

す。

JavaおよびすべてのJava関連の登録商標およびSolarisは、米国およびその他

における米国Sun Microsystem,Incの商標または登録商標です。

Linuxは、Linus Torvalds氏の米国およびその他の国における商標または登録

商標です。

Red Hat、the Red Hat "Shadow Man" ロゴ、RPM、Maximum RPM、RPM ロゴ、

Linux Library、 PowerTools、 Linux Undercover、RHmember、RHmemberMore、Rough Cuts、Rawhide、およびRed Hatをベースとしたすべての商標とロ

ゴは、Red Hat, Inc.の米国およびその他の国における登録商標あるいは商標

です。

そのほか、本書に記載されている会社名および製品名は、それぞれ各社の商

標または登録商標です。

Microsoft Corporationのガイドラインに従って画面写真を使用しています。

お願い ・ このマニュアルは、予告なしに変更されることがあります。

・ このマニュアルは無断で他に転用しないようお願いします。

・ このマニュアルに記載されたデータの使用に起因する第三者の特許権お

よびその他の権利の侵害については、当社はその責を負いません。

[高度な安全性が要求される用途への使用について]

本製品は、一般事務用、パーソナル用、家庭用、通常の産業等の一般的用途を想定して開発・設計・製造され

ているものであり、原子力施設における核反応制御、航空機自動飛行制御、航空交通管制、大量輸送システム

における運行制御、生命維持のための医療用機器、兵器システムにおけるミサイル発射制御など、極めて高度

な安全性が要求され、仮に当該安全性が確保されない場合、直接生命・身体に対する重大な危険性を伴う用途

(以下「ハイセイフティ用途」という)に使用されるよう開発・設計・製造されたものではありません。お客さまは本製

品を必要な安全性を確保する措置を施すことなくハイセイフティ用途に使用しないでください。また、お客さまが

- iii -

Page 5: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

ハイセイフティ用途に本製品を使用したことにより発生する、お客様または第三者からのいかなる請求または損

害賠償に対しても富士通株式会社およびその関連会社は一切責任を負いかねます。

Copyright FUJITSU LIMITED 2008-2009

- iv -

Page 6: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

目 次

第1章 概要................................................................................................................................................................................11.1 ワークフローとは..................................................................................................................................................................................11.2 Interstage BPMとは..............................................................................................................................................................................11.3 Interstage BPMの特長........................................................................................................................................................................11.4 アプリケーションの作成.......................................................................................................................................................................1

第2章 Interstage BPMの基本設計.............................................................................................................................................22.1 設定の概要..........................................................................................................................................................................................22.2 システムアーキテクチャ.......................................................................................................................................................................3

2.2.1 Interstage BPMサーバ層..............................................................................................................................................................32.2.2 Interstage BPMのWeb層およびクライアント層............................................................................................................................5

2.3 Interstage Analytics統合.....................................................................................................................................................................52.4 CentraSite連携.....................................................................................................................................................................................6

第3章 Interstage BPMの基礎知識.............................................................................................................................................73.1 プロセス定義とプロセスインスタンス...................................................................................................................................................73.2 プロセス定義........................................................................................................................................................................................7

3.2.1 プロセス定義の状態.....................................................................................................................................................................83.2.2 プロセス定義識別子.....................................................................................................................................................................93.2.3 ワークフローエレメント..................................................................................................................................................................93.2.4 Java Action.................................................................................................................................................................................103.2.5 ロール.........................................................................................................................................................................................103.2.6 フォーム......................................................................................................................................................................................103.2.7 タイマー......................................................................................................................................................................................113.2.8 プロセス定義の所有権...............................................................................................................................................................113.2.9 ユーザ定義属性.........................................................................................................................................................................123.2.10 ノードタイプ...............................................................................................................................................................................123.2.11 プロセス定義の変更.................................................................................................................................................................17

3.3 プロセスインスタンス..........................................................................................................................................................................183.3.1 プロセスインスタンスの状態.......................................................................................................................................................193.3.2 ノードインスタンスと矢印インスタンス.........................................................................................................................................203.3.3 プロセスインスタンスの所有権...................................................................................................................................................203.3.4 添付文書....................................................................................................................................................................................20

3.4 ワークアイテム....................................................................................................................................................................................203.4.1 ワークアイテムモード..................................................................................................................................................................213.4.2 ワークアイテムの状態.................................................................................................................................................................213.4.3 矢印............................................................................................................................................................................................22

3.5 フィルタ..............................................................................................................................................................................................223.6 構造的プロセス編集の目的..............................................................................................................................................................223.7 サブプロセス機能の目的..................................................................................................................................................................233.8 セキュリティモードと再割当てモード.................................................................................................................................................23

3.8.1 セキュリティモード.......................................................................................................................................................................233.8.2 再割当てモード..........................................................................................................................................................................23

第4章 Model API.....................................................................................................................................................................254.1 システム環境.....................................................................................................................................................................................25

4.1.1 Interstage Application Server(ローカル)の環境設定...............................................................................................................254.1.2 Interstage Application Server (リモート) の環境設定................................................................................................................274.1.3 WebSphere Application Server スタンドアロンアプリケーション配備(ローカル)の環境設定.................................................294.1.4 WebSphere Application Serverクライアント J2EE アプリケーション配備(ローカル)の環境設定............................................294.1.5 WebSphere Application Server スタンドアロンアプリケーション配備(リモート)の環境設定...................................................304.1.6 WebSphere Application Serverクライアント J2EE アプリケーション配備(リモート)の環境設定..............................................314.1.7 WebLogicの環境設定................................................................................................................................................................334.1.8 JBossの環境設定.......................................................................................................................................................................34

4.2 Model APIアプリケーションの実行...................................................................................................................................................34

- v -

Page 7: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

4.3 プロパティファイルの格納.................................................................................................................................................................344.4 Model APIアーキテクチャー.............................................................................................................................................................354.5 例外処理...........................................................................................................................................................................................36

第5章 プロセス定義のデザイン.................................................................................................................................................375.1 基本的なプロセス定義のデザイン....................................................................................................................................................37

5.1.1 一般ユーザのログインとログアウト.............................................................................................................................................385.1.2 プロセス定義の新規デザイン....................................................................................................................................................39

5.2 応用的なプロセス定義のデザイン....................................................................................................................................................415.2.1 ユーザ定義属性の追加.............................................................................................................................................................435.2.2 Voting Activityノード..................................................................................................................................................................445.2.3 ANDノードとORノードの追加....................................................................................................................................................455.2.4 Conditionalノード........................................................................................................................................................................455.2.5 Subprocessノード.........................................................................................................................................................................465.2.6 Delayノード.................................................................................................................................................................................485.2.7 Chained-Processノード................................................................................................................................................................48

5.3 プロセスインスタンス..........................................................................................................................................................................495.3.1 プロセス定義の 新バージョンの取得......................................................................................................................................505.3.2 プロセスインスタンスの作成と開始............................................................................................................................................515.3.3 ワークアイテムリストの作成.........................................................................................................................................................515.3.4 ワークアイテムの実行.................................................................................................................................................................535.3.5 添付文書....................................................................................................................................................................................53

第6章 Interstage BPMの強化..................................................................................................................................................556.1 Interstage BPMと外部アプリケーションの統合.................................................................................................................................556.2 Java Action........................................................................................................................................................................................56

6.2.1 Java Actionsのタイプ..................................................................................................................................................................576.2.2 Server Enactment Contextインタフェースを使用するワークフローデータへのアクセス...........................................................586.2.3 開始アクションの割当て.............................................................................................................................................................596.2.4 終了アクションの割当て.............................................................................................................................................................606.2.5 組込みJava Action.....................................................................................................................................................................616.2.6 JavaScript Java Action................................................................................................................................................................616.2.7 エラーJava Actionの使用...........................................................................................................................................................626.2.8 Java Actionのエラー処理...........................................................................................................................................................636.2.9 エラーの場合のJava Action構造と実行プラン..........................................................................................................................656.2.10 中止時、一時停止時、および再開時アクションの使用..........................................................................................................68

6.3 フィルターとソートのAPI....................................................................................................................................................................686.3.1 WFObjectListインタフェース......................................................................................................................................................686.3.2 フィルターとソートのメソッド........................................................................................................................................................706.3.3 メソッドの呼び出し手順..............................................................................................................................................................706.3.4 リストに使用するUDAの識別.....................................................................................................................................................706.3.5 ソートとフィルター.......................................................................................................................................................................716.3.6 バッチ処理の注意点..................................................................................................................................................................716.3.7 リストの更新通知.........................................................................................................................................................................71

6.4 複数オブジェクトの情報の一括取得................................................................................................................................................716.5 特別なユーザ定義属性のプロパティ...............................................................................................................................................73

6.5.1 タイプXMLのユーザ定義属性でのワーク................................................................................................................................736.5.2 ワークリストUDA..........................................................................................................................................................................74

6.6 拡張属性の使用................................................................................................................................................................................756.6.1 拡張属性の割当て.....................................................................................................................................................................766.6.2 拡張属性値の取得.....................................................................................................................................................................766.6.3 エレメントの全拡張属性の取得.................................................................................................................................................776.6.4 拡張属性の名前.........................................................................................................................................................................786.6.5 拡張属性の名前空間.................................................................................................................................................................80

6.7 トランザクション制御..........................................................................................................................................................................816.8 トリガ...................................................................................................................................................................................................82

6.8.1 トリガの機能................................................................................................................................................................................826.8.2 トリガの定義................................................................................................................................................................................83

- vi -

Page 8: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

6.9 Event Activity(Trigger)ノードの使用................................................................................................................................................856.10 File Listener.....................................................................................................................................................................................86

6.10.1 File Listenerの使用..................................................................................................................................................................866.10.2 File Listenerの設定..................................................................................................................................................................87

6.11 エージェントの使用.........................................................................................................................................................................886.11.1 エージェントの概要..................................................................................................................................................................886.11.2 FTPエージェントの構成...........................................................................................................................................................896.11.3 FTPエージェントの使用...........................................................................................................................................................916.11.4 HTTPエージェントの設定........................................................................................................................................................926.11.5 HTTPエージェントの使用........................................................................................................................................................93

6.12 タイマーの使用................................................................................................................................................................................946.12.1 タイマーの定義.........................................................................................................................................................................946.12.2 ビジネスカレンダーの使用.......................................................................................................................................................956.12.3 タイマーの時刻コードと日付コード..........................................................................................................................................97

6.13 リモートサブプロセスのモデル化....................................................................................................................................................986.13.1 親とリモートサブプロセス定義を設計......................................................................................................................................996.13.2 実行中のリモートサブプロセス定義.......................................................................................................................................1026.13.3 リモートサブプロセスのエラー処理........................................................................................................................................102

第7章 運用管理.....................................................................................................................................................................1047.1 管理者のログインとログアウト..........................................................................................................................................................1047.2 ユーザおよびグループ管理...........................................................................................................................................................105

7.2.1 ローカルユーザの管理............................................................................................................................................................1057.2.2 ローカルグループの管理.........................................................................................................................................................1067.2.3 ログインしたユーザリストの作成...............................................................................................................................................1077.2.4 ユーザのログアウト...................................................................................................................................................................1077.2.5 ユーザとグループキャッシュのリセット.....................................................................................................................................108

7.3 プロセス定義管理............................................................................................................................................................................1087.3.1 プロセス定義リストの作成.........................................................................................................................................................1097.3.2 プロセス定義の公開.................................................................................................................................................................1097.3.3 プロセス定義のアーカイブ.......................................................................................................................................................1107.3.4 プロセス定義の削除.................................................................................................................................................................1107.3.5 アーカイブ済のプロセス定義の削除.......................................................................................................................................1107.3.6 プロセス定義のインポート........................................................................................................................................................1117.3.7 プロセス定義のエクスポート.....................................................................................................................................................111

7.4 プロセスインスタンス管理................................................................................................................................................................1127.4.1 プロセスインスタンスリストの作成.............................................................................................................................................1127.4.2 プロセスインスタンスの所有権の変更.....................................................................................................................................1127.4.3 プロセスインスタンスのアーカイブ...........................................................................................................................................1137.4.4 プロセスインスタンスの一時停止.............................................................................................................................................1147.4.5 プロセスインスタンスの中止.....................................................................................................................................................1147.4.6 プロセスインスタンスの削除.....................................................................................................................................................1157.4.7 アーカイブ済のプロセスインスタンスの削除...........................................................................................................................115

7.5 ワークアイテム管理..........................................................................................................................................................................1157.5.1 ワークアイテムのユーザに再割当て........................................................................................................................................1167.5.2 ワークアイテムの更新...............................................................................................................................................................116

第8章 履歴情報の取得..........................................................................................................................................................1188.1 Model APIを使用した履歴情報の取得..........................................................................................................................................1188.2 ハッシュテーブルからの履歴情報の取得......................................................................................................................................119

8.2.1 HISTORY_ID...........................................................................................................................................................................1198.2.2 HISTORY_TIME_STAMP......................................................................................................................................................1198.2.3 HISTORY_EVENT_CODE.....................................................................................................................................................1198.2.4 HISTORY_EVENT_TYPE......................................................................................................................................................1208.2.5 HISTORY_EVENTDATA.......................................................................................................................................................1208.2.6 HISTORY_PRODUCER_ID....................................................................................................................................................1208.2.7 HISTORY_PRODUCER_TYPE..............................................................................................................................................1208.2.8 HISTORY_CONSUMER_ID...................................................................................................................................................120

- vii -

Page 9: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

8.2.9 HISTORY_CONSUMER_TYPE.............................................................................................................................................1218.2.10 HISTORY_ISHANDLED_CODE.........................................................................................................................................1218.2.11 HISTORY_PROCESSINSTANCE_ID..................................................................................................................................1218.2.12 HISTORY_RESPONSIBLE...................................................................................................................................................1218.2.13 履歴エントリの検索ルール.....................................................................................................................................................122

8.3 履歴テーブル..................................................................................................................................................................................1238.4 SQLステートメントの履歴情報検索................................................................................................................................................124

付録A Interstage BPMのサンプル.........................................................................................................................................126A.1 /client/samples/examples/sources...................................................................................................................................................126

A.1.1 プロセスのモデル化と実行に関連したサンプル....................................................................................................................126A.1.2 System Administration に関連したサンプル..........................................................................................................................127A.1.3 JMS インターフェースに関連したサンプル............................................................................................................................127

A.2 /client/samples/examples/classes....................................................................................................................................................129A.3 /client/samples/examples/bin..........................................................................................................................................................130

付録B JavaScript関数...........................................................................................................................................................131B.1 JavaScript関数................................................................................................................................................................................131B.2 Java ActionでサポートするJavaScript関数....................................................................................................................................134B.3 トリガでサポートするJavaScript関数...............................................................................................................................................136

付録C トラブルシューティング.................................................................................................................................................137C.1 ログファイルの情報.........................................................................................................................................................................137C.2 特定のエラー状態を解決...............................................................................................................................................................137

C.2.1 Interstage BPMサーバの起動の失敗.....................................................................................................................................137C.2.2 IBPMServer.logのエラー.........................................................................................................................................................137C.2.3 JavaScript実行中の時間切れ.................................................................................................................................................138C.2.4 Oracleデータベースへの書き込み時のエラー.......................................................................................................................138

C.3 インストール、配備時および構成時に発生するエラー.................................................................................................................138C.4 Interstage BPMサーバの起動時のエラー.....................................................................................................................................139C.5 問題が解決できない場合...............................................................................................................................................................140

用語集...................................................................................................................................................................................143

索引......................................................................................................................................................................................149

- viii -

Page 10: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

第1章 概要

Interstage BPMはワークフローアプリケーション開発用のAPIを備えた、サーバベースのワークフローエンジンです。開発者やシステム

エンジニアは、独自の製品やシステムにワークフローエンジンとしてInterstage BPMを組み込むことができます。 Interstage BPMは、シ

ステム管理者やソフトウェア製品ベンダーの方を対象とした製品です。

1.1 ワークフローとは

ワークフローは、ビジネスプロセスを自動化するための比較的新しい手法です。ビジネスプロセスの自動化は、初期の手法では、作業

フローのロジックは専用アプリケーションに組み込まれていました。このため、作業プロセスの変化に応じて、アプリケーションを更新す

る必要があり、保守に多大な労力を必要としていました。

ワークフロー製品は、プロセスのあらゆる状況をカプセル化することによってこの問題を解決しています。たとえば、ルール、ルーティン

グパス、アクティビティ、データなどのプロセス定義の情報をカプセル化します。さらに、これら情報を自動的に管理します。このように、

ワークフロー対応の製品を使うことで、ワークフロープロセス自体の深い知識がなくても、ワークフローシステムを実装できます。

1.2 Interstage BPMとは

Interstage BPMは、Web対応の分散型ワークフローアプリケーション開発ツールです。ビジネスプロセスにモデル化、自動化、統合、管

理、 適化というライフサイクルを適合し、プロセス改善を遂行するビジネスプロセス管理ソリューションを提供します。

Interstage BPMの主要な機能は以下のとおりです。

・ 多様なプロセスを実行できる、拡張性のある実行基盤。

・ Interstage BPMサーバと連携するユーザアプリケーション開発用APIの提供。

・ プロセスに関連する添付文書の一元管理。

1.3 Interstage BPMの特長

Interstage BPMの背景にあるのは、ワークフローシステムの導入により業務を自動化することができ、日常業務にかかる時間を短縮す

ることで、本来の業務に専念できるようにするという考え方です。たとえば、カスタマーサービスの担当者や営業担当者は、業務を自動

化することにより、注文やクレームなどの処理よりも顧客サービスに集中できるようになります。

エンジニアリング、ビジネス開発、および研究開発業務への適用においては、Interstage BPMの柔軟性を活用して、会社、部署、部

門、チームそれぞれのレベルで業務の進捗状況を監視し、業務の実施を促進することができます。これにより、グループ内の一人一

人の能力を 大限に引き出せます。

Interstage BPMでは、実装時に適用業務に応じた情報を組み込んだり、アプリケーションをカスタマイズして業務に応じた適用を行うこ

とができます。

1.4 アプリケーションの作成

このマニュアルは、お客様がお持ちの製品やシステムへのInterstage BPMの組み込みおよび機能拡張を行う際、ご利用いただくことを

目的としています。これを も効果的かつ実践的に行うには、まず、Interstage BPMサーバのインストールディレクトリにあるclient/samplesサブディレクトリのサンプルをご覧いただき、サンプルのクラスに組み込まれている内容を確認してから、お客様のニーズに合うようアプ

リケーション作成の計画を立案することをお勧めします。

以下は、基本的な開発方法です。

・ Model APIを使用することにより、Interstage BPMサーバにアクセスするWebアプリケーションなどを作成します。Model APIの詳細

は、『API Javadocマニュアル』を参照してください。『API Javadocマニュアル』は、Interstage BPMのインストールディレクトリのjavadocsサブディレクトリにあります。

・ JavaActionを使用すると、データの取り扱いや意思決定の自動化に向けた、システムの機能拡張が可能です。これにより、ビジネ

スプロセスを自動化することができます。

- 1 -

Page 11: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

第2章 Interstage BPMの基本設計

Interstage BPMは、ワークフローアプリケーション開発用のApplication Programming Interfaces(以降、APIと呼びます。)を備えた、サー

バベースのワークフローエンジンです。開発者やシステムエンジニアは、製品やシステムにワークフローエンジンとしてInterstage BPMを組み込むことができます。

Interstage BPMの主な機能は以下のとおりです。

・ Interstage BPMサーバと連携するユーザアプリケーションを開発するためのAPIを提供。

・ 多様なプロセスを実行できる、拡張性のある実行基盤。

・ プロセスに関連する文書の一元管理。

・ Interstage BPM Analytics:Interstage BPMサーバは、業務プロセスの監視データをInterstage Analyticエンジンに提供できます。

Interstage Analyticsを使用して、このデータを評価、処理することができます。詳細は、「2.3 Interstage Analytics統合」を参照してく

ださい。

・ CentraSite連携:CentraSiteと連携することで、プロセス定義をリポジトリに登録したり、UDDIレジストリからWebサービス情報(WSDL)を検索することが可能。詳細については、「2.4 CentraSite連携」を参照してください。

2.1 設定の概要

Interstage BPMは以下の設定で動作します。

図2.1 設定の概要

Interstage BPMサーバは、データベースおよびオプションとしてディレクトリサービスと共に動作します。Interstage BPMサーバへのアク

セスには、Interstage BPMクライアントを使います。

Interstage BPMの完全なインストール環境を構成するコンポーネントを、様々な設定でインストールできます。

・ システムはすべて、同一のコンピュータにインストールします。

・ 以下の1つまたは複数については、別々のコンピュータにインストールします。

- Interstage BPMサーバ

- データベース

- ディレクトリサービス

- Interstage BPMコンソール

- Studio

詳細については、『Interstage BPMサーバ 導入ガイド』および『Interstage BPMコンソール 導入ガイド』を参照してください。

- 2 -

Page 12: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

2.2 システムアーキテクチャ

Interstage BPMは、基本的にサーバとModel APIで構成されています。複数の接続オプションにより、サードパーティ製のツールとその

他システムを統合できます。ここでは、Interstage BPMコンポーネントとその連携の概要について説明します。

図2.2 アーキテクチャの概要

2.2.1 Interstage BPMサーバ層

Interstage BPMサーバは、Enterprise Java Bean(EJB)インタフェースを提供しているアプリケーションサーバ内で動作します。サーバ

は、ユーザとその他コンポーネント間の対話を受け持ち、ユーザが開始したプロセスを実行し、ユーザにプロセス内におけるステータ

スの変更を通知します。Interstage BPMは、アプリケーションサーバの標準機能を使って設定できます。Model APIを使って開発したク

ライアント経由でのみ、サーバにアクセスできます。

Interstage BPMは、オペレーティングシステムやデータベースの相違からアプリケーションを隔離する標準アプリケーションサーバへ配

備されます。Interstage BPMは、アプリケーションサーバの機能を利用して、たとえばクラスタリング、ロードバランシング、フェイルオー

バーなどの機能を提供します。

サーバは、アプリケーションサーバ内で動作するEJBの集合体として構成され、アプリケーションサーバの機能を活用します。InterstageBPMのEJBは、コンテナトランザクションに参加し、サーバや任意のクライアントアプリケーションが同じトランザクションに参加できるよう

にします。コンテナベースのトランザクションによって、サーバの一貫性が保たれます。

以下のセクションでは、EJBについてさらに詳しく説明します。

ユーザエージェント(ファサード)

ユーザエージェントEJB(UA bean)によって、クライアントはInterstage BPMシステムにログインでき、クライアントとInterstage BPMとの認

証、対話を行います。まず、クライアントがUA beanの作成を要求します。次に、サーバがUA beanを作成して、UA beanへのハンドルを

クライアントに返します。そして、クライアントがサーバログインに必要なユーザ名、パスワード、サーバ名を提供します。この情報は、

Interstage BPMのローカルユーザ管理機能、または接続しているディレクトリサービスの機能を使って認証されます。

ユーザエージェントインスタンスは、サーバへのログインセッションを表し、特定のログインセッションの情報を保持します。ユーザエー

ジェントは、クライアントのエージェントとしてクライアントに代わり、他のInterstage BPMコンポーネントに対して、bean要求やメソッド呼び

出しを行います。つまり、モデルはプロセス定義、プロセスインスタンス、ワークアイテム、ディレクトリ、その他オブジェクトにアクセスす

るゲートウェイとして機能します。こうしたことから、UA beanは、サーバとモデルの間のインタフェースを表すファサードとも呼ばれます。

UA beanには、プロセス定義、プロセスインスタンス、ワークアイテムオブジェクトに対する様々なフィルタを解釈するという機能もありま

す。クライアントがログアウトを選択すると、ユーザエージェントは、関連するクライアントに代わり保持するリソースに必要な、クリーンアッ

プを行います。さらに、UA beanはセッションの同期を実装しています。

- 3 -

Page 13: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

サーバは、Interstage BPMにログインする各クライアントに対して、UA beanの固有のインスタンスを要求します。サーバは、アプリケー

ションサーバを構成するEJBコンテナに対して、これらのインスタンスを要求します。サーバbeanは、UA beanのインスタンスを「作成」す

る、いわゆるファクトリ(工場)のようなものです。

実行エンジン - プロセス定義インタプリタ

プロセス定義インタプリタは、Interstage BPMサーバのコアです。Interstage BPMで定義したプロセスの実行を受け持ちます。サーバ

は、データベースアダプタと通信し、プロセスステートデータ、プロセスインスタンス、アクティビティ関連データ、プロセス履歴情報を維

持管理します。サーバは、データベース要求キューを管理します。

エンティティbeanには2種類あり、プロセス定義とインスタンスの情報を保持するデータオブジェクトを表しています。プロセスを実行す

ると、プロセス定義EJBが作成され、次にプロセスインスタンスbeanが作成されます。どちらのbeanも、bean管理永続性およびコンテナト

ランザクションという、アプリケーションサーバの機能を実装しています。

これらのbeanモデルには公開されません。モデルに対するすべての要求はUA beanを経由して行われます。

現在の状況に関する情報といったプロセスデータは、データベースに格納され、要求に応じてデータベースから読み出されます。サー

バは、データベースと通信し、プロセスステートデータ、プロセスおよびアクティビティ関連データを維持管理します。

メッセージング

Message Driven bean(MDB)とJavaクラスライブラリの組み合わせによって、Interstage BPMのタイプシステム(Metaモデル)が実装され

ます。プロセス実行イベントは、MDBが処理するJMSメッセージ内にカプセル化されます。Interstage BPMは、デフォルトのアプリケー

ションサーバ機能を利用します。

Interstage BPMでは、Message Driven bean(MDB)は、非同期メッセージを用いてサーバコンポーネント間に情報のフローを作ります。

たとえば以下のようなMDBがあります。

・ EnactmentMessage Beanプロセスインスタンスが作成されると、このbeanはメッセージを生成してクライアントに通知します。

・ Email Dispatcher bean:クライアントへの電子メールメッセージを扱います。

・ Action Agent bean:アクションエージェントを扱います。

カスタムEJB

任意のアプリケーションに、Interstage BPMサーバと同じアプリケーションサーバインストール環境上で動作するEJBを実装できます。

カスタムEJBはModel APIを使い、Interstage BPMのEJBはJava Actionを使ってカスタムEJBを呼び出せます。

ユーザおよびグループ管理

Interstage BPMで作業するすべてのユーザにユーザアカウントが必要です。また各ユーザは、1つ以上のグループに割り当てられてい

る必要があります。グループを使って、プロセスのタスクを実行する担当者を決定します。

Interstage BPMには、独自のユーザ管理とグループ管理の機能があります。また、Interstage BPMからディレクトリサービスに接続する

ことも可能です。Interstage BPMのローカルユーザストアとディレクトリサービスのどちらでユーザを管理するかは、サーバの配備時に

選択できます。グループは、Interstage BPMのローカルグループストア、ディレクトリサービス、または両方のシステムで管理できます。

接続性

Interstage BPMのアーキテクチャは、サードパーティ製品との統合を考慮に入れています。サーバは、「アダプタクラス」を介して他のコ

ンポーネントと通信できます。アダプタは、サーバを共通のインタフェースと通信させるコンバータとして動作します。Interstage BPMで

は、以下への接続が可能です。

・ JDBC規格を用いたデータベース(DB)アダプタ。サーバは、データベースサーバとの間の通信手段を提供します。データベース

は、すべてのプロセス情報を一貫して格納し、維持管理します。DBアダプタは、サーバ内オブジェクトを一貫性のある多様な形式

に変換させます。Interstage BPMには、JDBCおよび複数のストアドプロシージャを用いて、関連するデータベース内の構造を持続

させるアダプタがあります。Oracle、Microsoft SQL Server、DB2、Symfowareサーバを使用できるように設定する、初期化スクリプト

が利用可能です。

・ Interstage BPMの特定のインタフェースを実装して、ユーザグループを個人の一覧に拡張するディレクトリサービス(Dir & DD)ア

ダプタ。実行エンジンは、これを実行時に使ってワークアイテムを渡す相手を決定します。ディレクトリサービスアダプタは、LDAP規格を使っています。現時点では、Microsoft® Active DirectoryおよびSun Java System Directory Serverをサポートしています。

ユーザエージェントが、DD Framework Adapterを使ってログイン時にユーザを認証します。

- 4 -

Page 14: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ Interstage BPMシステムと、標準的コピーおよび転送プロトコルを使う外部のファイルシステムをインタフェースで接続するために使

われるDMSアダプタ。フォーム、添付文書、プロセス定義などは、ファイルシステムに格納できます。こうしたドキュメントのロケータ

は、プロセスインスタンスの添付文書の属性に格納されています。Interstage BPMは、WebDAVプロトコルを介してアクセスできる

ファイルシステムやファイルストアに格納されたドキュメントにアクセスしたDMSアダプタを備えています。他のドキュメント管理シス

テムにアクセスするには、カスタムDMSアダプタが必要です。

・ SMTP規格を使ったメッセージ。Interstage BPMイベントへのレスポンスとして、サーバからSMTPメールサーバへ電子メールを送信

できます。

・ 外部システム。

- Java ActionとJavaScript:CRMやERPシステムのような任意の外部システムへの接続のために、Java Actionを実装できます。

Java Actionはワークフローエンジンの拡張機能です。

Java Actionは、Interstage BPMサーバに実行中に特定のJavaメソッドを呼び出す方法を提供するプロセス定義のデータ構造

です。これらのメソッドの呼び出しは、プロセスの実行をカスタマイズし、Interstage BPMサーバの機能範囲外でのJavaビジネス

メソッドの実行を可能にします。Java Actionによって、アプリケーションの統合が容易になり、外部アプリケーションやアダプタ

の呼び出しが速くなります。

- エージェント:Interstage BPMのエージェントが設定され、自動的かつユーザの代わりに非同期に動作します。エージェントを

使って、会社のファイアウォール内外を問わず、レガシーシステムやWebサービスなどの外部システムにアクセスできます。エー

ジェントを使って、これらの外部サービスをInterstage BPMのプロセスインスタンスに組み込めます。このJava統合方式は、複数

の再試行が必要な場合に特に便利です。

2.2.2 Interstage BPMのWeb層およびクライアント層

Model APIは、サーバのアブストラクト層で、単独の統合APIをサーバに提供します。Model APIは、クライアントプロセスで動作し、サー

バへの通信すべてを処理します。

Interstage BPMは、StudioやBPMコンソールのような複数のクライアントアプリケーションを備えています。

Studioを除いて、クライアントはservletエンジンで動作し、Webブラウザを使ってアクセスします。クライアントは、Javaユーザインタフェー

スクラスの組み合わせによって構成されています。そのようなクライアントコンポーネントは、2層で構成されています。1つはモデル層

(Model APIを使用)、もう1つはユーザインタフェース層(Javaユーザインタフェースクラスを使用)です。モデル層は、クライアントオブ

ジェクトのステートをカプセル化し、サーバと対話します。Model APIを使って、クライアントアプリケーションおよびユーザアプリケーショ

ンを開発できます。

Studioは、別途インストール可能なスタンドアロン型のプロセスデザインツールです。Studioは、アプリケーションサーバの機能からは独

立しています。

Webサービス機能はweb層にあります。この機能によって、多数の定義済みSOAP(Simple Object Access Protocol)要求を受け取り、XML形式の結果を使って応答できます。このポートを経由して、ほとんどのInterstage BPMの共通操作にアクセスできます。

Interstage BPMは、非同期Web Serviceインタフェースとして知られる、もう1種類のWebサービスインタフェースをサポートしています。

これは、プロセスインスタンスや他の長時間動作プログラムにアクセスする標準的な方法を実装したものです。この規格は、AsynchronousService Access Protocol(ASAP)として知られています。

Interstage BPM Webサービスの詳細については、『Interstage BPMコンソール 導入ガイド』を参照してください。

2.3 Interstage Analytics統合

Interstage Analyticsは、Interstage BPMサーバのプロセスデータの分析と評価に使います。Interstage BPM配備ツールによって、InterstageBPMがInterstage Analyticが認識するJMSキュー(トランスポーテション層)にイベントを送信するかどうかを設定できます。

以下の図は、関連するアプリケーションの相互作用を表しています。

- 5 -

Page 15: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

図2.3 Interstage Analytics統合

Interstage BPMサーバ、Interstage Analyticsセンサ、Interstage Analyticsサーバは、同一の装置または異なる装置にインストールできま

す。

配備中のイベント送信の設定方法については、『Interstage BPMサーバ 導入ガイド』を参照してください。

センサの設定とInterstage Analyticsの使用方法については、Interstage Analyticsのマニュアルを参照してください。

2.4 CentraSite連携

CentraSiteは、統合ソフトウェアで生成されたメタデータ、Webサービスの説明、およびアプリケーション固有のデータを管理するほか、

ネイティブXML形式および非XML形式の文書を一元的に格納する場所として機能します。

CentraSiteが提供する以下の機能をInterstage BPMから使用できます。

・ UDDIレジストリ

・ WebDAVリポジトリ

UDDIは業界標準の仕様であり、Webサービスを使用するための公開、検索、およびステージングのようなレジストリ公開機能を提供し

ます。Interstage BPMが提供するWebサービス機能の公開、検索、および取得は標準のUDDIインタフェースに基づいているため、

Interstage BPMからCentraSiteをUDDIレジストリ実装として使用できます。

WebDAVもまた業界標準の仕様であり、XPDLなどの標準フォーマットで保存されている開発成果物の保存と取得に使用できます。

Interstage BPMにはメタデータをWebDAVで公開する機能が用意されているため、Interstage BPMからCentraSiteをWebDAVリポジトリ

実装として使用できます。

- 6 -

Page 16: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

第3章 Interstage BPMの基礎知識

ワークフローアプリケーションの開発者およびユーザは、ワークフローアプリケーションの開始から終了までの間に以下の操作の一部、

またはすべてを行います。

・ Interstage BPMサーバへの接続

・ プロセス定義の構築

・ 新しいプロセスインスタンスの開始

・ プロセスインスタンスの変更

・ Java Actionでの変数の変更

・ プロセスインスタンスへの添付文書の関連付け

・ アクティビティの矢印オプションの実行

・ プロセス定義リスト、プロセスインスタンスリスト、およびワークアイテムリストの取得

・ プロセスインスタンスとアクティビティの状態の取得

これらの操作の働きは、この章で詳しく解説します。

3.1 プロセス定義とプロセスインスタンス

ワークフローは、複雑なプロジェクトにおける共同作業や、作業調整の中心となります。この共同作業の基礎となるのがプロセス定義で

す。プロセス定義は、業務で扱う情報と、作業手順および作業判断の条件を提供します。

プロセスインスタンスは、プロセス定義に基づいて実際の作業状態を表したものです。プロセスインスタンスはプロジェクト内の作業を

進めるために、必要となる情報を提供します。すべての業務担当者が適切な時間に適切な作業情報を取得していること、およびすべ

ての人が定められた手順に従って作業情報を使用していることを保証します。ビジネスにおいては、「作業情報」は一般的に文書や

データで構成されています。

プロセスインスタンスはプロセス定義内にデザインされている構造や機能を反映するので、プロセス定義に従属するオブジェクトとプロ

セスインスタンスは、密にやりとりを行います。ここでは、まずプロセス定義に関連するクラスに焦点をあてて、システム全体を理解する

ための基礎的な知識について説明します。

3.2 プロセス定義

プロセス定義は、デザイン時に設定されるプロセスインスタンスのすべての状況をカプセル化します。状況には、定義済属性、プロセ

スインスタンスが実行されたときに行われる操作、実行時に設定される変数データの定義、およびプロセス定義の状態が含まれます。

プロセス定義の属性

プロセス定義の属性には以下のものが含まれます(ただし、以下のものに限定はされません)。

・ プロセス定義の状態

・ プロセス定義識別子

- ID

- バージョン

- 所有者

- 名前

- タイトル(省略可)

- 説明(省略可)

・ フローコントロール

- ノード

- 7 -

Page 17: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

- 矢印

・ プロセス定義の所有権(ロール)

・ 変数データ

- ユーザ定義属性(以降、UDAと呼びます。)

・ Java Action

- 初期化アクション

- 完了アクション

- エラーアクション、一時停止時アクション、再開時アクション、中止時アクション

・ タイマーアクションを含むタイマー

注意

これらの属性はデザイン時にプロセス定義に追加されます。ただし、そのほとんどは、プロセス定義がプロセスインスタンスを作成し、プ

ロセスインスタンスが実行されるまで特別な意味はありません。

3.2.1 プロセス定義の状態

プロセス定義は、以下の状態のいずれかになっています。

・ ドラフト

・ 公開済

・ プライベート

・ 廃止

・ 削除済

ドラフト状態のプロセス定義は、デザイン中のプロセス定義です。ドラフトプロセス定義の所有者だけが、そのプロセス定義からプロセ

スインスタンスを作成することができます(テスト用として)。管理者がドラフトプロセス定義を公開すると、一般ユーザがプロセス定義から

プロセスインスタンスを開始できるようになります。ユーザが実行中のプロセスインスタンスを変更すると、そのプロセスインスタンス専用

にプライベートプロセス定義が作成されます。

公開済みのプロセス定義を編集することはできませんが、ドラフト状態にあるプロセス定義の新しいコピーを作成することが可能です。

プロセス定義の新しいコピーは、公開済みになるまでは編集可能です。

図3.1 プロセス定義の状態

公開済みプロセス定義を回収したい場合、管理者はプロセス定義の状態を公開済から廃止に変更することができます。プロセス定義

を削除したい場合、管理者はその状態を削除済に変更することができます。ドラフトとプライベートのプロセス定義を削除すると、シス

- 8 -

Page 18: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

テムから物理的に削除されます。公開済または廃止のプロセス定義を削除すると、システムからは物理的に削除されませんが、状態

の変更はできなくなります。新しいバージョンをドラフト、プライベート、公開済、および廃止状態のプロセス定義から作成できますが、

削除済のプロセス定義からは作成できません。

注意

プライベートプロセス定義を現在使用されているプロセス定義と将来入れ替えたいと考えている場合は、単純にプライベートプロセス

定義の新しいバージョンを作成してください。新しいプロセス定義には、同じ名前でバージョン番号が上がり、ドラフト状態となります。

管理者だけがドラフトプロセス定義の状態を公開済に変更できます。ドラフト状態のプロセス定義を公開すると、自動的に、元のプロセ

ス定義の状態が公開済から廃止に変更されます。

各プロセス定義ファミリ(つまり、同じ名前で別のバージョン番号のプロセス定義)は、公開済のプロセス定義を1つだけもつことができま

す。

3.2.2 プロセス定義識別子

プロセス定義は次の属性で識別されます。

・ ID

・ バージョン

・ 所有者

・ 名前

・ タイトル(省略可)

・ 説明(省略可)

IDはLong型の変数で、プロセス定義を一意に取り扱うために、Interstage BPMサーバから自動的に割り当てられます。バージョン番号

は自動的に割り当てられます。所有者はプロセス定義の作成者です。

そのほかの3つの識別子は省略可能です。アプリケーションをデザインする場合、必要であれば、Model APIのPlanインタフェースから

名前、タイトル、説明にアクセスすることができます。

プロセス定義の版数管理

新しいプロセス定義にはバージョン番号1.0が割り当てられます。たとえば、Purchase Order v1.0などです。プロセス定義の新しいバー

ジョンは、名前を変更せずに作成することができます。プロセス定義をコピーした場合、プロセス定義の新しいバージョンは、次のバー

ジョン番号になります。たとえば、Purchase Order v2.0などです。

3.2.3 ワークフローエレメント

ワークフロープロセスは、矢印によって接続されたノードのネットワークです。ノードと矢印はワークフローエレメントと呼ばれます。

ノードはプロセス内の手順を表します。手順は、プロセスの関係者に特定のタスクを割り当てるアクティビティを表す場合も、プロセスフ

ローに関する決定が行われる場所を表す場合もあります。後者の場合、ユーザによるアクションは不要です。

ワークフローエレメントには、少なくともID、名前、タイトル、および説明という属性があります。IDは、すべてのワークフローエレメントが

必ず持っていなければならない属性です。Interstage BPMサーバは、ワークフロープロセス内の各エレメントを識別するために、自動

的に固有のIDを割り当てます。

すべてのノードがもつ属性に加えて、特定のノードでは、そのノード固有のプロパティがあります。これらのプロパティは、そのノードタ

イプが目的とする動作をするために必要となります。

矢印は、プロセスインスタンスの1つのノードから別のノードへのフローをつなぐ接続子です。イベントのフローは、単純に1つのノードか

ら次のノードへ、フロー上の矢印を通っていきます。矢印には、つなぎ先ノードの状態を変えること以外の機能はほとんどありません。

矢印には、ID、名前、および説明という、簡単な識別子があります。IDのデータ型は「long」で、プロセス定義に一意のハンドルを提供

するために、Interstage BPMサーバから自動的に割り当てられます。

説明は省略可能です。アプリケーションをデザインする場合、必要であれば、Model APIのPlanインタフェースからID、名前、説明の

フィールドにアクセスすることができます。

- 9 -

Page 19: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

3.2.4 Java Actionプロセスインスタンスは、それらを実行するInterstage BPMサーバ上に存在しており、どのようなクライアントであってもプロセスインスタ

ンスを通じてユーザとやりとりできます。Java Actionは、プロセスインスタンスが外部と通信できるメカニズムを提供します。根本的に、

Java Actionは、Interstage BPMがプロセス実行の一部として呼び出すことができるよう構成されている、静的なJavaメソッドにすぎませ

ん。

Interstage BPMは、さまざまなタイプのJava Actionを提供します。主にJava Actionはノードで定義されています。たとえば、プロセス定

義全体で定義されているもの、他のJava Actionで定義されているものなどがあります。

・ 開始アクション:開始アクションは、ノードがタスクを実行する前に評価されます。したがって、このJava Actionは、ノードがタスクを実

行する前にそのノードに関連付けられている値を設定または初期化するために使用されます。

・ 終了アクション:終了アクションは、ノードがタスクを終了した後、プロセスインスタンスが別のノードに移動する前に実行されます。

したがって、このJava Actionは、目的の作業が終了した後、ノードに関連付けられた値を事後処理するまたは分析するために使用

されます。

・ ロールアクション:ロールアクションは、タスクの担当者の決定後に評価されます。したがって、このJava Actionはロールと連動した

タスクの担当者リストを動的に出力するために使用されます。

・ プロセス実行時の特定のエラー状況に対処するのに使用します。エラーアクションは、プロセス定義全体、各ノード、そして、他の

Java Actionで、定義することができます。すなわち、他のJava Actionの実行中に起きたエラーに対処する場合です。

・ Interstage BPMの外部システムにアクセスする他のJava Actionで定義することができます。たとえば、データベースです。データ

ベース内で新しく追加した列を削除する場合など、トランザクションの除去や、ロールバックのトランザクションで関連するすべての

システムの一貫した状況を確保するのに役立ちます。

詳細については、「6.2.1 Java Actionsのタイプ」を参照してください。

3.2.5 ロール

ロールと担当者の割当ては、ワークローシステムの基本的な機能です。ロールは、一組織に対して与えられる名前で、一般的にはユー

ザのグループです。システムの設定により、Interstage BPMのローカルグループストア内、Directory Service内、もしくは、両方のシステ

ムで、ユーザグループは定義されています。ディレクトリサービスの機能を利用すると、ロールはコンピュータ、ソフトウェアプログラム、

パラメータ化された関数呼び出し、他の組織に対してもマッピングすることができます。

通常、ロールはビジネスや組織のニーズに合わせてグループ化したユーザのグループに与えられる名前です。一般的には、組織内

の一人以上で行われる作業の担当グループにロールを割り当てます。そのほか、権限、職責、スキルまたは専門分野などによってユー

ザをグループ化することができます。ワークフローエンジンは、ロールを文字列の変数として識別しますが、ロールに割り当てられたグ

ループのメンバーが何かということは識別しません。

ユーザが関与するアクティビティノードの場合はロールを割り当てることが可能です。現在のInterstage BPMでは、ActivityノードとVotingActivityノードだけがこのプロパティをサポートしています。

3.2.6 フォーム

多くのビジネスプロセスには、業務の情報に基づいた決定とアクションが伴います。ユーザは、フォームを持つアプリケーションを作成

し、そのフォームから業務の情報にアクセスします。フォームはプロセスのデザイン時にプロセス定義に追加され、添付文書は実行中

のプロセスインスタンスに追加されます。

フォームはユーザ定義属性に保存されたデータや外部データソースからのデータを表示したり、レポートしたりするために使用します。

また、ユーザがプロセスインスタンスや外部データソースのデータの追加・変更などを行う場合にも使用します。フォームで変数データ

を使用する方法については、「3.2.9 ユーザ定義属性」を参照してください。

フォームはWebサーバ上に保存されるアプリケーションですが、Interstage BPMはプロセス定義にフォーム属性として、アプリケーショ

ンで使用するフォームのURLを登録することができます。フォーム属性は、Startノード、Activityノード、およびVoting Activityノードと

関連付けることができます。

プロセスインスタンスを開始するか、ワークアイテムを表示する時に、ユーザアプリケーション(Model API)を使ってフォーム属性の情報

を取得できます。

- 10 -

Page 20: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

3.2.7 タイマー

ほとんどのビジネスプロセスは、納期によって存続が決定します。納期には、締切日や支払い利息、マイルストーン、遅延、プロジェク

ト管理、休暇予定、個人的な集まりなどがあります。

Interstage BPMでは、納期が満了時に特定のアクションをトリガするタイマーを作成できます。タイマーには、Activityノードが活性化さ

れた場合に実行が開始されるActivityノードレベルタイマー、またはタイマーを含むプロセス定義から新しいプロセスインスタンスが作

成されるたびに実行が開始されるプロセスレベルタイマーがあります。

タイマーは、UDAで与えられる 時間およびアクションのパラメータで制御されます。タイマーは、Java Actionから設定します。タイマー

の納期満了や発行時刻は、時刻を指定する絶対指定や(アクティビティやプロセスの開始のような)他イベントからの相対指定です。タ

イマーでは、定期的にトリガアクションを指定することも可能です。また、タイマーは、エスカレーション(追加のユーザリストにアクティビ

ティを割り当てる)やメールの送信を含む、さまざまなアクションを実行できます。

以下のタイマー種別が利用可能です。

・ 相対時刻タイマー:相対時刻タイマーは、期限切れ をアクティビティやプロセスの活性化された時間に基づいて計算します。相対

時刻タイマーは一度だけ活性化されます。

・ 絶対時刻タイマー:絶対時刻タイマーは、期限切れを絶対時刻で設定します。設定値は1970年1月1日、00:00:00以降で、ミリ秒単

位に指定します。

・ 定期タイマー:定期タイマーは、繰り返し動作する相対時刻タイマーです。初回のタイマー起動時刻は、アクティビティやプロセス

の活性化された時刻との比較で決定されます。次回以降のタイマー起動時刻は、 後にタイマーが起動した時刻との比較で決定

されます。

・ ビジネス定期タイマー:ビジネス定期タイマーは、繰り返し動作するビジネス相対時刻タイマーです。初回のタイマー起動時刻は、

アクティビティやプロセスの活性化された時刻との比較で決定されます。次回以降のタイマー起動時刻は、 後にタイマーが起動

した時刻との比較で決定されます。

・ ビジネス相対時刻タイマー:ビジネス相対時刻タイマーは、期限切れをアクティビティやプロセスの活性化された時間に基ついて計

算します。また、記述に[ビジネスカレンダー]を使用します。ビジネス相対時刻タイマーは一度だけ活性化されます。

ビジネス定期タイマーとビジネス相対時刻タイマーはビジネスカレンダーを使用します。Model APIを使用してタイマーを定義する詳細

については、「6.12 タイマーの使用」を参照してください。ビジネスカレンダーを構成する方法の詳細は、『Interstage BPMサーバ 管理

者ガイド』を参照してください。

3.2.8 プロセス定義の所有権

プロセス所有権の属性は、各個人およびグループに対してプロセス定義、および、プロセスインスタンス内の許可レベルの設定を可能

にします。プロセス所有権の目的は、編集権限を与えられたユーザを構造的に識別することです。

プロセス定義の所有者は、そのプロセス定義の作成者です。プロセス定義からプロセスインスタンスが作成される場合、デフォルトで

は、プロセス定義の所有者はプロセスインスタンスの所有者にもなります。ただし、プロセス定義とプロセスインスタンスの所有権は、2つの異なる属性です。

プロセス定義をデザインしている間、プロセスの所有権はロールの担当者に直接割り当てられるか、ロールアクションの使用によりプロ

グラムで割り当てられます。ロールアクションは、以下の表に示すように相互作用します。

ロール ロールアクション プロセスインスタンスの所有者

未設定 未設定 プロセス定義の所有者

設定 未設定 ロールで設定されたユーザ

未設定 設定 ロールアクションで設定されるユーザ

設定 設定 ・ ロールとロールアクションで同じユーザを所有者に設定した場合、設定した

ユーザがプロセスインスタンスの所有者となります。

・ ロールとロールアクションで異なるユーザを所有者に設定した場合、または、

明示的に設定しなかった場合、プロセス定義の所有者がプロセスインスタンス

の所有者となります。

Interstage BPMサーバがディレクトリサービスにアクセスして、ユーザを認証し、ユーザに割り当てられたロールや、ユーザがプロセスイ

ンスタンス、アクティビティ、およびユーザ属性にアクセスしたり操作したりする範囲を識別します。ロールを使用すると、人事異動があっ

- 11 -

Page 21: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

た場合にすべてのプロセス定義を変更する必要がありません。Interstage BPMのローカルグループストア、もしくは、ディレクトリサービ

スよりグループのメンバーを更新してください。

3.2.9 ユーザ定義属性

プロセス定義には、ユーザ定義属性として、UDAを割り当てることが可能です。UDAの定義は、プロセス定義から作成されたプロセス

インスタンスと関連付けられているデータアイテムを示します。したがって、プロセスインスタンス固有の値はこの定義に保存することが

できます。値は、プロセスインスタンスの実行開始時、または実行中に割り当てられます。変数データは、関連付けられているすべての

プロセスインスタンスに対してグローバルです。すべてのユーザが変数データにアクセスして変更することができます。

デザイナーは、プロセス定義のデザイン時に、プロセスインスタンスで使用するデータ型を決定し、データを変数に割り当てる方針を

作成します。

データはJava Actionを使用して変更することも可能です。Java Actionの使用に関しては、「6.1 Interstage BPMと外部アプリケーション

の統合」を参照してください。

3.2.10 ノードタイプ

Interstage BPMは、様々なノードタイプをサポートしています。以下の表に、サポートしているノードタイプと属性の概要を示します。す

べてのノードタイプに共通する属性は含まれていません。

ノードタイプ ロール ロールア

クション

開始アク

ション

終了アク

ション

中止時アク

ション、

一時停止時

アクション、

再開時アク

ション

エラーア

クション

タイマー トリガ フォーム

Startノード - - - - - - - - 対応

Exitノード - - - - - - - - -

Activityノード 対応 対応 対応 対応 対応 - 対応 対応 対応

VotingActivityノード

対応 対応 対応 対応 対応 - 対応 - 対応

Delayノード - - 対応 対応 対応 - 対応 - -

Triggerノード - - 対応 対応 対応 - 対応 対応 -

ANDノード - - - 対応 対応 - - - -

ORノード - - - 対応 対応 - - - -

Conditionalノード - - 対応 - 対応 - - - -

Subprocessノード - - 対応 対応 対応 - - - -

RemoteSubprocessノード

- - 対応 対応 対応 対応 - - -

Chained-Processノード

- - 対応 対応 対応 - - - -

次に、それぞれのノードタイプの詳細について説明します。

Startノード

Startノードは、プロセスの開始を示すノードです。1つのプロセスは1つのStartノードしかもつことができません。

サポートしていない機能: このノードタイプは、ロールアクション、タイマー、トリガをサポートしていません。

留意事項:

・ Startノードが動作するためにはプロセス定義からプロセスが生成(Create)されている必要があります。

- 12 -

Page 22: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ プロセスインスタンスの実行はStartノードから開始されます。プロセスインスタンスが開始されると、Startノードにイベントが送られま

す。

・ Startノードは直ちにすべての外向き矢印にイベントを送ります。

Exitノード

Exitノードは、プロセスの終了を示すノードです。

1つのプロセスは1つ以上のExitノードをもつことができます。プロセス定義には、別のプロセスの完了モードをモデル化した複数のExitノードが存在する場合があります。プロセス定義が多数ある場合は、複数のExitノードを単純化した図形で示すことができます。

一般的なプロセス定義では、Exitノードには1つ以上の内向き矢印があり、外向き矢印はありません。

サポートしていない機能: Exitノードは、全種類のロールアクション、タイマー、トリガをサポートしていません。

留意事項: プロセスインスタンスの実行はExitノードで停止します。プロセスインスタンスに複数のExitノードがある場合は、プロセスイン

スタンスの実行がExitノードの1つに到達すると、そのプロセスインスタンスは完了したと見なされます。

Activityノード

Activityノードは、人が業務を実行することで作業が完了する対話型ノードです。このノードが実行されると、プロセスインスタンス内で

イベントのスレッドが一時停止します。このスレッドは人が介入するまで再開されません。

Activityノードは、外部エージェント(ほかのデバイスなど)が実行するアクティビティを代行することもできます。

プロセスインスタンスには、任意の数のActivityノードを指定できます。1つのActivityノードには、1つ以上の内向き矢印と、1つ以上の

外向き矢印があります。

サポートしている機能: このノードは、開始アクション、終了アクション、ロールアクション、タイマー、およびnode-levelトリガをサポートし

ています。さらに、管理者がこのノードが含まれるプロセスインスタンスの破棄、一時停止、もしくは、再開する場合に有効となるJava Actionセットを定義することができます。

留意事項:

・ ロールと担当者の関係は下表のようになります。

設定 未設定 ロールに設定されたメンバー

設定 設定(ロールに含まれるユーザを指定) ロールとロールアクションで設定されたメンバー

設定 設定(ロールに含まれないユーザを指定) プロセスの所有者

未設定 設定 ロールアクションで指定されたメンバー

・ このノードについて定義されたすべてのタイマーは活性化されます。

・ すべての担当者のワークアイテムが作成されます。

・ 1人の担当者(すべての担当者ではありません)がActivityノードに関連付けられたタスクを完了すると、その担当者はタスクが完了

したことを知らせることで(たとえば、ボタンをクリックするなど)プロセスインスタンスを再び始動させます。これはワークアイテムのコ

ミットと呼ばれます。

・ このノードのそれぞれの外向き矢印は、このノードからどのプロセスインスタンスに進むかを表しています。担当者は、ビジネスプロ

セスに応じて方向を表す矢印を選択することにより、プロセスインスタンスを特定の方向に進めることができます。

・ ワークアイテムがコミットされると、終了アクションが評価され、活性中のプロセスタイマーはすべてキャンセルされます。また、イベ

ントは選択された矢印に送られます。

Voting Activityノード

Voting Activityノードでは、投票ルールを使用して1位の矢印(アクティビティの外向き矢印)を決定します。すべてのVoting Activityノードについて、投票ルールが指定されている必要があります。

プロセスインスタンスには、任意の数のVoting Activityノードを指定できます。1つのVoting Activityノードには、1つ以上の内向き矢印

と、1つ以上の外向き矢印があります。

- 13 -

Page 23: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

サポートしている機能: このノードでは、開始アクション、終了アクション、ロールアクション、およびタイマーをサポートしています。さら

に、管理者がこのノードが含まれるプロセスインスタンスの破棄、一時停止、もしくは、再開する場合に有効となるJava Actionセットを定

義することができます。

留意事項:

・ 内向き矢印からイベントを受け取ると、Voting Activityノードは実行状態になります。実行状態の間、内向き矢印から受け取ったイ

ベントは無視されます。ノードに一覧表示されているロールを評価できない場合、ノードとそのプロセスインスタンスはエラー状態に

なります。

・ 実行状態になるとVoting Activityノードは開始アクションを評価します。

・ ロールと担当者の関係は下表のようになります。

ロール ロールアクション 担当者

設定 未設定 ロールに設定されたメンバー

設定 設定(ロールに含まれるユーザを指定) ロールとロールアクションで設定されたメンバー

設定 設定(ロールに含まれないユーザを指定) プロセスの所有者

未設定 設定 ロールアクションで指定されたメンバー

・ このノードについて定義されたすべてのタイマーは活性化されます。

・ すべての担当者のワークアイテムが作成されます。

・ 1人の担当者(すべての担当者ではありません)がVoting Activityノードに関連付けられたタスクを完了すると、その担当者はタスク

が完了したことを知らせることで(たとえば、ボタンをクリックするなど)プロセスインスタンスを再び始動させます。これはワークアイテ

ムのコミットと呼ばれます。

・ このアクティビティのそれぞれの外向き矢印は、このノードからどのプロセスインスタンスに進むかを表しています。担当者は、ビジ

ネスプロセスに応じて方向を表す矢印を選択することにより、プロセスインスタンスを特定の方向に進めることができます。

・ ワークアイテムがコミットされると、終了アクションが評価され、活性中のプロセスタイマーはすべてキャンセルされます。また、イベ

ントは選択された矢印に送られます。

注意

Interstage BPM Studioで使用できるカスタムノードがあります。APIレベルでは、Complex ConditionalノードはConditionalノードに相当

します。同様に、EmailノードとWeb ServiceノードはORノードに相当します。

Delayノード

Delayノードは、プロセスインスタンスの実行(またはプロセスインスタンス内の特定の実行スレッド)が指定された期間一時停止する、

ワークフロープロセス内のステップを表しています。

プロセスインスタンスには、任意の数のDelayノードを指定できます。1つのDelayノードには、1つ以上の内向き矢印と、1つ以上の外向

き矢印があります。

サポートしている機能: 開始アクション、終了アクション、およびタイマーを必要に応じて使用することができます。複数のタイマーをこの

ノードに指定できますが、有効になるのは1つだけです。さらに、管理者がこのノードが含まれるプロセスインスタンスの破棄、一時停

止、もしくは、再開する場合に有効となるJava Actionセットを定義することができます。このノードでは、ロールアクションをサポートして

いません。

留意事項:

・ Delayノードが内向き矢印からイベントを受け取ると、すべての開始アクションを評価し、指定されたすべてのタイマーを活性化し

て、待機します。待機中に内向き矢印から受け取った追加のイベントは無視されます。

・ 活性中のタイマーが期限切れになると、ノードはほかのすべての活性中のタイマーをキャンセルし、すべての終了アクションを評

価して、すべての外向き矢印にイベントを送ります。

- 14 -

Page 24: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

Triggerノード

Triggerノードは、外部イベントによるプロセスでのひとつの段階を表します。各Triggerノードには、データ(通常はXMLファイル)が外

部システムから届く際に実行するよう定義されたトリガがあります。一度データが届くと、トリガはトリガの定義によりデータをUDAs(ユー

ザ定義属性)に移動します。それからトリガは選択をし、プロセスの実行は次のノードに進みます。

この種類のノードには人の操作は不要です。そのため、この種類のノードが活性化すると、ワークアイテムは1つも生成されません。ノー

ドで定義されたトリガによってのみ完了できます。

プロセス定義はいくつでもTriggerノードを所有できます。Triggerノードは1つ以上の内向き矢印を所有できますが、外向き矢印は1つのみです。

サポートしている機能:Triggerノードには1つ以上の定義済みのノードレベルのトリガ(選択トリガ)が必要です。必要に応じて開始アク

ション、終了アクション、およびタイマーが使用できます。さらに、管理者がこのノードが属するプロセスインスタンスを中止、一時停止、

または再開するときに、Java Action Setが活性化するように定義できます。この種類のノードはユーザ、ロール、またはエージェントに割

り当てられません。また、この種類のノードはロールアクションやフォームに対応していません。

留意事項:

・ Triggerノードを内向き矢印からイベントを受け取ると、すべての開始アクションも評価し、すべてのアクティブトリガを活性化し、待

機します。待機中は、内向き矢印からの追加イベントは無視されます。

・ 1つのアクティブトリガが実行されるとすぐに、ノードはすべての終了アクションを評価し、外向き矢印にイベントを送ります。

注意

Interstage BPM Studioでは、Triggerノードを「Triggerノード」と呼びます。

ANDノード

ANDノードは、プロセスインスタンスが複数の実行スレッドの完了を同期するための待ち合わせ処理を表しています。

プロセスインスタンスには、任意の数のANDノードを指定できます。1つのANDノードには、1つ以上の内向き矢印と、1つ以上の外向

き矢印があります。

サポートしている機能: 終了アクションを必要に応じて使用することができます。ANDノードは、開始アクション、ロールアクション、また

はタイマーをサポートしていません。

留意事項:

・ ANDノードは、少なくとも1つのイベントを各内向き矢印から受け取るまで待機します。それぞれの矢印からのイベントを待機してい

る間、同じ内向き矢印から送られる追加のイベントは無視されます。

・ それぞれの内向き矢印がイベントを受け取ると、内向き矢印で表されるすべての実行スレッドは同期されます。すべての終了アク

ションは評価され、イベントがすべての外向き矢印に送られます。

ORノード

ORノードは、ワークフローを複数の並行する分枝に分割する処理を表しています。プロセスインスタンスには、任意の数のORノードを

指定できます。

1つのORノードには、1つ以上の内向き矢印と、1つ以上の外向き矢印があります。

サポートしている機能: 終了アクションを必要に応じて使用することができます。ORノードタイプは、開始アクション、ロールアクション、

またはタイマーをサポートしていません。

留意事項: このノードタイプでは、1つの内向き矢印からイベントを受け取るたびに終了アクションを評価し、すべての外向き矢印にイ

ベントを送ります。

Conditionalノード

Conditionalノードは、特定のUDAの値に応じて、プロセスの遷移先ノードを、複数の選択可能な方向から1つの進む方向を決定しま

す。このノードのすべての外向き矢印は、プロセスインスタンスが進むことのできるさまざまな方向を表しています。

プロセスインスタンスには、任意の数のConditionalノードを指定できます。1つのConditionalノードには、1つ以上の内向き矢印と、1つ以上の外向き矢印があります。

- 15 -

Page 25: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

サポートしている機能: 開始アクションを必要に応じて使用することができます。さらに、管理者がこのノードが含まれるプロセスインスタ

ンスの破棄、一時停止、もしくは、再開する場合に有効となるJava Actionセットを定義することができます。このノードでは、ロールアク

ション、またはタイマーをサポートしていません。

留意事項:

・ どの方向に進むかは、指定されたUDAの値によって異なります。Conditionalノードでは、UDAの値と、それぞれの外向き矢印の

条件に関連付けられている定数の値を比較します。

・ Conditionalノードが内向き矢印からイベントを受け取ると、まず開始アクションを評価し、次に指定された順序で外向き矢印の条件

を評価します。

・ プロセスインスタンスは、指定されたUDAの値が条件を満たす 初の1つの外向き矢印にそって進みます。UDAの値がどの条件

も満たさない場合、プロセスインスタンスはデフォルトの外向き矢印にそって進みます。

Subprocessノード

Subprocessノードは、タスクがデータを外部プロセスへ渡し終え、そこでワークフロープロセスを呼び出して、 終的に結果を受け取る

ワークフロープロセス内のステップを表しています。

Subprocessノードは、既存のプロセス定義の再利用を支援します。1つのSubprocessノードは、デザイン済のプロセス定義のすべての

ノード、矢印、およびそのほかの特性にアクセスして、そのプロセス定義全体を表すことができます。

Subprocessノードを使用すると、ユーザは複雑なプロセスを、詳細を非表示にして重要な項目だけを表示したサブプロセスの単純な階

層ネットワークに整理することができます。プロセスとサブプロセスは独立しているため、同時にデザインすることができます。

Subprocessノードは、ほかの人に作業を委任する場合に使用することもできます。

プロセスインスタンスには、任意の数のSubprocessノードを指定できます。1つのSubprocessノードには、1つ以上の内向き矢印と、1つ以上の外向き矢印があります。

サポートしている機能:

・ 開始アクションと終了アクションを必要に応じて使用することができます。さらに、管理者がこのノードが含まれるプロセスインスタン

スの破棄、一時停止、もしくは、再開する場合に有効となるJava Actionセットを定義することができます。このノードでは、ロールア

クション、またはタイマーをサポートしていません。

・ このノードタイプに固有の属性には、サブプロセスインスタンスの作成、および親プロセスインスタンスとサブプロセスインスタンスの

間で移動するデータを定義するデータマッピング参照の作成に使用するプロセス定義のIDが含まれます。

・ 入力データマッピングでは、サブプロセスの実行前に、サブプロセスのUDAを親プロセスのUDAの値で初期化します。

・ 出力データマッピングでは、サブプロセスの完了後に、サブプロセスのUDAの値を親プロセスのUDAにコピーします。

・ サブプロセスとの間でコピーするデータがない場合、データマッピングを指定する必要はありません。

留意事項:

・ 内向き矢印からイベントを受け取ると、Subprocessノードは開始アクションを評価し、次に指定されたIDのプロセス定義を使用して

プロセスインスタンスを作成します。入力データマッピングが指定されている場合は、サブプロセスのUDAを初期化します。

・ 初期化が完了し、サブプロセスが開始されると、Subprocessノードはプロセスの完了まで待機します。待機中に内向き矢印からノー

ドが受け取ったイベントは、すべて無視されます。

・ サブプロセスが完了すると、出力データマッピングが指定されている場合は、サブプロセスから親プロセスにデータがコピーされ、

終了アクションが評価されます。次に、それぞれの外向き矢印にイベントが送られます。これで、それぞれの外向き矢印が実行さ

れます。

Remote Subprocessノード

Remote Subprocessノードは、リモートコンピュータのワークフローサーバで実行中のワークフロープロセスに実行を渡してタスクが完了

する、ワークフロープロセス内のステップを表しています。リモートコンピュータのワークフローサーバは、たとえば、ほかのInterstage BPMサーバなどです。Subprocessノードと同様に、Remote Subprocessノードは、既存のプロセス定義を新しいプロセス定義内で再利用した

り、複雑なビジネスプロセスを単純化したり、作業をほかの人に委任したりするために使用できます。

プロセスには、任意の数のRemote Subprocessノードを指定できます。1つのRemote Subprocessノードには、1つ以上の内向き矢印と、1つ以上の外向き矢印があります。ただし、外向き矢印の名前は、リモートサブプロセスのExitノードの名前と一致している必要がありま

す。

- 16 -

Page 26: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

サポートしている機能:

・ 開始アクションと終了アクションを必要に応じて使用することができます。さらに、管理者がこのノードが含まれるプロセスインスタン

スの破棄、一時停止、もしくは、再開する場合に有効となるJava Actionセットを定義することができます。Remote Subprocessの起動

に失敗した場合に、エラーJava Actionの割り当てもサポートします。このノードでは、ロールアクション、またはタイマーをサポートし

ていません。

・ このノードタイプに固有の属性には、リモートサブプロセスインスタンスの作成、および親プロセスインスタンスとリモートサブプロセ

スインスタンスの間で移動するデータを定義するデータマッピング参照の作成に使用するプロセス定義のURIが含まれます。

・ 入力データマッピングでは、リモートサブプロセスの実行前に、リモートサブプロセスのUDAを親プロセスのUDAの値で初期化し

ます。

・ 出力データマッピングでは、リモートサブプロセスの完了後に、リモートサブプロセスのUDAの値を親プロセスのUDAにコピーしま

す。

・ リモートサブプロセスとの間でコピーするデータがない場合、データマッピングを指定する必要はありません。

留意事項:

・ 内向き矢印からイベントを受け取ると、Remote Subprocessノードは開始アクションを評価し、次に指定されたURIのプロセス定義を

使用してプロセスインスタンスを作成します。入力データマッピングが指定されている場合は、リモートサブプロセスのUDAを初期

化します。

・ 初期化が完了すると、リモートサブプロセスが開始され、Remote Subprocessノードはプロセスの完了まで待機します。待機中に内

向き矢印からノードが受け取ったイベントは、すべて無視されます。

・ リモートサブプロセスが完了すると、出力データマッピングが指定されている場合は、リモートサブプロセスから親プロセスにデータ

がコピーされ、終了アクションが評価されます。次に、それぞれの外向き矢印にイベントが送られます。

Chained-Processノード

Chained-Processノードは、親プロセスインスタンスから独立した新しいワークフロープロセスがタスクを完了するために作成される、ワー

クフロープロセス内のステップを表しています。このノードでは、その独立したワークフロープロセスを、親ワークフロープロセスの実行

の一部として実行します。

プロセスインスタンスには、任意の数のChained-Processノードを指定できます。1つのChained-Processノードには、1つ以上の内向き矢

印と、1つ以上の外向き矢印があります。

サポートしている機能:

・ 開始アクションと終了アクションを必要に応じて使用することができます。さらに、管理者がこのノードが含まれるプロセスインスタン

スの破棄、一時停止、もしくは、再開する場合に有効となるJava Actionセットを定義することができます。このノードでは、ロールア

クション、またはタイマーをサポートしていません。

・ このノードに固有の属性には、新しいプロセスのインスタンスの作成、および新しいプロセスインスタンスにコピーするデータを定義

するデータマッピングの作成に使用するプロセス定義のIDが含まれます。

・ 入力データマッピングでは、新しいプロセスインスタンスのUDAを親プロセスインスタンスのUDAの値で初期化します。Chained-Processノードでは、実行のフローが親プロセスインスタンスに戻ることはないので、入力データマッピングだけを使用します。新しいプロセ

スインスタンスにコピーするデータがない場合、データマッピングを指定する必要はありません。

留意事項: 内向き矢印からイベントを受け取ると、Chained-Processノードは開始アクションを評価し、次に指定されたIDのプロセス定義

を使用してプロセスインスタンスを作成します。入力データマッピングが指定されている場合は、チェインプロセスのUDAを初期化しま

す。チェインプロセスは親プロセスインスタンスから独立しています。

3.2.11 プロセス定義の変更

プロセス定義の操作はプロセス定義をどのように変更することができるかに関連します。プロセス定義を変更するには、以下の必須条

件を満たす必要があります。

プロセス定義はドラフト状態で、編集モードである必要があります。

・ プロセス定義のインスタンスがあってはいけません。

・ 操作を行うのはプロセス定義の所有者または管理者でなければなりません。

- 17 -

Page 27: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ Interstage BPMサーバでプロセス定義をロックする必要があります。

プロセス定義の変更点は、すべてコミットするか、すべて破棄するかのいずれかとなります。編集をキャンセルまたはロールバックする

場合は、何も変更されません。

3.3 プロセスインスタンス

プロセス定義は、ワークフローエレメントを使用してビジネスプロセスを表現した、一般的なモデルです。プロセスインスタンスは、この

プロセス定義に基づく実行状態の1つを表しています。実行中のプロセスインスタンスは、ビジネスプロセス内のイベントの流れを、プロ

セス定義に基づき開始から完了まで実行します。

プロセスインスタンスが作成されると、Interstage BPMサーバ(ワークフローエンジンとも呼ばれます)はプロセスインスタンスをプロセス定

義のデザインに従って実行します。Interstage BPMサーバによるプロセスインスタンスの実行を確立と呼びます。

プロセスインスタンスは、イベントモデルメカニズムを使用してInterstage BPMサーバで生成されます。イベントとは、Interstage BPMサー

バが生成したプロセスインスタンス内のワークフローエレメントに送られるメッセージのようなものです。このイベントはワークフローエレ

メントに作用します。ノードと矢印はこれらのイベントに反応して、そのタイプや定義に応じてタスクを実行します。

注意

現在のモデルでは、矢印はワークフローの進行役としてだけ使用されます。矢印が始点のノードからイベントを受け取ると、終点のノー

ドにイベントを送ります。説明を簡略化するために、以下では矢印イベントの参照を省略してあります。

プロセスインスタンスには、一般的に1つのStartノードと1つ以上のExitノードがあります。プロセスインスタンスの実行はStartノードがイ

ベントを受け取ったときに開始されます。ノードは、そのタイプや定義に応じて、イベントに対して異なった反応をします。

プロセスインスタンスには、StartノードからExitノードまでのパスの数に応じて、コントロールフローの1つ以上の分岐があります。ただし、

プロセスインスタンスは1つのExitノードがイベントを受け取ったときに完了します。その場合、すべての活性中のスレッドがキャンセル

されます。

プロセスインスタンス属性

プロセスインスタンスの構造は、そのインスタンスの基となるプロセス定義の構造とまったく同じです。プロセスインスタンス内のオブジェ

クトと属性は、プロセスインスタンスの生成基となるプロセス定義より反映されます。さらに、プロセスインスタンスには、プロセス定義か

ら直接マッピングされない「プロセス関連データ」と呼ばれる属性があります。

プロセスインスタンスは、その発生元のプロセス定義と同じ属性をもつことができますが、特定の例外があります。たとえば、プロセス定義の

IDと、そのプロセス定義から作られたプロセスインスタンスのIDには何の関係もありません。また、プロセスインスタンスは、ベースになっ

ているプロセス定義と同じ名前、タイトル、および説明をもつことも、独自の識別子をもつこともできます。

さらに、プロセスインスタンスにはプロセス定義と共有しない(またはプロセス定義から反映されない)多くの追加属性があります。これに

は、添付文書やUDAのほか、実行前には意味のない属性(プロセスの優先順位など)があります。

プロセスインスタンスの属性は、永続的なデータエレメントか、文書のような外部情報ソースへのリンクです。プロセスインスタンスの属

性には以下のものが含まれます(ただし、以下のものに限定はされません)。

・ プロセスインスタンスの状態

・ プロセスインスタンスの識別子

・ プロセスID

- プロセスインスタンス名

- プロセスインスタンスの説明

- プロセスインスタンスのタイトル

・ フローコントロール

- ノードインスタンス

- 矢印インスタンス

- Java Actionセット

- 18 -

Page 28: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ プロセスインスタンスの所有権

- ロール(プロセス所有者)

- プロセス起案者

・ 変数データ

- データアイテム定義

- 作成時刻

- 優先度

- 添付文書参照一式

・ Java Actionセットを含むタイマー

3.3.1 プロセスインスタンスの状態

プロセスインスタンスは、Interstage BPMサーバに保存されている以下の状態のいずれかになっています。初期、実行中、一時停止、

または完了。プロセスインスタンスが作成されると、開始されるまでは初期状態となっています。プロセスインスタンスがExitノードに到

達すると、完了状態になります。

図3.2 プロセスインスタンスの状態

プロセスインスタンスを作成して開始を行わないことも可能ですが、実際の処理では、ほとんどのプロセスインスタンスは作成と開始が

同時に行われます。ただし、プロセスインスタンスの作成と開始は、2つの別々のアクションです。

プロセスインスタンスを一時停止すると、実行中の状態から一時的にプロセスインスタンスを削除します。この一時的な非活性状態を

一時停止状態と呼びます。プロセスインスタンスにワークアイテム、または実行中のサブプロセスがある場合は、それらも一時停止状態

になります。また、一時停止中のプロセスインスタンスは変更することができません。

ただし、一時停止中のプロセスインスタンスは、完了状態の中には存在しません。一時停止中のプロセスインスタンスを作成したプロセ

ス定義を変更することや、一時停止中のプロセスインスタンスを再割当てすることはできません。一時停止中のプロセスインスタンスを

再開すると、プロセスインスタンスは、そのプロセスインスタンスが保持していたワークアイテムやサブプロセスと共に活性化されます(実行中の状態に戻ります)。

プロセスインスタンスの一時停止や再開は、Model APIを使用して行うことができます。APIの一時停止、または再開のメソッドを使用す

るには、管理者である必要があります。suspend()メソッドおよびresume()メソッドの使用方法については、「7.4.4 プロセスインスタンスの

一時停止」を参照してください。

永続性と状態

Interstage BPMサーバはプロセスインスタンスの状態の永続性を保障しない場合があります。たとえば、プロセスインスタンスがロック状

態の場合にInterstage BPMサーバが停止した場合、ロック状態は失われてしまいます。

Interstage BPMはワークフロープロセストランザクションのACID特性(原子性、一貫性、分離性、持続性)をサポートしていますが、Model APIを使用したアプリケーション側の処理は含まれません。アプリケーションからワークフロー処理を分離し、アクティビティと同期を取ること

- 19 -

Page 29: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

を推奨します。同期を取るには、ワークフロー処理が何らかの異常でロールバックした場合、アプリケーション側の処理も同じポイントで

ロールバックする必要があります。

3.3.2 ノードインスタンスと矢印インスタンス

ノードインスタンスと矢印インスタンスは、プロセス定義ノードおよび矢印と一対一で対応しています。ノードインスタンスは基本的に特

定のノードの状態を保持するものです。ノードインスタンスと矢印インスタンスは、作成済、実行中、完了、およびエラーのいずれかの

状態となります。

ノードタイプについての詳細は、「3.2.10 ノードタイプ」を参照してください。

3.3.3 プロセスインスタンスの所有権

プロセスインスタンスは、そのプロセスインスタンスを開始した人(プロセス起案者)が所有しています。プロセス所有者がプロセスインス

タンスの作成に関わる必要はありませんが、プロセス所有者が自分に属するプロセスインスタンスを誰が作成したかを知っておくと便利

です。

3.3.4 添付文書

添付文書とは、ほかのソフトウェアで作成されたり、アクセスされたりした文書の参照です。参照先は、画像、スプレッドシート、ワードプ

ロセッサファイルのほか、ビジネスプロセスを完了するためにアクセスまたは修正する必要があるファイルなどです。

添付文書はその文書のパスとファイル名の参照だけで構成されています。

添付文書は、ワークアイテムよりアクセスすることができ、追加、削除することができます。ただし、添付文書は、ワークフローで枝分か

れしたほかのActivityノードを含む、プロセスインスタンス全体に属します。

デフォルトでは、ワークアイテムでユーザがほかのファイルタイプを開くために使用するプログラムを指定することができます。

3.4 ワークアイテム

Activityノードは、割り当てられたタスクの評価を終えると、割り当てられたそれぞれのユーザまたはグループに対して、ワークアイテム

を生成します。ワークアイテムは、プロセスインスタンス上のユーザとの接点です。つまり、ワークアイテムは、ユーザがプロセスインスタ

ンスのすべての属性にアクセスすることができるメカニズムです。

ワークアイテムの属性

・ 識別子

- プロセスインスタンスID

- プロセスインスタンス名

- プロセスインスタンスの説明

- プロセスインスタンスのタイトル

- ワークアイテム名

- ワークアイテムのタイトル

- ワークアイテムの説明

- 矢印一式

・ 担当者

・ 変数データ

- 添付文書参照一式

- フォーム情報

- データアイテム

- 20 -

Page 30: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

3.4.1 ワークアイテムモード

Activityノードが活性化されると、ワークアイテムが生成され、サーバのローカルグループストア、もしくは、ディレクトリサービスで定義さ

れたロールのメンバーが1人以上からなるグループに割り当てられます。

生成されるワークアイテム数は、「ワークアイテムモード」によって決まります(以下を参照してください)。Interstage BPMは、グループワー

クアイテムと個別(「通常」)ワークアイテムを区別します。グループワークアイテムと個別ワークアイテムは、システム内で共存できます。

グループワークアイテムモード

このモードでは、Activityノードに割り当てられたロールを持つユーザグループ全体に対して1つのワークアイテムが生成されます。グ

ループワークアイテムは、グループのメンバーが頻繁に変わる場合や同一グループ内で多数のユーザが作業している場合に、(パフォーマンス面で)特に有益です。

個別ワークアイテムモード

このモードでは、Activityノードに割り当てられたロールを持つユーザごとに1つのワークアイテムが生成されます。それぞれのユーザ

は自分のワークアイテムについて作業します。

ワークアイテムモードの変更

デフォルトでは、個別ワークアイテムが生成されます。これは、Interstage BPMサーバのSupportGroupWorkItemパラメタの値によって

定義されています。デフォルトでは、このパラメタはfalseに設定されています。SupportGroupWorkItemパラメタについての詳細は、

『Interstage BPMサーバ 管理者ガイド』を参照してください。

SupportGroupWorkItem パラメタを true に設定すると、グループワークアイテムの生成がデフォルト設定になります。

Activity_node.markForExpandGroupsパラメタをtrueに設定すると、プロセス定義のデザイン中にワークアイテムモードを変更できます。

Activityノードにのみ、この方法が使用できます。例については、「5.1.2 プロセス定義の新規デザイン」を参照してください。

プロセス定義レベルでのみ、この方法が使用できます。

3.4.2 ワークアイテムの状態

Activityノードが活性化されると、Interstage BPMで1つ以上のワークアイテムが作成され、定義されたロールのユーザグループまたは

ロールの1人以上のメンバーに割り当てられます。デフォルトでは、個別ワークアイテムがユーザグループの各メンバーに割り当てられ

ます。ただし、各Activityノードで割り当てられたグループ全体に対して1つのグループワークアイテムを作成するように変更することが

できます。デフォルトでは、ユーザはタスクを受理したり、予約したりすることで、複数のユーザ間で互いの作業が重複しないようにする

ことができます。

ワークアイテムの状態は、活性、読取り、受理、拒否、非活性(個別ワークアイテムのみ)、一時停止、または完了です。

・ 活性: Activityノードが活性化されると、担当者の割り当てがロールアクションによって変更されないかぎり、Interstage BPMはActivityノードで割り当てられたユーザグループに対して1つの活性ワークアイテムを作成するか、またはロールの各メンバーに対して複数

の活性ワークアイテムを作成します。活性ワークアイテムは、すべての担当者または割り当てられたロールのメンバーが閲覧、受

理、一時停止、再割当て、または拒否できます。

・ 読取り: 担当者や割り当てられたロールのメンバーがワークアイテムを閲覧すると、そのワークアイテムは「読取り」状態となります。

すべての担当者またはグループメンバーが同一のワークアイテムを閲覧できます。「活性」状態のワークアイテムと同様、この状態

のワークアイテムを後で、受理、一時停止、再割当て、または拒否できます。

・ 受理:担当者または割り当てられたユーザグループのメンバーがワークアイテムを受理すると、そのワークアイテムは「受理」状態に

なります。このアクティビティに関連付けられた他の個別ワークアイテムは、「非活性」状態となります。これにより、業務の重複を防

ぐことができます。

ワークアイテムを受理したユーザは、後で拒否することもできます。この場合、そのワークアイテムは再び活性化されます。さらに、

標準再割当てモードでは、ワークアイテムを受理していた人が、それを他の人に割り当てることができます。

可能なモードについての詳細は、「3.8.2 再割当てモード」を参照してください。

- 21 -

Page 31: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ 拒否: 「拒否」状態のワークアイテムとは、ユーザが拒否したワークアイテムです。拒否されたワークアイテムは、ユーザの活性ワー

クアイテムのリストには表示されず、非活性のワークアイテムのリストに表示されます。ユーザは拒否したあとでもそのワークアイテム

を閲覧または受理することができます。

すべての担当者またはロールの全メンバーが個別ワークアイテムを拒否した場合、活性ワークアイテムが各プロセスインスタンス所

有者に1つずつ作成されます。ただし、すべての所有者がワークアイテムを拒否することはできません。すべてのプロセスインスタ

ンス所有者が個別ワークアイテムを拒否した場合、そのワークアイテムは再び所有者全員に対して活性化されます。

全員がグループワークアイテムを拒否した場合、どのプロセスインスタンス所有者にもワークアイテムは作成されません。グループ

メンバーは、受理後、そのグループワークアイテムについて作業を行うことができます。そのグループに追加された新メンバーも直

接そのワークアイテムについて作業を行うことができます。

ユーザは以前拒否したワークアイテムを、他の人が受理していないかぎり、受理することができます。

・ 非活性: 他の人が受理したワークアイテムは、非活性になります。

非活性のワークアイテムは拒否または受理できませんが、後で活性化された場合は、再び受理または拒否できるようになります。

・ 完了: ユーザがワークアイテム上で適切な選択を行うと、ワークアイテムは完了状態になり、同じアクティビティに該当する他のワー

クアイテムは、すべてシステムから削除されます。つまり、ワークアイテムのリストから消えます。

3.4.3 矢印

ユーザは、ワークアイテムに指定されたタスクを完了すると、アクティビティを完了するために1つ以上のコミットオプションを選択し、プ

ロセスインスタンス内の次のノードを活性化することができます。

3.5 フィルタ

Interstage BPMのフィルタは、SQLのSELECTステートメント同じように機能します。特定の抽出条件に従って、データベース内のテー

ブルの列にアクセスすることができます。言い換えると、プロセス定義、プロセスインスタンス、またはワークアイテムのテーブルからリス

トを作成し、そのリストを担当者、起案者、または所有者でフィルタしたり、優先順位でのフィルタ、状態でのフィルタ、または識別子で

のフィルタを行うことができます。

注意

詳細なフィルタとソートの機能は、Model APIを使用して行うことができます。これらの高度な機能の使用方法については、「6.3 フィル

ターとソートのAPI」を参照してください。

3.6 構造的プロセス編集の目的

プロセス編集は、柔軟にワークフローのルートを変更するために必要な機能です。

ワークフローユーザは、以下の場合に構造的プロセス編集を必要とします。

・ デザインエラー: プロセスインスタンスが一定期間実行された後、それが誤った前提または論理に基づいていることに気づくことが

あります。

・ メンテナンス: 長い間実行されているプロセスインスタンスは、プロセスインスタンスを 新状態に保ち、滞りなく実行するために、定

期的な微調整が必要となります。

・ プロセスの発見: 現実の世界では、多くのビジネスプロセスは、プロセスプランが完全に固まる前に開始しています。構造的プロセ

ス編集では、プロジェクトチームがそれぞれの経験に基づいて、プロジェクトチームが受け取ったフィードバックに基づいてプロセ

ス定義を変更したり、プロセスインスタンスを後で複製できるように記録したりすることができます。

・ 実験結果を取得する: 構造的プロセス編集では、途中で新しい手順を試すことができ、正確に記録されている複数の手法を使っ

た結果を後で分析することができます。

・ 新しい要求に適応する: 構造的プロセス編集では、新しい政府規制や市場情勢の変化などに応じて、プロセス定義を変更するこ

とができます。

・ やり直す: プロセスが計画に従って進んでいても結果が思わしくない場合、構造的プロセス編集では変更を行ってもう一度やり直

すことができます。

- 22 -

Page 32: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

3.7 サブプロセス機能の目的

サブプロセスは、以下の理由から、重要な要素といえます。

・ サブプロセスは、プロジェクトやプロセスを扱いやすい作業単位に分解します。言い換えれば、複雑なプロセス定義は膨大な数の

ノードによって構成されていて、プロセス定義が読めない状態になっている可能性があります。このプロセスインスタンスを単純な

サブプロセスの階層に再構築すると、それぞれのレベルのプロセス定義を、プロセス定義全体に簡単に適合する個別のタスクとし

てデザインすることができます。

・ サブプロセスを使用することによって、別々のプロセスを扱う別々の部署が、これらのプロセスを簡単に、適切にリンクすることがで

きるようになります。たとえば、購買部、経理部、および新製品開発部がそれぞれの内部要求に応えるため、完全に個別のプロセ

ス定義が必要だったとします。Interstage BPMのサブプロセスでは、この3つの部署間の情報交換や連携作業の調整を緊密に行う

ために、各部署のプロセス定義を作成することができます。

・ サブプロセスを使用すると、個人、部署、または企業が、モジュラコンポーネントのライブラリ、プロセス定義、タスクを後になってか

らさまざまな方法で貼り合わせることができるようになります。

ユーザは2つの方法でサブプロセスを作成できます。正式な方法としてはデザイン時に作成しますが、実行時に作成することもできま

す。これら2つの実装方法では、API内の構造が若干違っています。

・ デザイン時にサブプロセスを実装する場合、たとえば、この目的のために特別に作成されたノードタイプであるSubprocessノードを

使用する必要があります。このノードは、ユーザがデザイン時に親プロセスのインスタンスと子プロセスのインスタンスとの間でやり

取りされるデータをマッピングするためのプロパティを設定するインタフェースを提供します。このSubprocessノードは、ほかのノード

が特定のプロセス定義のメンバーであるのと同様に、プロセス定義のメンバーとなります。

活性中のプロセスインスタンスのフローがSubprocessノードに到達すると、ノードはすぐにサブプロセスをインスタンス化し、実行を

開始します。サブプロセスが完了するまで待機している間、Subprocessノードは一時停止状態になります。

・ 実行時にサブプロセスを実装する場合、Activityノードクラスのメソッドを使用します。他のユーザにタスクを委任する必要がある人

に、タスクが割り当てられた場合、その人は実行時サブプロセスをActivityノードから呼び出すことができます。委任する人は、新し

いプロセス定義を作成するか、または既存のプロセス定義を使用して、デザイン時と同じ方法で元のプロセスインスタンスのデータ

をサブプロセスにマップすることができます。親プロセスのワークアイテムは、サブプロセスが呼び出されるとは一時停止状態となり

ます。サブプロセスが完了し、ワークフローがワークアイテムに戻されると、呼び出し元のノードは完了状態に変更されます。

サブプロセスの実装を実行時に行う場合と、デザイン時に行う場合の違いは、実行時のサブプロセス実装がその場かぎりであることで

す。元のプロセス定義は元の状態のままとなります。プロセス定義が次にプロセスの作成に使用されるときは、元のActivityノードはActivityノードのままです。

3.8 セキュリティモードと再割当てモード

セキュリティモードおよび再割当てモードは、ワークアイテムの状態とは少し違った問題に対応します。ただし、これらのモードや状態

はワークアイテムのアクセスを制御するため、すべて一緒に対応する必要があります。デフォルトでは、システムはOpen Securityモード

および標準再割当てモードでインストールされます。

3.8.1 セキュリティモード

セキュリティモードは、Interstage BPMサーバのSecuritySwitchパラメタを設定して変更できます。Interstage BPMサーバの設定の変更

方法の詳細については、『Interstage BPMサーバ 管理者ガイド』を参照してください。

Open SecurityモードとSecureモードの も大きな違いは、Open SecurityモードではすべてのInterstage BPMユーザがワークアイテムを

表示できる(読取り専用)という点です。Secureモードでは、ワークアイテムの担当者とプロセス所有者だけがそのワークアイテムを表示

できます。両方のセキュリティレベルとも、プロセスの詳細を変更したり、ワークアイテムを選択したりする前に、ワークアイテムを承認す

る必要があります。

3.8.2 再割当てモード

再割当てモードは、Interstage BPM サーバのServerReassignModeパラメタを設定して変更できます。Interstage BPMサーバの設定の

変更方法の詳細については、『Interstage BPMサーバ 管理者ガイド』を参照してください。

再割当てでは、ロールで 初に指定された人とは違う人にアクティビティを割り当てることができます。再割当てに対して設定されてい

るアクセス制御は、ワークアイテムの状態によって実装されたアクセス制御とは異なります。再割当てはアクティビティに対して行われ、

ワークアイテムに対しては行われません。

- 23 -

Page 33: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

ワークアイテムを再割り当てすると、アクティビティに関連付けられた、活性、非活性のすべてのワークアイテムが削除されます。その

後、サーバは、再割り当てで指定されたメンバーに対して、新しい活性ワークアイテムを生成します。

アクティビティは個人に対して再割当てされる必要がありロールに対して行うことはできません。ロールの割当ては、主に、一定期間内

で再利用されるプロセス定義に適しています。そのため、再割当てで指定された人が有効なユーザかどうかは検証されません。

Interstage BPMには、3つの再割当てモードがあります。標準モード、プロセス所有者限定モード、または再割当て禁止モードです。こ

れらは、ServerReassignModeパラメタをregular、owner、またはnoneに設定することで設定されます。

・ 標準モード(regular): このモードでは、現在アクティビティの担当者となっている人またはプロセス所有者が、アクティビティを新しい

ユーザ群に再割当てできます。

・ プロセス所有者限定モード(owner): このモードでは、プロセス所有者だけがアクティビティを別のユーザ群に再割当てできます。

ワークアイテムを別のユーザに再割当てするために、プロセス所有者がそのワークアイテムの担当者である必要はありません。

・ 再割当て禁止モード(none): このモードでは、再割当ては完全に不可となっています。アクティビティの再割当てができるユーザは

いません。

- 24 -

Page 34: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

第4章 Model APIここでは、Model APIアプリケーション開発のシステム環境について説明し、基本的なModel APIのアーキテクチャーを紹介します。

4.1 システム環境

Model APIを使用したアプリケーションの開発と配置は、Interstage BPM Flowがサポートするすべてのオペレーティングシステムで行

えます。サポート対象のオペレーティングシステムについては、『ソフトウェア説明書』を参照してください。

Model APIを使用してアプリケーションを開発するシステムは、以下の要件を満たしている必要があります。

・ Interstage Application ServerのJDK5.0(推奨)またはJ2SE Development Kit (JDK) 5.0 update10以上が正しくインストールされてい

ること。

・ iFlow_api.jarおよびjs.jarが使用可能であること。このJARファイルがModel APIを構成します。JARファイルのパスをCLASSPATH環境変数に追加してください。標準のインストールでは、次の場所にファイルがインストールされます。

Windowsの場合

C:¥Fujitsu¥InterstageBPM¥client¥lib¥iFlow.jar

SolarisまたはLinuxの場合

/opt/FJSVibpm/client/lib/iFlow.jar

注意

iFlow.jarファイルは、Interstage BPMが内部で使用するメソッドが含まれています。これらのメソッドは、アプリケーション開発ではサ

ポートされておらず、Javadocに記述されていません。このため、開発目的で、内部で使用されているメソッドを含まない、代わりのjar fileであるiFlow_api.jarが、提供されています。アプリケーションが内部メソッドを使用しないようにするため、iFlow_api.jarライブラリで

そのアプリケーションをコンパイルすることを推奨します。

iFlow_api.jarをのぞく、C:¥Fujitsu¥InterstageBPM¥client¥libディレクトリや、/opt/FJSVibpm/client/libディレクトリに含まれている他

すべてのライブラリは、Model APIの実装により使用されているため、CLASSPATHに追加する必要があります。

現在、ランタイムで必要とされるclient/libディレクトリには、以下2つのライブラリがあります。

- js.jar

- log4j-1.2.15.jar

・ 要求されるアプリケーションサーバ規定のjarファイルのパスをCLASSPATHに追加、定義してください。

4.1.1 Interstage Application Server(ローカル)の環境設定

必須条件:「4.1 システム環境」の説明に従い、システム環境を設定します。

Interstage Application ServerのModel APIを使用してアプリケーションを開発する場合、以下の設定を行います。

1. 以下のJARファイルをCLASSPATH 環境変数に追加します。

Windowsの場合

<Interstage Application Serverのインストールディレクトリ>¥J2EE¥var¥deployment¥ijserver¥<Interstage BPM サーバのワークユ

ニット名>¥distribute¥fujitsu-ibpm-engine.ear¥fujitsu-ibpm-engine-ejb.jar¥fujitsu- ibpm-engine-ejb_jar_client.jar

UNIXまたはLinuxの場合

<Interstage Application Serverのインストールディレクトリ>/FJSVj2ee/var/deployment/ijserver/<Interstage BPM サーバのワークユ

ニット名>/distribute/fujitsu-ibpm-engine.ear/fujitsu-ibpm-engine- ejb.jar/fujitsu-ibpm-engine-ejb_jar_client.jar

2. 以下のJARファイルをCLASSPATH 環境変数に追加します。

Windowsの場合

- 25 -

Page 35: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

C:¥Interstage¥J2EE¥lib¥isj2ee.jar

C:¥Interstage¥ODWin¥etc¥class¥ODjava4.jar

C:¥Interstage¥jms¥lib¥fjmsprovider.jar

C:¥Interstage¥EJB¥lib¥fjcontainer94.jar

C:¥Interstage¥eswin¥lib¥esnotifyjava4.jar

Solarisの場合

/opt/FJSVj2ee/lib/isj2ee.jar

/opt/FSUNod/etc/class/ODjava4.jar

/opt/FJSVjms/lib/fjmsprovider.jar

/opt/FJSVes/lib/esnotifyjava4.jar

/opt/FJSVejb/lib/fjcontainer94.jar

Linuxの場合

/opt/FJSVj2ee/lib/isj2ee.jar

/opt/FJSVod/etc/class/ODjava4.jar

/opt/FJSVejb/lib/fjcontainer94.jar

/opt/FJSVes/lib/esnotifyjava4.jar

/opt/FJSVjms/lib/fjmsprovider.jar

3. 以下のディレクトリをPATH環境変数に追加します。

Windowsの場合

C:¥Interstage¥bin

UNIXまたはLinuxの場合

/opt/FJSVj2ee/bin

/opt/FJSVjms/bin

4. 以下のディレクトリをLD_LIBRARY_PATH環境変数に追加します。

Solarisの場合

/opt/FSUNod/lib

/opt/FJSVjms/lib

Linuxの場合

/opt/FJSVod/lib

/opt/FJSVjms/lib

5. <JDKのインストールディレクトリ>/jre/libディレクトリに移動し、orb.propertiesファイルを開いて、以下の値を追加します。

org.omg.CORBA.ORBClass=com.fujitsu.ObjectDirector.CORBA.ORB

org.omg.CORBA.ORBSingletonClass=com.fujitsu.ObjectDirector.CORBA.SingletonORB

javax.rmi.CORBA.StubClass=com.fujitsu.ObjectDirector.rmi.CORBA.StubDelegateImpl

- 26 -

Page 36: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

javax.rmi.CORBA.UtilClass=com.fujitsu.ObjectDirector.rmi.CORBA.UtilDelegateImpl

javax.rmi.CORBA.PortableRemoteObjectClass=

com.fujitsu.ObjectDirector.rmi.CORBA.PortableRemoteObjectDelegateImpl

4.1.2 Interstage Application Server (リモート) の環境設定

必須条件:「4.1 システム環境」の説明に従い、システム環境を設定します。リモートコンピュータ(Interstage Application Serverのホスト

コンピュータと異なるコンピュータ)でModel APIが使用できます。

リモートコンピュータでModel APIを使用するには、以下の手順に従います。

1. お使いのリモートコンピュータでInterstage Application Server Client Packageをインストールします。

詳細については『Interstage Application Server インストールガイド』を参照してください。

2. ホストコンピュータの以下のJARファイルをリモートコンピュータにコピーして、CLASSPATH 環境変数に追加します。

Windowsの場合

<Interstage Application Serverのインストールディレクトリ>¥J2EE¥var¥deployment¥ijserver¥<Interstage BPM サーバのワークユ

ニット名>¥distribute¥fujitsu-ibpm-engine.ear¥fujitsu-ibpm-engine-ejb.jar¥fujitsu- ibpm-engine-ejb_jar_client.jar

UNIXまたはLinuxの場合

<Interstage Application Serverのインストールディレクトリ>/FJSVj2ee/var/deployment/ijserver/<Interstage BPM サーバのワークユ

ニット名>/distribute/fujitsu-ibpm-engine.ear/fujitsu-ibpm-engine- ejb.jar/fujitsu-ibpm-engine-ejb_jar_client.jar

3. 以下のJARファイルをCLASSPATH環境変数に追加します。

Windowsの場合

C:¥Interstage¥J2EE¥lib¥isj2ee.jar

C:¥Interstage¥ODWIN¥etc¥class¥ODjava4.jar

C:¥Interstage¥jms¥lib¥fjmsprovider.jar

C:¥Interstage¥ODWIN¥etc¥class¥esnotifyjava4.jar

C:¥Interstage¥EJBCL¥lib¥fjcontainer94.jar

Solarisの場合

/opt/FJSVj2ee/lib/isj2ee.jar

/opt/FSUNod/etc/class/ODjava4.jar

/opt/FJSVjms/lib/fjmsprovider.jar

/opt/FJSVes/lib/esnotifyjava4.jar

opt/FJSVejb/lib/fjcontainer94.jar

Linuxの場合

/opt/FJSVj2ee/lib/isj2ee.jar

/opt/FJSVod/etc/class/ODjava4.jar

/opt/FJSVejb/lib/fjcontainer94.jar

/opt/FJSVes/lib/esnotifyjava4.jar

/opt/FJSVjms/lib/fjmsprovider.jar

- 27 -

Page 37: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

4. 以下のディレクトリをPATH環境変数に追加します。

Windowsの場合

C:¥Interstage¥bin

UNIXまたはLinuxの場合

/opt/FJSVj2ee/bin

/opt/FJSVjms/bin

5. 以下のディレクトリをLD_LIBRARY_PATH環境変数に追加します。

Solarisの場合

/opt/FSUNod/lib

/opt/FJSVjms/lib

Linuxの場合

/opt/FJSVod/lib

/opt/FJSVjms/lib

6. <JDKのインストールディレクトリ>/jre/libディレクトリに移動して、orb.propertiesファイルを開き、以下の値を追加します。

org.omg.CORBA.ORBClass=com.fujitsu.ObjectDirector.CORBA.ORB

org.omg.CORBA.ORBSingletonClass=com.fujitsu.ObjectDirector.CORBA.SingletonORB

javax.rmi.CORBA.StubClass=com.fujitsu.ObjectDirector.rmi.CORBA.StubDelegateImpl

javax.rmi.CORBA.UtilClass=com.fujitsu.ObjectDirector.rmi.CORBA.UtilDelegateImpl

javax.rmi.CORBA.PortableRemoteObjectClass=

com.fujitsu.ObjectDirector.rmi.CORBA.PortableRemoteObjectDelegateImpl

7. 以下のコマンドを実行して、Interstage Application Serverで作動するCORBA servicesのためのサーバーホストを設定します。

odsethost -a -h MyServer -p 8002

注意

複数のサーバホストを本コマンドで登録する場合、Model APIは、 初に登録されているサーバに接続しようとします。もし、他の

サーバに接続する場合は -a または -dオプションでサーバホストを指定して、odsethostコマンドを実行してください。

8. 以下のコマンドを実行して、JMS connection factoryの定義を登録します。

jmsmkfact -t -i IflowClient TopicConnectionFactory

注意

jmsinfofactコマンドを実行すると、connection factory定義のリストを表示できます。

9. 以下のコマンドを実行して、JMS destinationsの定義を登録します。

jmsmkdst -t -g IflowECG2 -c IflowECNotify NotificationTopic

jmsmkdst -t -g IflowECG2 -c IflowSQNotify SQNotificationTopic

- 28 -

Page 38: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

注意

jmsinfofactコマンドを実行すると、JMS destination定義のリストを表示できます。

10. Interstage BPMのJMSインタフェースを使用する場合は、以下のコマンドを実行して、JMS destinationsの定義を登録します。

jmsmkdst -t -g IflowECG2 -c IflowECCommand CommandTopic

jmsmkdst -t -g IflowECG2 -c IflowECResponse ResponseTopic

JMSインタフェースの詳細は、「A.3 /client/samples/examples/bin」を参照してください。

4.1.3 WebSphere Application Server スタンドアロンアプリケーション配備(ローカル)の環境設定

必須条件:「4.1 システム環境」の説明に従い、システム環境を設定します。

WebSphere Application ServerのModel APIを使用してスタンドアロンアプリケーションを開発する場合、以下のJARファイルを

CLASSPATH環境変数に追加します。

注意

以下のJARファイルがある<WAS インストールディレクトリ>¥IBM¥WebSphere¥AppServerを<WAS AppServer ホームディレクトリ>と記述します。

・ <WAS AppServer ホームディレクトリ>¥plugins¥com.ibm.ws.runtime_6.1.0.jar

・ <WAS AppServer ホームディレクトリ>¥plugins¥com.ibm.ws.sib.server_2.0.0.jar

・ <WAS AppServer ホームディレクトリ>¥plugins¥com.ibm.ws.sib.utils_2.0.0.jar

・ <WAS AppServer ホームディレクトリ>¥runtimes¥com.ibm.ws.webservices.thinclient_6.1.0.jar

・ <WAS AppServer ホームディレクトリ>¥deploytool¥itp¥plugins¥com.ibm.websphere.v61_6.1.200¥ws_runtime.jar

・ オペレーションシステムにより:

- Windowsの場合

C:¥Fujitsu¥InterstageBPM¥server¥deployment¥InterstageBPMServerApplication.ear¥fujitsu-ibpm-engine-ejb.jar

- UNIXまたはLinuxの場合

/opt/FJSVibpm/server/deployment/InterstageBPMServerApplication.ear/fujitsu-ibpm-engine-ejb.jar

4.1.4 WebSphere Application Serverクライアント J2EE アプリケーション配備(ローカル)の環境設定

必須条件:マシンにシステム要件に記載されているバージョンのWebSphere Application Serverをインストールして、正しく動作するよう

設定します。

Interstage BPM Serverおよび、Interstage BPM Enterprise EditionのインストールでインストールしたWebSphere Application Serverと同一のマシンにユーザのアプリケーションを配備します。

WAS クライアント J2EEアプリケーションの配備:

1. ユーザのWebアプリケーションおよび、fujitsu-ibpm-engine-model-ejb.jarを含むJ2EEアプリケーション(EAR)を以下のように作成

します。

a. コンピュータに新しいフォルダ(例:My Application)を作成し、以下のファイルやフォルダをコピーします。

- ユーザのアプリケーションのWARファイル(例:myapp.war)

- IBPMサーバインストールディレクトリ(<IBPMServer_インストールディレクトリ>¥client¥lib¥)にあるfujitsu-ibpm-engine-model-ejb.jar

- 29 -

Page 39: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

- ユーザのJ2EEアプリケーションのデプロイメント・ディスクリプタが含まれるMETA-INFフォルダ

b. ユーザのJ2EEアプリケーションのデプロイメント・ディスクリプタ(application.xml)のモジュールにfujitsu-ibpm-engine-model-ejb.jarを記述します。

例:

<module id=" module id="EjbModule_1187608318108">

<ejb>fujitsu-ibpm-engine-model-ejb.jar</ejb>

</module>

注意

EjbModule_1187608318108をカスタマイズします。

サンプルのデプロイメント・ディスクリプタは、Interstage BPM CDイメージのconsole¥ibpmconsole-ear¥を参照してください。

c. My Applicationから以下のコマンドを実行します:

<java_home>¥jar.exe cvfm myapp.ear META-INF¥MANIFEST.MF .

2. 単一クラスローダーオプションにより、WebSphere Application Serverで前ステップで作成した、J2EEアプリケーション(EAR)を配

備します。

a. WASコンソールでアプリケーション>エンタープライズ・アプリケーションを選択します。

エンタープライズ・アプリケーションのリストが表示されます。

b. ユーザのアプリケーションのリンクをクリックします。

アプリケーションの設定ページが表示されます。

c. 「クラス・ロードおよび更新の検出」リンクを選択します。

クラス・ローダーの詳細画面が表示されます。

d. WAR クラス・ローダー・ポリシーセクションの「アプリケーションの単一クラス・ローダー」を選択します。

[適用]をクリックして変更を保存します。

3. fujitsu-ibpm-engine-ejb.jarを<IBPM_インストールディレクトリ> ¥server¥deployment¥InterstageBPMServerApplication.ear¥から

<J2EE_APP_HOME>¥WEB-INF¥libにコピーします。

4. iFlow.jarおよびjs.jarを<IBPM_インストールディレクトリ>¥client¥lib¥から<J2EE_APP_HOME>¥WEB-INF¥libにコピーします。

5. J2EEアプリケーションを起動します。

注意

<WAS_APPSERVER_HOME>¥profiles¥AppSrv01¥installedApps<cell Name>¥<application_ name>.ear¥<web_application_name>.war¥.を<J2EE_APP_HOME>と記述します。

4.1.5 WebSphere Application Server スタンドアロンアプリケーション配備(リモート)の環境設定

必須条件:「4.1 システム環境」の説明に従い、システム環境を設定します。

リモートコンピュータ(WebSphere Application Serverのホストコンピュータと異なるコンピュータ)でModel APIが使用できます。

1. リモートコンピュータにWebSphere Application Clientをインストールします。

a. インストール時のセットアップ・タイプは、「カスタム-J2EEおよびシン・クライアント」を選択してください。

b. Web サービス・シン・クライアントフィーチャーを選択してください。

2. iFlow.jarおよび、fujitsu-ibpm-engine-ejb.jarをリモートコンピュータにコピーして、CLASSPATH環境変数に追加します。

- 30 -

Page 40: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

3. 以下のWebSphere Application ClientのJARファイルをCLASSPATH環境変数に追加します。

注意

<WAS AppServer ホームディレクトリ> は、<WAS インストールディレクトリ>¥IBM¥WebSphere¥AppServerを表し、以下のJARファ

イルがあります。

<WAS AppClient ホームディレクトリ>¥plugins¥com.ibm.ws.runtime_6.1.0.jar

<WAS AppClient ホームディレクトリ>¥plugins¥com.ibm.ws.emf_2.1.0.jar

<WAS AppClient ホームディレクトリ>¥plugins¥com.ibm.ws.wccm_6.1.0.jar

<WAS AppClient ホームディレクトリ>¥plugins¥com.ibm.ws.sib.client_2.0.0.ja

<WAS AppClient ホームディレクトリ>¥plugins¥com.ibm.ws.sib.utils_2.0.0.jar

<WAS AppClient ホームディレクトリ>¥runtimes¥com.ibm.ws.webservices.thinclient_6.1.0.jar

4. WebSphere Application ClientのJDKを使い、クライアントプログラムを実行します。

マシンBのWebSphere 管理コンソールで、Webコンテナカスタムプロパティを設定します。

com.ibm.ws.webcontainer.invokeFiltersCompatibility

設定方法は、コンソール導入ガイド「必要なカスタムプロパティの追加」を参照してください。

4.1.6 WebSphere Application Serverクライアント J2EE アプリケーション配備(リモート)の環境設定

必須条件:例として、2台のマシン(マシンA、マシンB)があり、マシンAにInterstage BPMとWebSphere Deployment managerを、マシンBに

WebSphere Application Serverをインストールします。両方のマシンのWebSphere Application Serverがシステム要件に記載されている

バージョンでであることを確認します。

WAS クライアント J2EEアプリケーションの配備:

1. マシンBで、ユーザのWebアプリケーションおよび、fujitsu-ibpm-engine-model-ejb.jarを含むJ2EEアプリケーション(EAR)を以下

のように作成します。

a. コンピュータに新しいフォルダ(例:My Application)を作成し、以下のファイルやフォルダをコピーします。

- ユーザのアプリケーションのWARファイル(例:myapp.war)

- IBPMサーバインストールディレクトリ(<IBPMServer_インストールディレクトリ>¥client¥lib¥)にあるfujitsu-ibpm-engine-model-ejb.jar

- ユーザのJ2EEアプリケーションのデプロイメント・ディスクリプタが含まれるMETA-INFフォルダ

b. ユーザのJ2EEアプリケーションのデプロイメント・ディスクリプタ(application.xml)のモジュールにfujitsu-ibpm-engine-model-ejb.jarを記述します。

例:

<module id=" module id="EjbModule_1187608318108">

<ejb>fujitsu-ibpm-engine-model-ejb.jar</ejb>

</module>

注意

EjbModule_1187608318108をカスタマイズします。

サンプルのデプロイメント・ディスクリプタは、Interstage BPM CDイメージのconsole¥ibpmconsole-ear¥を参照してください。

c. My Applicationから以下のコマンドを実行します:

<java_home>¥jar.exe cvfm myapp.ear META-INF¥MANIFEST.MF .

- 31 -

Page 41: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

2. 単一クラスローダーオプションにより、マシンBのWebSphere Application Serverで前ステップで作成した、J2EEアプリケーション

(EAR)を配備します。

a. WASコンソールでアプリケーション>エンタープライズ・アプリケーションを選択します。

エンタープライズ・アプリケーションのリストが表示されます。

b. ユーザのアプリケーションのリンクをクリックします。

アプリケーションの設定ページが表示されます。

c. 「クラス・ロードおよび更新の検出」リンクを選択します。

クラス・ローダーの詳細画面が表示されます。

d. WAR クラス・ローダー・ポリシーセクションの「アプリケーションの単一クラス・ローダー」を選択します。

[適用]をクリックして変更を保存します。

3. マシンAのDeployment ManagerのJMS 関連の設定で以下のように設定します。

a. マシンAとマシンBの管理ノードをDeployment Managerに追加します。詳細はServer Installation Guide (WebSphereApplication Server)の「Adding Managed Nodes」を参照してください。

b. マシンAにIBPMをインストールすると、SIバスmachineANode01IBPMBussが作成されます。このSIバスのメンバーとして

サーバBを追加します。

注意

マシンAのSIバスにサーバAはすでに存在しています。

1. バスページでmachineANode01IBPMBussの名前をクリックします。

2. 構成タブの[バス・メンバー]をクリックします。

3. [追加]をクリックします。

4. ドロップダウンリストから、machineANode01:server1を選択して[次へ]をクリックします。

5. メッセージスト・アのタイプの選択でファイル・ストアがとして選択されているとをを確認して[次へ]をクリックします。

6. メッセージ・ストア項目をデフォルト値にして[次へ]をクリックします。

7. [終了]をクリックします。

8. ページの先頭に表示されるメッセージの[検討]をクリックします。ノードの同期を選択し、[保管]をクリックして設定を

保存します。

c. ユーザのJ2EEアプリケーション(EAR)のため、SQNotificationTopicおよび、NotificationTopicを以下のように追加します。

1. リソース>JMSタブに移動し、[トピック]を選択します。

2. 有効範囲に「ノード=machineBNode01,サーバ=server1」を選択します。

3. [新規作成]をクリックして、デフォルトが選択されているままで[OK]をクリックします。

4. SQNotificationTopicのフィールドの詳細を以下のように設定します。

名前を「iFLowSQNotificationTopic」にします。

JNDI 名を「iFlow/jms/sq/SQNotificationTopic」にします。

トピック名を「SQNotification_MDB_TOPIC」にします。

バス名に「machineANode01IBPMBuss」を選択します。

トピック・スペースに「SQNotification.Topic.Space」を選択します。

JMS デリバリー・モードに「非・パーシスタント」を選択します。

ほかの項目はそのままにします。

5. 「適用」を選択し、設定を確認、保管します。

- 32 -

Page 42: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

6. NotificationTopic の設定を行うため、1.から5.を繰り返します。フィールドの詳細を以下のように設定します。

名前を「iFLowNotificationTopic」にします。

JNDI 名を「iFlow/jms/NotificationTopic」にします。

トピック名を「JmsNotification_MDB_TOPIC」にします。

バス名に「machineANode01IBPMBuss」を選択します。

トピック・スペースに「JmsNotification.Topic.Spac」を選択します。

JMS デリバリー・モードに「非・パーシスタント」を選択します。

ほかの項目はそのままにします。

d. SQNotificationTopicおよび、NotificationTopicに以下のようにアクティベーション・スペック追加します。

1. リソース>JMSタブに移動し、[アクティベーション・スペック]を選択します。

2. 有効範囲に「ノード=machineBNode01,サーバ=server1」を選択します。

3. [新規作成]をクリックして、デフォルトが選択されているままで[OK]をクリックします。

4. SQNotificationTopicのフィールドの詳細を以下のように設定します。

名前を「SQNotificationTopic」にします。

JNDI 名を「eis/SQNotificationTopic」にします。

宛先タイプに「トピック」を選択します。

宛先 JNDI名を「iFlow/jms/sq/SQNotificationTopic」にします。

バス名に「machineANode01IBPMBuss」を選択します。

ほかの項目はそのままにします。

5. 「適用」を選択し、設定を確認、保管します。

6. NotificationTopic の設定を行うため、1.から5.を繰り返します。フィールドの詳細を以下のように設定します。

名前を「NotificationTopic」にします。

JNDI 名を「eis/NotificationTopic」にします。

宛先タイプに「トピック」を選択します。

宛先 JNDI名を「iFlow/jms/NotificationTopic」にします。

バス名に「machineANode01IBPMBuss」を選択します。

ほかの項目はそのままにします。

4. fujitsu-ibpm-engine-ejb.jarを<IBPM_インストールディレクトリ> ¥server¥deployment¥InterstageBPMServerApplication.ear¥から

<J2EE_APP_HOME>¥WEB-INF¥libにコピーします。

5. iFlow.jarおよび、js.jarを<IBPM_インストールディレクトリ>¥client¥lib¥から<J2EE_APP_HOME>¥WEB-INF¥libにコピーします。

6. サーバA、サーバBそれぞれ再起動します。

注意

<WAS_APPSERVER_HOME>¥profiles¥AppSrv01¥installedApps<cell Name>¥<application_ name>.ear¥<web_application_name>.war¥.を<J2EE_APP_HOME>と記述します。

4.1.7 WebLogicの環境設定

必須条件:「4.1 システム環境」の説明に従い、システム環境を設定します。

- 33 -

Page 43: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

1. WebLogic Application ServerのModel APIを使用してアプリケーションを開発する場合、以下のJARファイルをCLASSPATH環

境変数に追加します。

<BEA WebLogicのインストールディレクトリ>/weblogic92/server/lib/wlclient.jar

<BEA WebLogicのインストールディレクトリ>/weblogic92/server/lib/wljmsclient.jar

4.1.8 JBossの環境設定

必須条件:「4.1 システム環境」の説明に従い、システム環境を設定します。

1. JBoss Application ServerのModel APIを使用してアプリケーションを開発する場合、必要なJARファイルを含む以下のディレクトリを

CLASSPATH環境変数に追加します。

<JBossのインストールディレクトリ>/client

/opt/jboss-4.0.5.GA/client/jbossall-client.jar

4.2 Model APIアプリケーションの実行

前提条件:

・ Interstage BPMがインストールされたサーバへのRMIアクセスが可能であること。

・ Interstage BPMサーバが起動していること。

以下で、Interstage BPM Flowが提供するサンプルのModel APIアプリケーションを実行する方法について説明します。

・ Interstage BPMサーバのインストールディレクトリにある、サンプルプログラム開始用のスクリプトを実行します。標準のインストール

では、次の場所にファイルがインストールされます。

Windowsの場合:C:¥Fujitsu¥InterstageBPM¥client¥samples¥examples¥bin¥StartSamples.bat

SolarisまたはLinuxの場合: /opt/FJSVibpm/client/samples/examples/bin/StartSamples.sh

・ クライアントアプリケーションを実行する前に、毎回必ずこのスクリプトの"Start the Sample"で指定されたコマンドを実行しなければ

なりません。このスクリプトはアプリケーションのJaveクラス名の入力を必要とします。サンプルの使用手順については▽付録 A Usingthe Interstage Business Process Manager Samples△を参照してください。

4.3 プロパティファイルの格納

Model APIアプリケーション内からプロパティファイルにアクセスできます。次の部分的なコードは、iFlowClientの読込み方法の例で

す。

Properties iflowProps = new Properties();

try {

FileInputStream fin = new FileInputStream("iFlowClient. properties");

iflowProps. load(fin);

}

finally {

fin. close();

}

デフォルトでは、プロパティファイルは実行時のカレントディレクトリから読み込まれます。プロパティファイルがディレクトリに格納されて

いることを確認してください。サンプルのiFlowClient.propertiesファイルは以下のディレクトリに位置しています。

<Interstage BPM Server Installation Directory>/client

プロパティファイルを異なるディレクトリに格納したい場合、そのファイルの絶対パスまたは実行時のカレントディレクトリからの相対パス

で指定する必要があります。以下に例を示します。

Properties iflowProps = new Properties();

try {

FileInputStream fin = new

- 34 -

Page 44: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

FileInputStream("C:¥¥Fujitsu¥¥InterstageBPM¥¥iFlowClient.properties");

iflowProps.load(fin);

}

finally {

fin.close();

}

注意

Interstage Application Serverでは、iflow. propertiesに記載されている以下のプロパティは利用できません。

・ NamingProviderURL

・ JMSNamingProviderURL

4.4 Model APIアーキテクチャー

Model APIを使用すると、Interstage BPM Flowとその管理機能にアクセスし、操作することができます。さらに、独自のアプリケーション

を作成して、独自のグラフィカルユーザインタフェースに組み込むことができます。

Model APIには、以下のパッケージが含まれます。詳細については、『API Javadocマニュアル』を参照してください。

・ com.fujitsu.iflow.model.event:プロセス定義やプロセスインスタンスの変更が通知されるEventを受け取るためのインスタンスとクラ

スが含まれています。

・ com.fujitsu.iflow.model.util: 他のクラスやインタ-フェースで一般的に使用される、低レベルのユーティリティクラスが含まれていま

す。ModelクラスによるExceptionsも含まれています。

・ com.fujitsu.iflow.model.wfadapter: 文書管理システム(DMS)を管理するインタフェースが含まれています。DMS内のフォルダや添

付文書に関する情報の取得および更新、DMSに対するオブジェクトのチェックイン/チェックアウトを行うクラスが含まれます。

・ com.fujitsu.iflow.model.workflow: プロセス定義やプロセスインスタンスで必要な情報を管理するインタフェースが含まれていま

す。また、ノード、矢印、添付文書、ワークアイテム、および許可レベルを表すオブジェクトも含みます。このマニュアルで説明する

プログラミングの例は、以下のインタフェースが使用されます。

- Arrowインタフェース: 矢印を作成し、操作するために使用されます。

- ArrowInstanceインタフェース: プロセスインスタンス内で矢印の属性にアクセスするために使用されます。

- AttachmentRefインタフェース: DMS内のプロセスインスタンスの添付文書にアクセスするために使用されます。プロセスインス

タンスに関連付ける添付文書の数に制限はありません。また、追加できる添付文書のタイプにも制限はありません。

- DataItemRefインタフェース: プロセス定義で定義されるUDAの名前、タイプ、および初期値を格納するために使用されます。

- JavaActionSetインタフェース: プロセス定義内でJava Actionを使用するためのメソッドを提供します。

- Nodeインタフェース: プロセス定義に含まれるノードに関する情報を取得するために使用されます。

- Planインタフェース: プロセス定義を作成し、操作するために使用されます。

- ProcessInstanceインタフェース: プロセスインスタンスを作成し、開始するためのオペレーションを提供します。

- WFAdminSessionインタフェース: 管理者が使用するメソッドを提供します。 WFSessionインタフェースを拡張します。

- WFDetailsListインタフェース:一度に複数のオブジェクトの情報を回収できます。

- WFObjectListインタフェース:プロセス定義、プロセスインスタンス、またはワークアイテムを詳細ソートおよびフィルターできま

す。

- WFSessionインタフェース: Interstage BPM Flowサーバにユーザがログインしている間、このサーバへのアクセスを確立し、維

持するためのメソッドを提供します。

- WorkItemインタフェース: ワークアイテム、つまり特定のユーザに割当てられたアクティビティのあらゆる状態へのアクセスを提

供します。

- 35 -

Page 45: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ com.fujitsu.iflow.server.intf: ワークフローデータへのアクセスを提供するインタフェースが含まれています。このインタフェースを

ServerEnactmentContextと呼びます。このインタフェースには、アクションエージェントを実装するクラスが含まれています。

4.5 例外処理

Model APIが返す例外は、スーパークラスであるModelExceptionクラスとそのサブクラス群があります。いくつかのサブクラスがあります

が、将来互換性の問題が発生する可能性があるため、ModelExceptionを使用してください。

- 36 -

Page 46: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

第5章 プロセス定義のデザイン

ここでは、プロセス定義のデザインおよびプロセスインスタンスを開始するための、Model APIを使用したプログラミングの例を示しま

す。

プログラミングの例には以下のものがあります。

・ 一般ユーザのログインとログアウト

・ Startノード、Activityノード、およびExitノードのあるプロセス定義を作成する

・ プロセスインスタンスを開始する

・ ワークアイテムを実行する

プロセス定義が作成済みの場合、「5.1.1 一般ユーザのログインとログアウト」、「5.3 プロセスインスタンス」をお読みください。

5.1 基本的なプロセス定義のデザイン

はじめに、Model APIを使用して、Startノード、Activityノード、およびExitノードがある基本的なプロセス定義を構築します。

この節で紹介するプログラミング例のすべてのコードは、SimplePlan.javaサンプルファイル内にあります。

プロセス定義を作成する前に、ユーザはログインする必要があります。その後、Startノードが1つだけあり、Activityノードおよび少なくとも

1つのExitノードがある、基本的なプロセス定義を作成します。ユーザがログインするには、セッション、つまりWFSessionオブジェクトを

作成する必要があります。このセッションは、ユーザがログアウトすると終了します。

以下の図は、Model APIを使用してプロセス定義をデザインするために必要な手順を示しています。

- 37 -

Page 47: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

図5.1 Model APIを使用したプロセス定義のデザイン

5.1.1 一般ユーザのログインとログアウト

プロセス定義を作成する前に、ユーザはInterstage BPMサーバにログインする必要があります。また、プロセス定義での作業が終了し

たら、再びログアウトする必要があります。

ユーザのログイン/ログアウトする方法について説明します。

- 38 -

Page 48: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

1. WFSessionオブジェクトのlogIn()を使用して、サーバにログインします。

WFSession session;

session = WFObjectFactory.getWFSession();

ワークフローオブジェクトを割り当てるには、WFObjectFactoryクラスを使用します。次に、getWFSession()でWFSessionオブジェ

クトを作成します。

2. 適切な環境設定ファイルを使用して、セッションを初期化します。

<Interstage BPMサーバインストールディレクトリ>/clientにあるデフォルトのiFlowClient.propertiesファイルを使用することができま

す。このファイルを使用するか、もしくは、カレントディレクトリに位置する必要のある新しいファイルに、設定パラメータを設定しま

す。

iFlowClient.properties ファイルの中でバックスラッシュ"¥"またはコロン":"を使用する場合は、バックスラッシュでエスケープする

必要があります。たとえば、サーバのアドレスは以下のように指定します。

ibpmhost¥:49950

java.util.Propertiesを使い、iFlowClient.propertiesファイルをロードするとき、load() メソッドは、エスケープ文字を自動的に考慮さ

れます。他の方法でプロパティをロードする場合は、エスケープ文字を正しく扱うようにしてください。iFlowClient.propertiesファイ

ルで使用するのエスケープシーケンスの詳細については、java.util.Properties.store()メソッドのJAVAドキュメントを参照してくださ

い。

カレントディレクトリの位置については、「4.3 プロパティファイルの格納」を参照してください。

そのセッションの設定ファイルiFlowClient.propertiesを読み込みます。

Properties sessionProps = new Properties();

sessionProps.load(new

FileInputStream("./classes/iFlowClient.properties"));

以下のとおり、セッションを初期化します。

session.initForApplication(null, sessionProps);

3. WFSessionオブジェクトのlogIn()を使用して、サーバにログインします。

String server = sessionProps.getProperty("HostName") + "Flow";

session.logIn(server, userName, password);

接続サーバ名には、"Flow"という文字列を追加してください。

4. すべての作業が終了したら、ユーザはWFSessionのlogOutを使用して、サーバからログアウトします。

if (session != null ) {

session.logOut();

}

5.1.2 プロセス定義の新規デザイン

ユーザはログイン後に新しいプロセス定義をデザインすることができます。基本的なプロセス定義は、1つのStartノード、1つ以上のActivityノード、および1つ以上のExitノードで構成されます。

Startノードは、プロセスの開始を示すノードです。1つのプロセス定義はStartノードを1つしか持つことができません。Activityノードは、

ユーザによるアクションや意志決定のタスクを表しています。プロセス定義には、任意の数のActivityノードを指定できます。Exitノード

は、プロセスの終了を示すノードです。1つのプロセス定義には1つ以上のExitノードが必要です。

各ノードは矢印で連結することができます。矢印の基本的な目的は、プロセス内のフローを制御することです。ノードが完了すると、プ

ロセスインスタンスは矢印の起点から終点に向かって移動します。ノードが出入りする矢印の数には制限がありません(ただし、Startノードは出力矢印、Exitノードは入力矢印のみ設定可能です)。

プロセス定義をデザインする方法について説明します。

- 39 -

Page 49: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

1. WFObjectFactory.getPlan()を使用して、空のプロセス定義オブジェクトを作成します。

Plan plan = null;

plan = WFObjectFactory.getPlan();

plan.setWFSession(session);

2. ノードや矢印をプロセス定義に追加する前に、PlanインタフェースのstartEdit()を使用して、プロセス定義のモードを編集モード

に変更します。

plan.startEdit();

3. PlanインタフェースのsetName()、setTitle()、およびsetDesc()を使用して、いくつかの一般的な情報をプロセス定義に追加するこ

とができます。

plan.setName("プラン");

plan.setTitle("プラン1");

plan.setDesc("サンプルのプロセス定義の作成");

4. Startノード、Activityノード、およびExitノードをプロセス定義オブジェクトに追加します。

ノードを追加するには、PlanインタフェースのaddNode(name, nodeType)を使用します。定数nodeTypeは、追加するノードタイプ

を定義します。この定数に使用可能な値は、Nodeインタフェースで定義されています。

NodeインタフェースのsetPosition()は、ノードの位置を定義します。各ノードには、グラフィカル表示するために、キャンバス上の

位置を示すX座標とY座標の情報があります。位置情報は、各ノードの位置により異なります。ノードの正しい位置を確認のうえ、

パラメータを設定してください。

a. Startノードを追加します。

Node startNode = plan.addNode("Start", Node.TYPE_START);

startNode.setPosition(new Point(100, 150));

b. Activityノードには、NodeインタフェースのsetRole()を使用してロールを割り当てることができます。さらに、Activityノードが

活性化された際にグループワークアイテムを生成するか、または、Activityノードに割り当てられたロールのメンバーごとに

個別ワークアイテムを生成するかを定義できます。この設定は、SupportGroupWorkItem パラメータの値にも依存します。

デフォルトでは、このInterstage BPMサーバのパラメータはfalseに設定されています。デフォルトで、このパラメタはfalseに設定されています。SupportGroupWorkItemの詳細については、『Interstage BPMサーバ 管理者ガイド』を参照してくださ

い。Activityノードを追加する手順は以下のとおりです。

Node activityNode = plan.addNode("Activity",

Node.TYPE_ACTIVITY);

activityNode.setPosition(new Point(200, 250));

activityNode.setRole("Role");

activityNode.markForExpandGroups(false);

ロールをサポートしているのは、ActivityノードとVoting Activityノードだけです。

c. Exitノードを追加します。

Node exitNode = plan.addNode("Exit", Node.TYPE_EXIT);

exitNode.setPosition(new Point(300, 350));

5. NodeインタフェースのaddArrow()を使用して、ノードを矢印で連結します。矢印を追加する場合は、その矢印の名前、始点、お

よび終点を指定します。

Arrow goArrow = plan.addArrow("go", startNode, activityNode);

Arrow stopArrow = plan.addArrow("stop", activityNode, exitNode);

6. ノードと矢印をプロセス定義オブジェクトに追加したら、PlanインタフェースのvalidateProcessDef()を使用して検証する必要があり

ます。

plan.validateProcessDef();

- 40 -

Page 50: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

7. PlanインタフェースのcreateProcessDef()を使用して、プロセス定義を作成します。

plan = plan.createProcessDef();

注意

プロセス定義は、createProcessDef()を使用するまで、Interstage BPMサーバには作成されません。プロセス定義オブジェクトがInterstageBPMサーバに登録されると、Interstage BPMサーバはプロセス定義IDをそのオブジェクトに割り当てます。

下の図は、作成されるプロセス定義を示しています。

図5.2 Startノード、Activityノード、およびExitノードのある基本的なプロセス定義

5.2 応用的なプロセス定義のデザイン

ここでは、ほぼすべてのコンポーネントを含んだ応用的なプロセス定義を作成するための、プログラミングの手順を説明します。この節

で紹介しているプログラミング例のすべてのコードは、ComplexPlan.javaサンプルファイル内にあります。 以下の図は、サンプルファイ

ルで定義しているワークフローエレメントがどのように作用しあうかを示しています。

- 41 -

Page 51: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

図5.3 様々なノードタイプのある応用的なプロセス定義

前の節で、Startノード、Exitノード、Activityノードなどの基本的なワークフローエレメントを追加する方法を説明しました。以降の各節で

は、UDAを追加する方法や、Voting Activityノード、ANDノード、ORノードなど、そのほかのノードの追加方法を説明します。

応用的なプロセス定義をデザインする方法について説明します。

1. サーバにログインします。

ユーザのログインおよびログアウトする方法については、「5.1.1 一般ユーザのログインとログアウト」を参照してください。

2. PlanインタフェースのstartEdit()を使用して、プロセス定義を編集モードに設定します。

編集モードになると、Interstage BPMサーバはそのプロセス定義をロックするので、編集中は、ほかのユーザがそのプロセス定義

を変更することはできません。編集できるのは、ドラフト状態またはプライベートのプロセス定義だけです。ドラフト状態のプロセス

定義は、それに属するプロセスインスタンスがすでに完了している場合だけ編集可能です。

3. Startノード、1つ以上のExitノード、および必要なActivityノードを追加します。

これらのノードの追加方法については、「5.1.2 プロセス定義の新規デザイン」を参照してください。

4. UDAをプロセス定義に追加します。Voting Activityノード、ANDノードなど、ほかのノードタイプを追加します。

詳細については、以下の節を参照してください。

5. ノードに矢印を接続します。

詳細については、「5.1.2 プロセス定義の新規デザイン」を参照してください。

- 42 -

Page 52: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

6. プロセス定義を検証して、作成します。

詳細については、「5.1.2 プロセス定義の新規デザイン」を参照してください。

7. ビジネスプロセスをエンハンスするため、Java Action、Extended attribute、エージェント、タイマー、エラー処理とった拡張を使用

するかどうか、確認してください。

詳細については、「第6章 Interstage BPMの強化」を参照してください。

5.2.1 ユーザ定義属性の追加

DataItemRefインタフェースは、プロセス定義で定義されたUDAの識別子、名前、タイプ、および初期値を保持します。

UDAはプロセスインスタンスに対してグローバルな変数なので、プロセスインスタンス内のすべてのノードは、すべてのUDAにアクセス

することができます。UDAは、ノードの動作や、プロセス実行用のデータを保存します。

UDAは以下のデータタイプ、BIGDECIMAL、BOOLEAN、DATE、FLOAT、INTEGER、LONG、STRING、XMLのうち、1つを保有し

ています。

注意

UDAには、名前と識別子がついています。

UDAの名前

・ UDAの名前は、ユーザ定義です。

・ UDAの名前は、 高64文字の文字列を含む場合があります。

・ UDAの名前は、システムにより作成、維持されるUDAのプレフィックスとして使用されるため、2つのアンダースコア(__)から始める

ことはできません。

・ UDAの識別子

・ UDAの識別子は、ユーザ定義、もしくは、システムにより作成されます。UDAの作成時に識別子を指定しなかった場合には、識別

子は自動的に以下のように生成されます。入力として名前が作成されます。特殊文字はすべて排除されます。その「サニタイズさ

れた名前」(識別子)が32文字を超える場合、空の場合、もしくは、固有のものでない場合には、識別子は、プレフィックス'uda<数字

>'として構成され、、たとえば、'uda1'のようになります。

・ 高32文字の文字列から構成される場合があります。

・ プロセス定義全体で、固有のものでなければなりません。

・ 各ユーザの相互作用で、UDAの名前は使用されます。必要時には、UDAの名前は、その識別子にマッピングされます。一旦、作

成されると、UDAの識別子は、変更することはできませんが、UDAの名前は、いつでも変更することができます。

プロセス定義にUDAを追加する方法について説明します。

1. プロセス定義の現在のモードが編集モードであることを確認してください。プロセス定義のモードを変更するには、Planインタ

フェースのstartEdit()を使用します。

2. UDAを追加するには、PlanインタフェースのaddDataItemRef()、もしくは、addDataItemRefWithId()を使用します。1つ目のメソッ

ドを使用するとUDAの識別子は生成されます。2つ目のメソッドを使用すると、独自の識別子を定義することができます。

protected final static String WLUDA_PRICE = "Price";

protected final static String WLUDA_QTY = "Qty";

protected final static String WLUDA_TOTAL = "Total";

DataItemRef udaPrice = plan.addDataItemRef(WLUDA_PRICE,

DataItemRef.TYPE_FLOAT, "0.0");

DataItemRef udaQty = plan.addDataItemRef(WLUDA_QTY,

DataItemRef.TYPE_INTEGER, "0");

DataItemRef udaTotal = plan.addDataItemRef(WLUDA_TOTAL,

DataItemRef.TYPE_FLOAT, "0.0");

- 43 -

Page 53: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

DataItemRef udaJavaActionTest = plan.addDataItemRefWithId(

"JavaActionTest", "My JA Test", DataItemRef.TYPE_STRING, "0");

DataItemRef udaMapping = plan.addDataItemRefWithId(

("MapUDAParent", "Mapping UDA Parent",

DataItemRef.TYPE_STRING,

"This value is from parent process");

DataItemRef udaCondition = plan.addDataItemRef("Condition",

DataItemRef.TYPE_STRING, "");

DataItemRef udaSec = plan.addDataItemRef("SEC",

DataItemRef.TYPE_STRING, "sec");

注意

ユーザ定義された識別子が、プロセス定義全体で、固有のものであるかを確認する場合は、PlanインタフェースのisIdentifierUnique(StringID)メソッドを使用してください。

5.2.2 Voting Activityノード

Voting Activityノードは、投票ルールを使用して、投票の結果勝ちとなった矢印(アクティビティの外向き矢印)を選択します。すべての

Voting Activityノードについて、投票のルールを設定します。

Voting Activityノードを追加する方法について説明します。

1. addNode()を使用してノードを作成します。定数nodeTypeにTYPE_VOTING_ACTIVITYを設定します。

Node directorApproveNode = plan.addNode("Approve", Node.TYPE_VOTING_ACTIVITY);

directorApproveNode.setRole(activityRole); directorApproveNode.setPosition(new Point(290, 350));

2. NodeインタフェースのsetVotingRule()を使用して、Voting Activityノードのルールおよび閾値を定義します。投票ルールの詳細

については、『API Javadocマニュアル』を参照してください。

ルールのタイプを以下の中から選択します。

- NUMBER

- PERCENTAGE

- MAJORITY

閾値は、投票が成立する値を定義します。

directorApproveNode.setVotingRule("Reject", VotingRule.TYPE_NUMBER, 1);

directorApproveNode.setVotingRule("Approve", VotingRule.TYPE_NUMBER, 1);

サンプルコードでは、NUMBERタイプの投票ルールで、両方の外向き矢印の閾値に1を指定しています。つまり、1人のユーザ

が矢印の選択を行うと、その矢印に関連付けられているアクションが実行されます。

3. setEvaluateRulesMode()を使用して、投票をチェックする時期を指定します。以下のいずれかを選択できます。

- Node.ON_EVERY_VOTE: 状況は、投票されるごとにチェックされます。

- Node.WHEN_ALL_VOTES_ARE_CAST: 状況は、割り当てられたロールのすべてのユーザが投票した後にチェックされま

す。

directorApproveNode.setEvaluateRulesMode(Node.ON_EVERY_VOTE);

4. setDefaultChoice()を使用して、 投票ルールのデフォルトの選択を定義します。

directorApproveNode.setDefaultChoice("Reject");

- 44 -

Page 54: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

5.2.3 ANDノードとORノードの追加

ANDノードは、複数のアクティビティに分岐しているプロセスを、同期するためのステップを表しています。プロセス定義は、任意の数の

ANDノードを指定できます。

ORノードは、プロセス内で複数のアクティビティに分岐するステップを表しています。プロセス定義は、任意の数のORノードを指定で

きます。

・ ANDノードを追加する方法について説明します。

addNode()を使用して、定数nodeTypeをTYPE_ANDに設定します。

Node andNode = plan.addNode("And Node", Node.TYPE_AND); andNode.setPosition(new Point(440, 460));

・ ORノードを追加する方法について説明します。

addNode()を使用して、定数nodeTypeをTYPE_ORに設定します。

Node orNode = plan.addNode("Or Node", Node.TYPE_OR); orNode.setPosition(new Point(430, 230));

5.2.4 Conditionalノード

Conditionalノードは開始アクションを使用するActivityノードです。Conditionalノードをプロセス定義に追加した後、まず開始アクション

を定義し、次にそのノードの分岐条件を定義します。

Conditionalノードを追加する方法について説明します。

1. addNode()を使用して、定数nodeTypeをTYPE_CONDITIONに設定します。

Node CondNode = plan.addNode("Conditional Node",

Node.TYPE_CONDITION);

CondNode.setPosition(new Point(430, 140));

2. 開始アクションを定義します。詳細については、「第6章 Interstage BPMの強化」を参照してください。

3. NodeインタフェースのgetConditionSpec()、およびsetCondBranchSpecInfo()を使用して、Conditionalノードの分岐条件を定義し

ます。

以下の例では、Conditionalノードの外向き矢印に3つの分岐条件を定義しています。UDA Totalの値は、与えられた予算の上限を示

しています。

・ PRの変更(Modify PR): Total <= 0.0 (規定値)

・ 上司の承認が必要( Manager Approval Required): Total > 0.0かつTotal < 1000.0

・ 複数の承認が必要( Multiple Approvals Required): Total > 1000.0

UDA Totalは2つの分岐条件を含みますが、分岐毎に1つの分岐条件しか定義できないので、UDA Totalを使用してどの分岐を使用

するかを決定することはできません。そこで、UDA Conditionの値を追加します。UDA Totalの値に依存して、UDA Conditionに3つの

固有の値のうち、1つが設定されます。これらの値は、どの矢印を使用するかを制御するために必要となります。Conditionalノードは、

SampleJavaActionsという名前のサンプルで示すように、現在の値であるUDA TotalとUDA Conditionの比較のような条件判定ロジック

を提供しています。

判定ロジックの内容は以下のとおりです。

if (Total <= 0.0) {

Condition = Modify PR;

} else if (Total > 0.0 && Total <= 1000.0) {

Condition = "Manager Approval Required";

} else if (Total > 1000.0) {

Condition = "Multiple Approvals Required";

} else {

Condition = "Modify PR";

- 45 -

Page 55: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

Conditionalノード用に定義されたNodeインタフェースのgetConditionSpec()は、このUDAを使用して、選択する矢印の情報を取得しま

す。ConditionSpecインタフェースのsetCondBranchSpecInfo()を使用して、新しい分岐をConditionSpecオブジェクトに追加することがで

きます。

ConditionSpec conditionSpec = condNode.getConditionSpec();

conditionSpec.setConditionAttribute("Condition");

conditionSpec.setCondBranchSpecInfo("Modify PR",

BranchSpec.EQUAL_OP, "Modify PR", true );

conditionSpec.setCondBranchSpecInfo("Multiple Approvals Required",

BranchSpec.EQUAL_OP,

"Multiple Approvals Required", false );

conditionSpec.setCondBranchSpecInfo("Manager Approval Required",

BranchSpec.EQUAL_OP, "Manager Approval Required", false );

condNode.setConditionSpec(conditionSpec);

setConditionSpec(conditionSpec)について、説明します。

Interstage BPM Model APIは、XML要素の値setConditionAttribute(String udaName, String xPath)にアクセスするためのメソッドです。

また、getConditionAttributeXPath()メソッドを呼出して、xPathの値を検索します。

詳細については、『API Javadocマニュアル』を参照してください。

5.2.5 Subprocessノード

Subprocessノードは、ほかのプロセス定義を呼出してタスクを完了し、その結果が返ってくるのを待ち合わせるノードです。このノードは

様々な目的に使用されますが、特に、既存のプロセス定義を新しいプロセス定義内で再利用するために使用されます。

Subprocessノードは、デザイン済みのプロセス定義の持つ、ノード、矢印、その他すべての情報にアクセスして、そのプロセス定義全体

を表すことができます。Subprocessノードは、既存のプロセス定義をその名前で呼び出すことができます。

ComplexPlan.javaサンプルファイル内では、Subprocessノードがプロセス定義をCxPD_Approvalという名前で呼び出す方法を示してい

ます。以下の図は、このプロセス定義を示しています。

- 46 -

Page 56: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

図5.4 Subprocessノードから呼び出された様々なノードタイプのあるプロセス定義

Subprocessノードを使用する方法について説明します。

1. Subprocessノードをプロセス定義に追加します。そのためには、addNode()を使用して、定数nodeTypeをTYPE_SUB_PROCESSに設定します。

Node subProcessNode = plan.addNode("Multiple Approvals",

Node.TYPE_SUB_PROCESS);

subProcessNode.setPosition( new Point(406, 237));

2. Subprocessノードが呼び出されたときに、生成されるプロセスインスタンスが使用する既存のプロセス定義の名前を指定します。

そのためには、NodeインタフェースのsetSubPlanName()を使用します。

subProcessNode.setSubPlanName(subPlan.getName());

このプロセス定義の 新バージョンから、新しいプロセスインスタンスが自動的に生成されます。

- 47 -

Page 57: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

3. addDataMappingElement()を使用して、親プロセス定義のUDAと、サブプロセス定義のUDAの間での情報をマッピングします。

DataItemMappingElementは、「入力データマッピングエレメント」と呼ばれ、サブプロセス定義のUDAにマッピングされる親プロ

セス定義のUDAを含みます。

subProcessNode.addDataMappingElement("MappingUDAParent",

"MappingUDAChild", DataItemMappingElement.INOUT);

注意

再帰的なサブプロセスがあるプロセス定義をデザインする場合は、注意が必要です。関連するプロセス定義をすべてチェックし、無限

ループが起きないことを確認してください。

5.2.6 Delayノード

Delayノードは、一定の時間、プロセスの実行を停止することができるステップを表しています。

Delayノードを使用する方法について説明します。

1. Delayノードをプロセス定義に追加します。そのためには、addNode()を使用して、定数nodeTypeをTYPE_DELAYに設定します。

Node delayNode = plan.addNode("Delay Node", Node.TYPE_DELAY);

delayNode.setPosition(new Point(434, 500));

2. Delayノードにタイマーを追加して、プロセスの実行をどのくらい一時停止するかを指定します。

この例については、「6.12.1 タイマーの定義」を参照してください。

5.2.7 Chained-Processノード

Chained-Processノードは、親プロセスインスタンスから独立した新しいプロセスインスタンスの呼び出しを表します。このノードでは、独

立したプロセスインスタンスを親プロセスインスタンスの一部として実行します。Chained-Processノードは、既存のプロセス定義をその名

前でだけ呼び出すことができます。

ComplexPlan.javaサンプルファイル内では、Chained-Processノードがプロセス定義をCxPD_Sendという名前で呼び出す方法を示して

います。以下の図は、このプロセス定義を示しています。

図5.5 Chained-Processノードから呼び出されたプロセス定義

Chained-Processノードを使用する方法について説明します。

- 48 -

Page 58: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

1. Chained-Process ノードをプロセス定義に追加します。そのためには、 addNode() を使用して、定数 nodeType をTYPE_CHAINED_PROCESSに設定します。

Node chainedProcessNode = plan.addNode("Send Purchase Order", Node.TYPE_CHAINED_PROCESS);

chainedProcessNode.setPosition( new Point(212, 391));

2. Chained-Processノードが呼び出されたときに、生成されるプロセスインスタンスが使用する既存のプロセス定義の名前を指定し

ます。そのためには、NodeインタフェースのsetChainedPlanName()を使用します。

chainedProcessNode.setChainedPlanName(chainedPlan.getName());

このプロセス定義の 新バージョンから、新しいプロセスインスタンスが自動的に生成されます。

3. addDataMappingElement()を使用して、親プロセス定義のUDAと、チェインプロセス定義のUDAの間での情報のフローをマッピ

ングします。

DataItemMappingElementは、「入力データマッピングエレメント」と呼ばれ、チェインプロセス定義のUDAにマッピングされる親プ

ロセス定義のUDAを含みます。

chainedProcessNode.addDataMappingElement("MappingUDAParent",

"MappingUDAChild", DataItemMappingElement.INOUT);

5.3 プロセスインスタンス

ここでは、プロセス定義を取得し、そのプロセス定義からプロセスインスタンスを開始する手順について説明します。さらに、プロセスイ

ンスタンス内で生成されるワークアイテムの実行についても解説しています。これらの節で紹介しているプログラミング例のすべての

コードは、ProcessExecution.javaサンプルファイル内にあります。

プロセスインスタンスやワークアイテム上で何か作業をする前に、ユーザはログインする必要があります。ユーザのログインおよびログ

アウトの方法に関する情報は、「5.1.1 一般ユーザのログインとログアウト」を参照してください。

以下の図は、プロセスインスタンスを操作する場合に必要な手順を示しています。

- 49 -

Page 59: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

図5.6 Model APIを使用したプロセスインスタンスの操作

5.3.1 プロセス定義の最新バージョンの取得

プロセス定義の 新バージョンを取得する方法について説明します。

1. Interstage BPMサーバで使用可能なすべてのプロセス定義のリストを表示します。そのためには、com.fujitsu.iflow.model.workflowパッケージのWFObjectListインタフェースを使用して、Interstage BPMサーバから既存のWFObjectsオブジェクトのリストを取得し

ます。

WFObjectFactoryクラスは、ワークフローオブジェクトへの定型的なアクセス手段を提供します。

Plan plan = null;

WFObjectList wfObjectList =

WFObjectFactory.getWFObjectList(session);

Object[] planList = null;

- 50 -

Page 60: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

2. プロセス定義を、プロセス定義の名前でフィルタリングします。そのためには、WFObjectsListインタフェースのaddFilter()を使用

して、取得するプロセス定義リストのフィルタ条件を追加します。

wfObjectList.addFilter(WFObjectList.LISTFIELD_PLAN_NAME,

WFObjectList.SQLOP_EQUALTO, "¥'" + planName + "¥'");

注意

プロセス定義の名前は、生成されるデータベースクエリにそのまま含まれるので、二重引用符(") で囲みます。

3. プロセス定義を、目的の条件でソートします。addSortOrder()を使用して、取得するプロセス定義のリストにフィールドベースのソー

ト順を追加します。

wfObjectList.addSortOrder(WFObjectList.LISTFIELD_PLAN_ID,

WFObjectList.SORTORDER_DESCENDING);

wfObjectList.openBatchedList(Filter.AllPlans);

planList = wfObjectList.getNextBatch(1);

サンプルコードでは、プロセス定義をIDでソートしています。 openBatchedList()は、Interstage BPMサーバから取得したフィルタ

条件に一致するプロセス定義のリストを返します。 ここでは 新バージョンのプロセス定義だけを検索しているので、getNextBatch(1)は、 初のエントリだけ取得します。

4. 新バージョンのプロセス定義を使用します。

if (planList != null && planList.length > 0) { plan = (Plan) planList[0]; } return plan;

返却されたリストで 初のエントリが、検索したプロセス定義の 新バージョンです。

5.3.2 プロセスインスタンスの作成と開始

プロセス定義を取得した後、その定義からプロセスインスタンスを作成し、開始することができます。

新しいプロセスインスタンスを作成して開始する方法について説明します。

1. PlanインタフェースのcreateProcessInstance()を使用して、プロセスインスタンスを作成します。

processInst = WFObjectFactory.createProcessInstance(plan.getId(),session);

createProcessInstance()は、プロセス定義の構造と属性を実行中のプロセスインスタンスにコピーすることで、新しいプロセスイン

スタンスを作成します。

プロセス定義が新しいプロセスインスタンスにコピーされると、プロセス定義のコンポーネントも新しいプロセスインスタンスのコン

ポーネントとしてコピーされます。たとえば、プロセス定義のStartNodeオブジェクトは、新しいプロセスインスタンスのStartNodeInstanceオブジェクトにコピーされます。

2. startEdit()を使用してプロセスインスタンスを編集モードに設定すると、プロセスインスタンスのパラメータを編集することができま

す。

3. 編集が終了したら、commitEdit()を使用して、編集モードを終了します。

編集モードを終了しない場合、プロセスインスタンスは以降の操作からロックされます。

4. プロセスインスタンスを開始します。

processInst.start();

5.3.3 ワークアイテムリストの作成

ワークアイテムリストを作成するには、com.fujitsu.iflow.model.workflowパッケージのWFObjectsListインタフェースを使用します。この

インタフェースは、Interstage BPMサーバから既存のWFObjectsのリストを取得します。

ワークアイテムリストを作成する方法について説明します。

- 51 -

Page 61: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

1. Filterクラスを使用して、フィルタを作成します。

ワークアイテムのフィルタには以下の条件を使用することができます。

- AllWorkItems: すべてのワークアイテムを取得します。

- MyAcceptedWorkItems: ログイン中のユーザに属する、すべての承認済のワークアイテムを取得します。

- MyActiveWorkItems: ログイン中のユーザに属する、すべての活性中のワークアイテムを取得します。

- MyCompletedWorkItems: ログイン中のユーザに属する、すべての完了したワークアイテムを取得します。

- MyDeclinedWorkItems: ログイン中のユーザが拒否したすべてのワークアイテムを取得します。

- MyWorkItems: ログイン中のユーザに属する、すべてのワークアイテムを取得します。

2. openBatchedList()を使用します。

3. getNextBatch()を呼び出します。

getNextBatch()は、openBatchedList()で設定したフィルタ条件に一致するワークフローオブジェクトの配列を返します。

WorkItem[] workItemList = null;

if (filter == Filter.AllWorkItems

|| filter == Filter.MyAcceptedWorkItems

|| filter == Filter.MyActiveWorkItems

|| filter == Filter.MyCompletedWorkItems

|| filter == Filter.MyDeclinedWorkItems

|| filter == Filter.MyWorkItems) {

WFObjectList wfObjectList =

WFObjectFactory.getWFObjectList(session);

wfObjectList.openBatchedList(filter);

int batchSize = 50;

Object[] elements = wfObjectList.getNextBatch(batchSize);

}

グループワークアイテムは、Filter.MyActiveWorkItemsフィルタをサポートしません。Interstage BPMサーバのSupportGroupWorkItemパラメータが、 trueに設定されている場合、このフィルタを使用してワークアイテムを取得することはできません。その代わり、

Filter.AllWorkItemsフィルタを使用してワークアイテムを取得します。グループワークアイテムが属するグループの名前による詳細な

フィルタを使用するには、LISTFIELD_WORKITEM_ASSIGNEEをSQL演算子と共に使用します。SupportGroupWorkItemパラメータ

の詳細については、『Interstage BPMサーバ 管理者ガイド』を参照してください。

グループワークアイテムのフィルタリングの例

UserXが2グループ(GroupAとGroupB)のメンバーの場合:

シナリオ1: UserXがGroupAに割り当てられたすべてのグループワークアイテムを取得したい場合:

...

wfObjectList.addFilter (WFObjectList.LISTFIELD_WORKITEM_ASSIGNEE, WFObjectList.SQLOP_EQUALTO,

"GroupA");

wfObjectList.openBatchedList(Filter.AllWorkItems);

...

シナリオ2: UserXが、GroupAとGroupBの両方のグループに割り当てられたすべてのグループワークアイテムを取得したい場合:

...

wfObjectList.addFilter (WFObjectList.LISTFIELD_WORKITEM_ASSIGNEE, WFObjectList.SQLOP_IN,

"GroupA,GroupB");

wfObjectList.openBatchedList(Filter.AllWorkItems);

...

シナリオ3: UserXが、GroupAとGroupBの両方のグループに割り当てられたすべてのグループワークアイテムと、自分に割り当てられた

すべての個別ワークアイテムを取得したい場合:

- 52 -

Page 62: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

...

wfObjectList.addFilter (WFObjectList.LISTFIELD_WORKITEM_ASSIGNEE, WFObjectList.SQLOP_EQUALTO,

"GroupA,GroupB,UserX");

wfObjectList.openBatchedList(Filter.AllWorkItems);

...

5.3.4 ワークアイテムの実行

活性中のワークアイテムだけ、実行することができます。

ワークアイテムを実行する方法について説明します。

・ 活性中のワークアイテムのリストを作成します。

wfObjectList.addFilter(WFObjectList.LISTFIELD_WORKITEM_ASSIGNEE,

WFObjectList.SQLOP_IN, "User,Group");

WorkItem[] workItemList = listWorkItems(Filter.MyActiveWorkItems);

・ WorkItemインタフェースのgetChoices()を使用して、ワークアイテムの選択肢を取得します。

choices = workItem.getChoices();

この戻り値choicesは、ワークアイテムを表すActivityノードに接続された外向き矢印の名前です。

・ WorkItemインタフェースのaccept()を使用して、ワークアイテムを承認します。

if (choices != null ) { workItem.accept(); int choiceIdx = 0; ... }

accept() は、ワークアイテムの状態をSTATE_ACCEPTEDに変更し、このアクティビティに関連付けられているその他すべてのワー

クアイテムをSTATE_DEACTIVEに変更します。

・ ワークアイテムを実行します。つまり、WorkItemインタフェースのmakeChoice()を使用して選択を行います。

workItem.makeChoice(choices[choiceIdx]);

makeChoice()は、このワークアイテムで指定した選択肢をパラメータから取得します。makeChoice()は、ワークアイテムを完了しま

す。

5.3.5 添付文書

プロセスインスタンスが保持する情報から、AttachmentRefインタフェースを使用して、指定した文書管理システム(DMS)の添付文書に

アクセスすることができます。

注意

DMSは、Interstage BPMの設定で指定したDMSディレクトリにする必要があります。

添付文書は、名前とパスという、2つの属性によって参照されます。名前の属性は、識別子として使用する簡潔な名前です。パスの属

性は、添付文書への完全修飾パスです。

プロセスインスタンスに関連付ける添付文書の数に制限はありません。また、追加できる添付文書のタイプにも制限はありません。

添付文書は、プロセスインスタンスに対してグローバルです。プロセスインスタンス内のすべてのアクティビティは、添付文書にアクセス

できます。

・ 添付文書を追加する方法について説明します。

プロセスインスタンスが、実行編集モード、または構造的編集モードであることを確認します。次に、ProcessInstance.addAttachmentを使用して、新しいAttachmentRefオブジェクトを構築します。

procInst.startEdit();

procInst.addAttachment(ATTACHMENT_NAMES[attachIdx],

- 53 -

Page 63: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

ATTACHMENT_FILES[attachIdx]);

procInst.commitEdit();

・ すべての添付文書を取得します。

ProcessInstance.getProcessAttachmentsを使用します。

currentAttachments = procInst.getProcessAttachments();

getProcessAttachments()は、プロセスインスタンスに関連付けられているすべての添付文書への参照を返します。添付文書は、プ

ロセスインスタンスが実行されている間であれば、追加できます。

・ 特定の添付文書を取得する方法について説明します。

ProcessInstance.getAttachmentを使用します。

newAttachment = procInst.getAttachment(ATTACHMENT_NAMES[attachIdx]);

getAttachmentは、プロセスインスタンスに関連付けられている添付文書のAttachmentRefオブジェクトを返します。

ProcessExecution.javaサンプルには、添付文書を取り扱う例が含まれています。詳細は、サンプルのソースコード、および『API Javadocマニュアル』を参照してください。

- 54 -

Page 64: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

第6章 Interstage BPMの強化

この章では、Interstage BPMの機能を十分に引き出せるよう、機能強化、拡張方法について解説します。

詳細は、以下を参照してください。

・ 6.1 Interstage BPMと外部アプリケーションの統合

・ 6.2 Java Action

・ 6.3 フィルターとソートのAPI

・ 6.5 特別なユーザ定義属性のプロパティ

・ 6.6 拡張属性の使用

・ 6.7 トランザクション制御

・ 6.8 トリガ

・ 6.10 File Listener

・ 6.11 エージェントの使用

・ 6.12 タイマーの使用

・ 6.13 リモートサブプロセスのモデル化

6.1 Interstage BPMと外部アプリケーションの統合

Interstage BPMは、ほかのアプリケーションとの統合を考えて設計されています。Java Action、エージェント、またはJavaScriptを使用し

て、Interstage BPMサーバ外のクラスのメソッドを呼び出すことができます。ただし、これを行うには、いくつかの簡単な統合の手順を行

う必要があります。

注意

アクション、エージェント、JavaScriptは、ServerEnactmentContextインタフェースを呼び出す必要があります。Model APIでのインタフェー

スでは、アクション、エージェント、JavaScriptにアクセスすることはできません。

Interstage BPMを外部アプリケーションと統合する方法について説明します。

1. Interstage BPMで外部のライブラリを利用できるようにするには、外部クラスまたはJARを、Interstage BPMのライブラリ拡張ディレ

クトリ、<Interstage BPMサーバインストールディレクトリ>/server/instance/default/lib/extにコピーします。

2. JavaScriptの独自のカスタムクラスを使用する場合には、そのカスタムクラスをJARファイルに追加し、そのJARファイルを/server/instance/default/lib/extディレクトリにコピーします。それから、「Packages.」という表記法で、そのクラスを例示化します。

3. カスタムクラスが、以下の正しいCLASSPATHに位置しているか、確認してください。

- 別のクラスを使用している場合:<Interstage BPMサーバインストールディレクトリ>/classes

- カスタムライブラリを使用している場合:<Interstage BPMサーバインストールディレクトリ>/lib/ext

- プロセス定義がアプリケーションに含まれている場合:アプリケーションのクラスパス(個々のクラスの場合:<DMSRoot>/apps/<appId>/engine_classes、ライブラリの場合:<DMSRoot>/apps/<appId>/engine_lib)

JavaScriptのカスタムクラスを使用する場合

特別な目的のカスタムJavaクラスであるtest.classを使用するとします。test.classを、test.jarと呼ばれるJARファイルに追加し、そのJARファ

イルを<Interstage BPMサーバインストールディレクトリ>/server/instance/default/lib/extにコピーします。それから、ご使用のJavaScriptに、test.classを以下のように例示化します。

var test = new Packages.test();

- 55 -

Page 65: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

クラスSalaryCommissionは、グローバルクラスパス(<serverroot>/classes、もしくは、ライブラリの場合は、<serverroot>/lib/ext)、もしくは、

プロセス定義がアプリケーションに含まれている場合には、アプリケーションクラスパス(<DMSRoot>/apps/<appId>/engine_classes、もしくは、ライブラリの場合は、<DMSRoot>/apps/<appId>/engine_lib)に位置している必要があります。そのアクション自体で、

SalaryCommissionを直接例示化できます。そのアクションクラスローダーがそのアクションパス(SalaryCommissionの正確な位置)を把

握しているためです。しかし、Javascriptでは、そのクラスローダーが実行されているServerEnactmentContextインスタンスのクラスロー

ダーを使用します。このインスタンスは、アクションクラスパスの認識なく作成されます。

JavaScriptUtilは、このクラスローダーを使用して、そのグローバルと、必要時には、そのアプリケーションクラスパスを追加します。

そのテストを修正して、SalaryCommissionをロードしたクラスパスのうちの1つに追加してください。

6.2 Java ActionJava Actionは、ワークフローエンジンの拡張機能です。根本的に、Java Actionは、Interstage BPMがプロセス実行の一部として呼び出

すことができるよう構成されている、静的なJavaメソッドにすぎません。

一般的に、これらのJava Actionは、外部のプログラムやサービスと接続して情報をやり取りするために使用されます。データを外部プ

ログラムやサービスからInterstage BPMに移動したり、その逆を行うことができます。Java Actionは、外部のプログラムやサービスにアク

セスするときに標準のプロトコルを活用するためにも使われます。

さらに、特定のエラー状況の処置、または、たとえば、Interstage BPM管理者により、プロセスインスタンスが破棄や一時停止された場

合などの対処に、Java Actionを使用することができます。

com.fujitsu.iflow.model.workflow のJavaActionSetインタフェースは、JavaActionsのコンテナです。設計時に、Java Action、すなわち、

1つ以上のJavaメソッドのセットを、プロセス定義に追加します。

Java Action、すなわち、1つ以上のJavaメソッドのセットを、デザイン時にプロセス定義自体、ノード、およびタイマーに追加することがで

きます。また、Error Java Action、もしくは、Compensate Java Actionを他のJava Actionに追加することもできます。

Java Actionは、プロセス実行の以下のポイントで呼び出すことができます。

・ プロセスの初期化時(初期化アクションおよびプロセスインスタンス所有者アクション)

・ プロセスの完了時(完了アクション)

・ アクティビティの開始前(開始アクションおよび役割アクション)

・ アクティビティの完了時(終了アクション)

・ タイマーの有効期限が切れるとき(タイマーアクション)

・ プロセスインスタンスが、破棄、一時停止、もしくは再開された場合(中止時アクション、一時停止時アクション、もしくは、再開時ア

クション)

・ プロセス実行に、エラーが発生した場合(エラーアクション)

・ Java Actionの実行時にエラーが発生した場合(エラーアクション、補償アクション)

・ リモートサブプロセスの起動に失敗した場合(Remote Subprocessノードのエラーアクション)

・ 詳細については、「6.2.1 Java Actionsのタイプ」を参照してください。

Java Actionは、プロセスインスタンスが保持する情報内で実行されます。つまり、Java Actionは、UDAおよび特定のプロセスインスタン

スのそのほかの埋込み属性を読み込んだり、更新することができます。

注意

Java Actionでプロセスフローを操作するのであれば、Java Actionはプロセスインスタンスが保持する情報にServer Enactment Context APIからアクセスする必要があります。Model APIのインタフェースにはアクセスできません

たとえば、以下の操作が可能です。

- 56 -

Page 66: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ Interstage BPMが保持する情報の読取りだけの機能(値を比較するためなど)を拡張する。

この場合、Server Enactment Context APIを使用せずに、独自のJavaクラスを実装し、そのメソッドをJava Actionとして追加します。

この例は、「6.2.3 開始アクションの割当て」を参照してください。

・ 外部プログラム、または外部サービスからプロセスフローを操作する。

この場合、Server Enactment Context APIを使用して、独自のJavaクラスを実装し、そのメソッドをJava Actionとして追加します。「6.6.2拡張属性値の取得」に、この例があります。

・ 既存のInterstage BPMの機能(built-in Java Action)からプロセスフローを操作する。

この場合、いずれかの組込みJava Actionを使用でき、新しいJavaクラスを実装する必要はありません。詳細については、「6.2.5 組込み

Java Action」を参照してください。

・ Java Actionの実行中にエラーが発生した場合の特定のエラー処理を定義する。詳細については、「6.2.8 Java Actionのエラー処

理」を参照してください。

・ リモートサブプロセスが起動しない場合の特定のエラーアクションを定義する。詳細については、「6.2.7 エラーJava Actionの使用」

を参照してください。

・ プロセスインスタンスが、破棄、一時停止、、もしくは、再開された場合の処置をする。この例は、「6.2.5 組込みJava Action」を参照

してください。

6.2.1 Java Actionsのタイプ

Java Actionインタフェースではプロセス定義におけるJavaメソッドを統合できます。統合されたJavaメソッドは、プロセスの実行中に実行

されます。Java Actionをプロセス定義の設計時に、プロセス定義に追加することができます。Java Actionは、初期化、所有者、完了、

中止時、再開時、一時停止時またはエラーアクションといったプロセス定義レベル、またはロール、開始、終了、中止時、再開時、一時

停止時、エラーまたはタイマーアクションといったノードレベルにおいて追加できます。さらに、補償アクションとエラーアクションは、JavaActionレベルで追加できます。

Interstage BPMは、以下のJava Actionタイプを提供します。

・ 初期化アクションと所有者アクションは、プロセスの初期化時に実行されます。これらのJava Actionは、 初のアクティビティが実行

される前にユーザ定義属性データを初期化します。

・ 完了アクションは、プロセスの完了時に実行されます。これらのアクションを使用して、プロセスインスタンス全体のデータをクリーン

アップまたは分析できます。

・ 開始アクション。開始アクションは、アクティビティが開始される前に評価されます。したがって、このJava Actionを使用すると、特定

のノードが実行される前に、そのノードに関連付けられている値を設定または初期化できます。

・ 終了アクション。終了アクションは、ノードでの作業が終了し、プロセスインスタンスが別のノードに移動する前に実行されます。し

たがって、このJava Actionを使用すると、目的の作業が終了した後で、そのノードに関連付けられている値をクリーンアップまたは

分析できます。

・ ロールアクション。ロールアクションは、ロールが解決された後、タスクが割り当てられる前に評価されます。したがって、このJava Actionを使用すると、ロールに関連付けられているタスクの担当者のリストを動的に計算できます。

・ タイマーアクションは、タイマーの日時や期限に到達したときに実行されます。

・ エラーアクション。エラーアクションを使用すると、プロセスの実行中に特定のエラー状態を処理できます。エラーアクションは、プ

ロセス定義全体、個別のノード、および他のJava Action(別のJava Actionの実行中に発生したエラーに対応する場合)に対して定

義できます。

・ 補償アクション。補償アクションは、Interstage BPM以外のシステム(外部データベースなど)にアクセスする別のJava Actionに対し

て定義できます。補償アクションは、トランザクションのクリーンアップおよびロールバック(外部データベースに新しく追加された行

を削除する場合など)を行い、トランザクションに参加している全システムを一貫した状態に保つために役立ちます。

・ 管理者がプロセスインスタンスの処理を中止、一時停止、または再開するコマンドを発行したときに、特別なタイプのアクションを直

ちに活性化することができます。このようなアクションは、以下のいずれかのアクションセットに属します。

- 一時停止時アクション

- 再開時アクション

- 中止時アクション

- 57 -

Page 67: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

*時アクションは、プロセスインスタンスの状態が変更される前に実行されます。これらのアクションは、プロセス定義内の個別ノードまた

はプロセス定義全体に対する個別のアクティビティについて定義できます。

注意

Java Actionプログラムの際、プロセス定義、ノードまたは他のJava Actionを設定するときのみ、タイプを指定します。Java Actionインタ

フェースから使えるメソッドはどのタイプのJava Actionにも使うことができますが、Java Actionのタイプはランタイムにどのメソッドが実行

されるかを決定することを覚えておく必要があります。

6.2.2 Server Enactment Contextインタフェースを使用するワークフローデータへのアクセス

Java Actionを使用してプロセスフローの処理ができます。その場合、Java ActionからServer Enactment Contextインタフェースを通じて

プロセスインスタンスコンテクストにアクセスする必要があります。

Server Enactment Contextインタフェースはワークフローデータへのアクセスを可能にし、サーバインタフェースとして実行されます

(com.fujitsu.iflow.server.intf.ServerEnactmentContext)。例として、以下のメソッドがあります。

・ addAttachment()

・ getAttachment()

・ getProcessOwners()

・ setProcessDescription()

有効なクラスやメソッドについての詳細は『API Javadocマニュアル』を参照してください。

Server Enactment Contextを使用するワークフローデータにアクセスするためには、以下の手順に従います。

1. お使いのJavaクラスを起案する場合は、以下の操作を行います。

a. ServerEnactmentContextインタフェースをインポートします。

b. Java Actionから呼び出したいメソッドのパラメータがServerEnactmentContextのタイプであることを確認します。

2. Java Actionを定義する場合は、お使いのメソッドに渡す値を指定します。ServerEnactmentContextパラメータの値としてsec ICを使用します。

ランタイム時、Interstage BPMはこのインタフェースを含むオブジェクトをお使いのメソッドに渡します。

これはワークフローデータにアクセスする必要性を書き込む可能性のあるJavaメソッドの例です。太字はServer Enactment Contextイン

タフェースをインポートし使用する方法を示しています。

import com.fujitsu.iflow.server.intf.ServerEnactmentContext;

public class MyClass {

public void reassignIfTooExpensive(ServerEnactmentContext sec,

int amount) {

String[] employee = {"Employee1", "Employee2"};

String[] managers = {"Manager1", "Manager2"};

if (amount <= 5000)

sec.setActivityAssignees(employee);

else

sec.setActivityAssignees(managers);

}

}

これはJava Actionの定義方法です。太字は、コンテクストデータをお使いのメソッドに渡す方法を示しています。

JavaAction[] myAction = MyActionSet.createJavaActions(1);

myAction[0].setActionDescription("Decide on purchase requisition");

myAction[0].setActionName("RoutePurchaseRequisition");

myAction[0].setClassName("MyPackage.MyClass");

- 58 -

Page 68: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

myAction[0].setClassPath(CLASS_PATH_JAVA_ACTION);

myAction[0].setMethodName("reassignIfTooExpensive(ServerEnactmentContext,

int)");

String[] args = new String[2];

args[0] = "sec";

args[1] = "uda.amount";

String params = Utils.combineParametersToXML(args);

myAction[0].setArgumentsUDANames(params);

MyActionSet.setJavaActions(myAction);

6.2.3 開始アクションの割当て

ここでは、開始アクションをActivityノードに割当てる方法の例を挙げます。使用するJava Actionは、サンプルクラスComplexPlanの一

部です。JavaActionインタフェースのsetClassPath()およびsetClassName()を使用して、サンプルクラスComplexPlanを参照します。

この例では、SampleJavaActionsが、UDA QtyとPriceの初期値を返す、開始アクションが定義されています。

これは、独自のJavaクラスを実装し、Server Enactment Context APIを使用せずに、Java Actionとしてのそのメソッドを追加します。

注意

Java Actionをプログラミングする場合、プロセス定義、ノード、もしくは、その他のJava Actionにタイプを設定する場合にのみ、タイプを

指定します。

JavaActionインタフェースで有効なメソッドはどのタイプのJavaActionにも使用することができますが、JavaActionのアクションは、ランタ

イム時に、どのメソッドを実行するかを決定するものであることに注意してください。

詳細については、『API Javadocマニュアル』を参照してください。

開始アクションをActivityノードに割当てる方法について説明します。

1. Activityノードを追加します。プロセス定義での1つ目のアクティビティ名は、protected final static String NODE_FILL_OUT_PR= "Fill out Purchase Request"です。

protected final static String NODE_FILL_OUT_PR =

"Fill out Purchase Request";

Node fillOutNode = plan.addNode(NODE_FILL_OUT_PR,

Node.TYPE_ACTIVITY);

fillOutNode.setRole(activityRole);

fillOutNode.setPosition(new Point(450, 40));

2. WFObjectFactoryクラスのetJavaActionSet()を使用して、新しいJavaActionSetオブジェクトを作成します。

JavaActionSet foPJavaActionSet =

WFObjectFactory.getJavaActionSet();

3. JavaActionSetに必要な数のJava Actionを生成します。

以下の例は、3つのJava Actionが生成されます。

JavaAction[] foPJavaActions =

foPJavaActionSet.createJavaActions(3);

4. Java Actionを定義します。

ここで定義するJava Actionは、初期量と金額を設定するJava Actionになります。

foPJavaActions[0].setActionDescription("Qtyの初期値を設定");

foPJavaActions[0].setActionName("load initial qty");

foPJavaActions[0].setMethodName("getInitialQty");

foPJavaActions[0].setClassName(CLASS_NAME_JAVA_ACTION);

foPJavaActions[0].setClassPath(CLASS_PATH_JAVA_ACTION);

- 59 -

Page 69: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

foPJavaActions[0].setReturnValueUDAName("Qty");

...

foPJavaActions[1].setActionDescription("Priceの初期値を設定"

);

foPJavaActions[1].setActionName("load initial price");

foPJavaActions[1].setMethodName("getInitialPrice");

foPJavaActions[1].setClassName(CLASS_NAME_JAVA_ACTION);

foPJavaActions[1].setClassPath(CLASS_PATH_JAVA_ACTION);

foPJavaActions[1].setReturnValueUDAName("Price");

...

foPJavaActionSet.setActionSetDescription("UDA QtyとPriceの初期値を"

+ "設定する操作");

foPJavaActionSet.setActionSetName("Qty and Price Setter");

この例では、添付文書を作成するために、他の開始アクションが定義されています。発生する可能性のあるエラーの処置のた

め、エラーアクションはそのJava Actionで定義されています。詳細については、「6.2.8 Java Actionのエラー処理」を参照してくだ

さい。

5. JavaActionSetをActivityノードの開始アクションに割当てます。

foPJavaActionSet.setJavaActions(foPJavaActions);

fillOutNode. .setJavaActionSet(foPJavaActionSet,JavaActionSet.NODE_PROLOGUE);

Java Actionセットの内部コピーが作成され、Activityノードに保存されます。この先、Java Actionセットを変更しても、Activityノードに割

当てられたJava Actionには何の影響もありません。Activityノードを変更する場合は、Java Actionセットを修正し、再びActivityノードに

割当てる必要があります。

6.2.4 終了アクションの割当て

前提条件: 「6.2.3 開始アクションの割当て」に解説されているとおりにActivityノードが定義されている。

この例では、ComplexPlanが、UDA QtyとPriceから計算したTotalの金額を返す、終了アクションを定義します。終了アクションは、Activityノードに追加されます。

注意

Java Actionをプログラミングする場合、プロセス定義、ノード、他のJava Actionに設定するときのみJava Actionのタイプを指定します。

Java Actionのインタフェースで利用できるメソッドは、どのタイプのJava Actionでも使用できますが、Java Actionのタイプによって実行

中に実行されるメソッドは異なります。詳細については『API Javadocマニュアル』を参照してください。

終了アクションをActivityノードに追加する方法について説明します。

1. WFObjectFactoryクラスのgetJavaActionset()を使用して、新しい JavaActionSetオブジェクトを作成します。

JavaActionSet foEJavaActionSet =

WFObjectFactory.getJavaActionSet();

2. JavaActionSetに必要な数のJava Actionを生成します。

以下の例では、1つのJava Actionが生成されます。

JavaAction[] foEJavaActions =

foEJavaActionSet.createJavaActions(1);

3. Java Actionを定義します。CLASS_NAME_JAVA_ACTIONとCLASS_PATH_JAVA_ACTIONは、サンプルで定義している定

数です。

foEJavaActions[0].setActionDescription("Sets calculated total amount to UDA 'Total'");

foEJavaActions[0].setActionName("calculate Total");

foEJavaActions[0].setClassName(CLASS_NAME_JAVA_ACTION);

foEJavaActions[0].setClassPath(CLASS_PATH_JAVA_ACTION);

foEJavaActions[0].setMethodName("getTotal(float,int)");

foEJavaActions[0].setArgumentsUDANames("<E>uda.Price</E><E>uda.Qty</E>");

- 60 -

Page 70: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

foEJavaActions[0].setReturnValueUDAName("Total");

foEJavaActionSet.setActionSetDescription("Operation to calculate total");

foEJavaActionSet.setActionSetName("Total Setter");

4. JavaActionSetをActivityノードのエピローグ部分に割当てます。

foEJavaActionSet.setJavaActions(foEJavaActions);

fillOutNode.setJavaActionSet(foEJavaActionSet,JavaActionSet.NODE_EPILOGUE);

6.2.5 組込みJava ActionInterstage BPMは、プロセスフローを操作するために、様々なJavaメソッドを提供しています。これらのメソッドは、実装する必要はなく、

Java Actionから直接呼び出すことができます。これらのメソッドは、組込みJava Actionと呼ばれています。

例えば、以下のような事前定義済Java Actionがあります。

・ JavaScriptを評価できるJava Action具体例については、「6.2.6 JavaScript Java Action」を参照してください。

・ 外部データベースのデータを取得、更新するJava Action

・ Webサービスから情報を呼び出し、取得するJava Action

組込みJava Actionは、IflowActionsクラス(com.fujitsu.iflow.actions.IflowActions)で使用できます。

このクラスには、たとえば以下のメソッドがあります。

・ escalateActivity()

・ makeChoiceAction()

・ sendEmail()

使用可能なメソッドの詳細については、『API Javadocマニュアル』を参照してください。

Java ActionのIflowActionsは、適切なクラス名を指定して使用します。クラスパスは必要ありません。

太字のテキストは、IflowActionsクラスのメソッドを指定する方法を示しています。

JavaAction[] myAction = MyActionSet.createJavaActions(1);

myAction[0].setActionDescription("Decide on purchase requisition");

myAction[0].setActionName("MakeChoice");

myAction[0].setClassName("com.fujitsu.iflow.actions.IflowActions");

myAction[0].setMethodName("makeChoiceAction(String, long, ServerEnactmentContext)");

String[] args = new String[3];

...

Java Actionの定義の詳細については、「6.6.2 拡張属性値の取得」を参照してください。

6.2.6 JavaScript Java ActionJavaActionは、Javaができることであれば、何をするのも許可してくれる柔軟性がありますが、プロセスエンジンにアクセスするクラスは、

Javaプログラムをコンパイルする必要があるという難点があります。このため、JavaScriptを評価できる、特別なJavaScript JavaActionを使用できます。JavaScriptでは、Javaでできることがすべて可能です。ただし、JavaScriptは実行するまでコンパイルされません。JavaScriptはプロセス定義内のソースフォームに保存されるので、外部に保存されている関連付けられたクラスファイルはありません。

JavaScriptは、Javaと非常に類似した構文を使用しますが、いくつかの違いがあります。たとえば、スクリプト環境では意味のある動的に

型付けされている変数などです。JavaScriptは、実際は、ソフトウェアに同梱されている“ECMA-262.PDF”(印刷可能ファイル)で説明さ

れている、ECMA標準です。同じServer Enactment Context APIをJavaScriptで使用できます。

さらに、特定の状況で繰り返し使用するスクリプト様式を実行する、カスタムJavaScriptExtentionを作成することもできます。

- 61 -

Page 71: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

注意

メソッドがJavaScriptに使用したサイズは、Java Virtual Machine (JVM)によって制限される場合があります。現在、メソッドバイトコードサ

イズは65535バイト(64KBytes)に制限されています。より大きいサイズのメソッドを使用するとJVMはエラーを示し、再びJavaScriptを実

行する前にメソッドのサイズを減らす必要があります。

JavaメソッドをJavaScript内で呼び出す

標準のJavaScriptは、任意のJavaメソッドを呼び出すことができます。また、必要であれば、Javaオブジェクトを作成して、そのオブジェク

トでメソッドを呼び出し、ほかのJavaオブジェクトをパラメータとして渡すこともできます。

静的メソッドの呼び出しの例は、ScriptPlugIn.classにあります。

Packages.ScriptPlugIn.createFile(“C:¥¥temp¥¥test.txt”);

メンバーメソッドの呼出しの例は、JDBCPlugIn.classにあります。

x = new Packages.JDBCPlugIn();

var customer = uda.Customer;

var finish = x.findCustomer(customer);

6.2.7 エラーJava Actionの使用

エラーJava Actionはエラーが起こったときにプロセスインスタンスの動作の決定や特定のエラーを処理するのに使われます。エラー処

理の定義をしないと、プロセスインスタンスはどこで発生したかに関わらず、例外が起こるとすぐにエラー状態になります。例:リモートサ

ブプロセスの開始が失敗した場合、メール送信ができない場合など。

エラーJava Actionはいろいろなレベルで定義されます。

・ プロセス定義レベル:これらのエラーJava Actionセットはいかなるエラーの場合でもエラーの度合いやエラーが発生するアクティビ

ティにかかわらず実行されます。プロセス定義レベルで定義されたエラーJava Actionセットはプロセスインスタンスがエラー状態に

入る直前に実行されます。そのようなエラーアクションはプロセスインスタンスの動作に影響できないことに注意してください。プロ

セス定義レベルのエラーアクションは、例えば通知メールの送信やログファイルに追加情報を書くのに使用される可能性がありま

す。

・ ノードレベル(Remote Subprocessノード):リモートサブプロセスが開始に失敗すると、このレベルのエラーJava Actionセットは活性

化されます。例:「6.13.3 リモートサブプロセスのエラー処理」を参照してください。

・ Java Actionレベル:このレベルのエラーJava Actionセットは関連する「通常」のJava Actionで例外が起こると実行されます。エラー

Java ActionはすべてのJava Actionsのタイプに定義できます。(例:Java Actionの開始、終了、タイマー、中止)ただし、エラーまた

は補償アクション自体を除きます。Java Actionsへのエラーアクションの割当てについては、「6.2.8 Java Actionのエラー処理」を参

照してください。

以下は、プロセス定義にエラーJava Actionを割り当てる例です。使用されているJava Actionsは、ComplexPlanクラスの一部です。

以下は、プロセス定義に中止時アクションの割り当てる例です。使用されているJava Actionは、例のクラスComplexPlanの一部です。

プロセス定義レベルでエラーJava Actionセットを定義するためには、以下の手順に従います。

1. WFObjectFactoryクラスからgetJavaActionSet()を使い、新しいJavaActionSetオブジェクトを作成します。

JavaActionSet plErrorJavaActionSet =

WFObjectFactory.getJavaActionSet();

2. Java ActionセットのJava Actionsの必要数を生成します。

以下の例では1つのJava Actionが生成されています。

JavaAction[] plErrorJavaAction =

plErrorJavaActionSet.createJavaActions(1);

- 62 -

Page 72: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

3. Java Actionを定義します。

plErrorJavaAction[0]

.setActionName("WriteLogEntryWithException");

plErrorJavaAction[0]

.setActionDescription("Writes a log entry with exception");

plErrorJavaAction[0]

.setMethodName("writeLogEntryWithException(String,ServerEnactmentContext)");

plErrorJavaAction[0]

.setClassName(CLASS_NAME_JAVA_ACTION);

plErrorJavaAction[0]

.setClassPath(CLASS_PATH_JAVA_ACTION);

plErrorJavaAction[0]

.setArgumentsUDANames("<E>uda.ProcessLevelErrorLogEntry</E><E>sec</E>");

plErrorJavaActionSet.setJavaActions(plErrorJavaAction);

4. プロセス定義にJava Actionセットを割り当てます。

plan.setJavaActionSet(plErrorJavaActionSet,

JavaActionSet.PLAN_ERROR);

6.2.8 Java Actionのエラー処理

Java Actionの実行中にエラーが発生した場合は、例外がスローされます。Interstage BPMでは、Java Actionのエラーに対して独自の

エラー処理を定義できます。これにより、例外がスローされたときにプロセスインスタンスがエラー状態になることを防止できます。

また、トランザクションがロールバックされてプロセスインスタンスがエラー状態に設定される前に「クリーンアップ」を実行するJava Actionを定義することもできます。これには、Java Actionセット内のすべてのJava Actionのロールバックが含まれます。プロセスインスタンスが

エラー状態に設定される前に、エラー発生時の通知メールの送信などの一般的なアクションを実行したり、何らかの特別なアクション

を実行することができます。

Interstage BPMには、Java Actionのエラーを処理する以下のオプションが用意されています。

・ 補償アクション:補償アクションは、システムをクリーンアップし、トランザクションに関連するすべてのシステム(外部データベースや

メールサーバなど)を一貫した状態に保ちます。補償アクションは、外部システムが関係する場合に特に役立ちます。

Java Actionに対してエラー処理を定義しない場合、このJava Actionで例外がスローされたときは、トランザクションがロールバックさ

れます。ただし、ロールバックは、Interstage BPMアプリケーションサーバのコンテキストでの変更に対してのみ実行されます。外部

システムでのすべてのトランザクション(外部データベースに行が追加されるなど)は、ロールバックされません。このため、場合に

よっては、トランザクションで使用されたすべてのシステムを一貫した状態に保つために、外部システムを手動でクリーンアップす

る必要があります。必要な場合は、補償アクションセットを使用できます。

アクションセット内の任意のJava Actionに対して補償アクションを指定できます。補償アクションは、たとえば新しくデータベースに

追加された行を削除したり、追加のメールを送信するような場合に役立ちます。通常のJava Actionセットで例外が発生した場合

は、例外がスローされる前に、正常に実行されたすべてのJava Actionに対して定義されているすべての補償アクションが逆の順序

で呼び出されます。

注意

補償アクションを別の補償アクションに埋め込むことはできません。補償アクションが例外をスローした場合、プロセスインスタンス

は直ちにエラー状態になり、残りの補償アクションの実行は中止されます。

詳細については、以下のサンプルを参照してください。

・ エラーアクション:Java Actionレベルで、関係する通常のJava Actionから例外がスローされると、エラーアクションセットが活性化し

ます。エラーアクションは、他のすべてのアクションセットと同様に、アクションセット内にまとめられています。エラーアクションは、ア

クションセット内の任意のアクションに対して指定できます。ただし、エラーアクションで発生した例外を処理するためのエラーアク

ションは定義できません。

詳細について「6.2.7 エラーJava Actionの使用」と以下のサンプルを参照してください。

続行設定

- 63 -

Page 73: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

エラーアクションはエラーが見つかると、プロセス実行を続けるかどうかの決定をします。この動作は続行設定「対象とする

Exception」によって定義されます。

正しく設定されると例外は見つかり、定義されたエラーアクションが実行された後にプロセスインスタンスの実行を続行します。

誤って設定されると、定義されたすべての補償アクションが実行され、その後プロセスインスタンスはエラー状態になります。

異なった「catchException」を設定された複数のエラーアクションがあった場合、falseがtrueを上書きし、一つのエラーアクションが

「catchException」をfalseに設定されると即座にプロセスインスタンスがエラー状態になります。

例外クラス

続行設定に加えて、ActivityノードレベルとJava Actionレベルでのエラーアクションは、どの例外にエラーアクションが反応するか

を決定します。具体的な例外クラスを特定することができます(デフォルトは、java.lang.Exception。起こった例外がこの特定の例外

クラスのインスタンスかサブクラスであるときにだけ、エラーアクションが実行されます。

注意

エラーアクションが例外をスローした場合、トランザクションは直ちにロールバックされ、プロセスインスタンスはエラー状態になりま

す。このような場合に対するエラーアクションを定義することはできません。

いかなるJava Actionセットも複数のJava Actionsを含むことができます。それぞれのJava Actionに関しては、エラーアクションおよび補

償アクションを定義できます。詳細については「6.2.9 エラーの場合のJava Action構造と実行プラン」を参照してください。

補償アクションのJava Actionへの定義および割当て

以下のサンプルは別のJava Actionの実行が失敗した場合に実行される補償Java Actionを定義します。管理者にはメールで初期量の

取得が失敗した場合に通知されます。この取得はFillOutActivityノードのための開始アクションとして実行される別のJava Actionで定

義されます。ComplexPlan.javaサンプルの中にこのサンプルの全体コードがあります。メール送信で初期量を取得するメソッドは

SampleJavaActionsのサンプルで定義します。

補償Java Actionセットを定義、割り当てるには、以下の操作を行います。

1. WFObjectFactoryクラスからgetJavaActionSet()を使用し、新しいJavaActionSetオブジェクトを作成します。

JavaActionSet compensateJavaActionSet =

WFObjectFactory.getJavaActionSet();

2. JavaActionSetにJava Actionsの必要な数を生成します。以下の例では、一つのJava Actionが生成されています。

JavaAction[] compensateJavaAction =

compensateJavaActionSet.createJavaActions(1);

3. Java Actionを定義します。sendEmail()メソッドがSampleJavaActionsのサンプルで定義されることに注意します。

compensateJavaAction[0].setActionName("Send a notification mail");

compensateJavaAction[0]

.setActionDescription("Send notification mail to administrator");

compensateJavaAction[0].setMethodName

("sendEmail(String, String, String, String, String, String,

ServerEnactmentContext)");

compensateJavaAction[0].setClassName(CLASS_NAME_JAVA_ACTION);

compensateJavaAction[0].setClassPath(CLASS_PATH_JAVA_ACTION);

compensateJavaAction[0].setArgumentsUDANames

("<E>uda.MailTo</E><E>uda.MailFrom</E>

<E>uda.MailCc</E><E>uda.MailBcc</E><E>uda.MailSubject</E>

<E>uda.MailBody</E><E>sec</E>");

4. 初期量を取得するJava Actionに補償JavaActionを追加します。このJava ActionはFillOutActivityノードの開始Java Actionセット

の一部です。ComplexPlan.javaのサンプル内にすべての定義があります。

....

JavaActionSet foPJavaActionSet = WFObjectFactory.getJavaActionSet();

JavaAction[] foPJavaActions = foPJavaActionSet.createJavaActions(3);

foPJavaActions[0]

- 64 -

Page 74: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

.setActionDescription("Sets initial value for Qty");

foPJavaActions[0].setActionName("load initial qty");

foPJavaActions[0].setMethodName("getInitialQty");

foPJavaActions[0].setClassName(CLASS_NAME_JAVA_ACTION);

foPJavaActions[0].setClassPath(CLASS_PATH_JAVA_ACTION);

foPJavaActions[0].setReturnValueUDAName("Qty");

foPJavaActions[0].setJavaActionSet(compensateJavaActionSet,

JavaActionSet.ACTION_COMPENSATE);

....

Defining and Assigning Error Actions to a Java Action

以下のサンプルは関連するJava Actionの実行が失敗した場合に実行されるエラーアクションセットを定義します。 エントリはログファイ

ルに書き込まれ、プロセスインスタンスの処理は添付を追加できない場合に続行されます。添付追加のメソッドはSampleJavaActionsサンプルで定義されます。このJava ActionはFillOutActivityノードの開始アクションとして実行されます。ComplexPlan.javaサンプル内に

このサンプルの全体コードがあります。

エラーJava Actionセットを定義、割り当てするには、以下の操作を行います。

1. WFObjectFactoryのクラスからgetJavaActionSet()を使用して、新しいJavaActionSetオブジェクトを作成します。

JavaActionSet errorJavaActionSet =

WFObjectFactory.getJavaActionSet();

2. JavaActionSetのJava Actionsの必要数を生成します。以下の例では、二つのJava Actionsが生成しています。

JavaAction[] errorJavaActions =

errorJavaActionSet.createJavaActions(2);

3. Java Actionを定義します。addAttachment()メソッドがSampleJavaActionsのサンプルで定義されることに注意します。

errorJavaActions[0]

.setActionDescription("Writes a log entry with exception");

errorJavaActions[0]

.setMethodName("writeLogEntryWithException(String,ServerEnactmentContext)");

errorJavaActions[0].setClassName(CLASS_NAME_JAVA_ACTION);

errorJavaActions[0].setClassPath(CLASS_PATH_JAVA_ACTION);

errorJavaActions[0]

.setArgumentsUDANames("<E>uda.ProcessLevelErrorLogEntry</E><E>sec</E>");

errorJavaActions[0].setCatchException(true);

errorJavaActions[1].setActionName("Continue process");

errorJavaActions[1].setActionDescription("Catches FileNotFoundExceptions

and continues the execution of the process");

errorJavaActions[1].setMethodName("noop()");

errorJavaActions[1]

.setClassName("com.fujitsu.iflow.actions.IflowActions");

errorJavaActions[1]

.setEditorClassName("com.fujitsu.iflow.actions.IflowActions");

errorJavaActions[1]

.setCatchException(true);

4. 添付を追加するJava Actionに上のエラーJava Actionセットを追加します。このJava ActionはFillOutActivityノードの開始Java Actionセットの一部です。ComplexPlan.javaのサンプル内の全体の定義があります。

....

foPJavaActions[2].setJavaActionSet(errorJavaActionSet,

JavaActionSet.ACTION_ERROR);

...

6.2.9 エラーの場合のJava Action構造と実行プラン

ここでは補償アクションセット、エラーアクションセットを含むJava Actionセットで可能な構造について説明します。さらに、Java Actionに発生するどんなエラーにどのアクションがどのオーダーで実行されるかを示します。

- 65 -

Page 75: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

「通常」のJava Actionセットは複数のJava Actionsから成り立っています。さらに、Java Actionセット (例:開始Java Actionセット)で「通

常」のJava Actionによって起きた例外処理にエラーJava Actionを定義できます。「通常」のJava Actionセットの実行が例外を起こし、外

部のシステムのロールバックが必要な場合にアクティブになる「通常」のJava Actionセットの補償アクションセットを定義できます。

図6.1 Java Actionセットの構造

通常のJava Actionセットの例

2つのJava Actions(JA_1とJA_2)を包括する開始Java Actionセットを定義したと仮定します。

・ JA_1: 一つのエラーJava ActionとエラーJava Actionセット (EJA_JA_1)と二つの補償Java Actionsと補償Java Actionセット

(CJA_1_JA_1とCJA_2_JA_2)が定義されています。

- 66 -

Page 76: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ JA_2: 二つのエラーJava Action(EJA_1_JA_2とEJA_2_JA_2)とエラーJava Actionセットは定義されていますが、補償Java Actionセットも利用可能ではありません。

図6.2 通常のJava Actionセット

エラーの場合の実行プラン

以下の表は複数のエラー状態のリストです。エラーの場合にどのJava Actionsが実行されるかを説明しています。

状態 結果

JA_1が、FileNotFoundExceptionをスロー。 この状態ではエラーアクションが定義されていないため、プロセスインスタンス

はエラー状態に入ります。

JA_1が、NullPointerExceptionをスロー。 例外が見つかり、EJA_JA_1が実行されます。プロセスインスタンスが続行し、

すなわち、JA_2が実行されます、その後、トランザクションがコミットされます。

JA_1が、正しく実行。

JA_2が、NullPointerExceptionをスロー。

NullPointerExceptionがjava.lang.Exceptionのサブクラスなので、EJA_1_JA_2は実行されます。例外が見つかりトランザクションはコミットされプロセスインス

タンスは続行されます。

JA_1が、正しく実行。

JA_2が、NullPointerExceptionをスロー。

FileNotFoundExceptionがjava.lang.Exceptionとjava.io.IOException

のサブクラスなので、EJA_1_JA_2とEJA_2_JA_2は実行されます。 しかし、

EJA_2_JA_2でエラー状態へ遷移するを設定しています。 この設定は

EJA_1_JA_2の設定をオーバーライドします。

よって、二つのエラーアクションの実行後、プロセスインスタンスがエラー状態

になる前に補償アクションCJA_1_JA_1とCJA_2_JA_1が実行されます。

JA_1とJA_2が正しく実行。 エラーも補償アクションも実行されません。プロセスインスタンスは通常状態の

ままです。

- 67 -

Page 77: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

詳細は、「6.2.8 Java Actionのエラー処理」および「6.2.7 エラーJava Actionの使用」を参照してください。

6.2.10 中止時、一時停止時、および再開時アクションの使用

Interstage BPM管理者が一時停止、再開、中止コマンドを呼び出し、プロセスインスタンスの状態が変わる前に一時停止時、再開時、

および中止時アクションは特定のアクション実行に使用します。

他のJava Actionセット同様、中止時、再開時、および一時停止時アクションセットは複数のJava Actionを含むことができます。それぞ

れのセットはノードレベル上およびプロセス定義レベル上で定義できます。中止、一時停止、再開コマンドが出たときに、それぞれのア

クティビティが活性化している場合のみ、 初にノードレベルアクションセットがいつも実行されます。プロセス定義レベルアクションセッ

トはコマンドが出されるときに活性化したアクティビティに関わらず実行されます。

以下は、プロセス定義に中止時アクションの割り当てる例です。使用されているJava Actionは、ComplexPlanクラスの一部です。例のクラス

ComplexPlanを参照するにはJavaActionインタフェースからsetClassPath()とsetClassName()を使用します。

中止Java Actionセットをプロセス定義レベルに設計して、割り当てるには、以下の手順に従います。

1. WFObjectFactoryクラスからgetJavaActionSet()を使用し、新しいJavaActionSetオブジェクトを作成します。

onAbortJavaActionSet = WFObjectFactory.getJavaActionSet()

2. JavaActionSetのJava Action必要数を生成します。

以下の例では、一つのJava Actionが発生しています。

JavaAction[] onAbortJavaAction =

onAbortJavaActionSet.createJavaActions(1);

3. Java Action Setを定義します。

onAbortJavaAction[0].setActionName("WriteLogEntry");

onAbortJavaAction[0].setActionDescription("Writes a log entry if process is aborted");

onAbortJavaAction[0].setMethodName("writeLogEntry(String)");

onAbortJavaAction[0].setClassName(CLASS_NAME_JAVA_ACTION);

onAbortJavaAction[0].setClassPath(CLASS_PATH_JAVA_ACTION);

onAbortJavaAction[0] .setArgumentsUDANames("<E>uda.OnAbortLogEntry</E>");

onAbortJavaActionSet.setJavaActions(onAbortJavaAction);

4. プロセス定義にJavaActionSetを割当てます。

plan.setJavaActionSet(onAbortJavaActionSet,

JavaActionSet.PLAN_ABORT);

6.3 フィルターとソートのAPIプロセス定義、プロセスインスタンス、およびワークアイテムのリストを、プロセス定義名、プロセスの起案者、ワークアイテム名、および

そのほかの様々なフィールドでフィルターすることができます。この機能を使用して、特定のフィルター条件に一致するリストを取得す

ることができます。たとえば、起案者が「ユーザX」のすべてのプロセスインスタンスを取得する、または「注文」というタイトルのプロセス

インスタンスから作成されたすべてのワークアイテムを取得する、といったフィルター条件を設定できます。複数のフィールドでフィル

ターすることもできます。フィールドのテーブルおよび有効なリストについては、次の節で解説します。

6.3.1 WFObjectListインタフェース

このインタフェースは、有効なフィルターを使用してリストをフィルターおよびソートするために使用することができるフィールドを識別す

る定数を提供します。以下にその例を示します。

フィルター リストのフィールド 説明

Filter.AllPlansFilter.MyPlans

LISTFIELD_APPLICATION_IDENTIFIERLISTFIELD_PLAN_IDLISTFIELD_PLAN_NAMELISTFIELD_PLAN_OWNER

アプリケーションIDプロセス定義IDプロセス定義名

プロセス定義の所有者

- 68 -

Page 78: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

フィルター リストのフィールド 説明

LISTFIELD_PLAN_STATELISTFIELD_PLAN_IDENTIFIER

プロセス定義の状態

プロセス定義の識別子

Filter.AllProcessesFilter.AllActiveProcessesFilter.MyProcessesFilter.MyActiveProcessesFilter.MyInactiveProcessesFilter.AllInactiveProcessesFilter.AllProcessesInErrorState

LISTFIELD_APPLICATION_IDENTIFIERLISTFIELD_PLAN_IDLISTFIELD_PLAN_NAMELISTFIELD_PLAN_IDENTIFIERLISTFIELD_PROCESSINSTANCE_IDLISTFIELD_PROCESSINSTANCE_STATELISTFIELD_PROCESSINSTANCE_INITIATORLISTFIELD_PROCESSINSTANCE_PRIORITYLISTFIELD_PROCESSINSTANCE_NAMELISTFIELD_PROCESSINSTANCE_TITLELISTFIELD_PROCESSINSTANCE_PARENTIDLISTFIELD_PROCESSINSTANCE_CREATEDTIMELISTFIELD_PROCESSINSTANCE_CLOSEDTIMELISTFIELD_PROCESSINSTANCE_OWNER

アプリケーションIDプロセス定義IDプロセス定義名

プロセス定義IDプロセスインスタンスIDプロセスインスタンスの状態

プロセスインスタンスの開始

プロセスインスタンスの優先度

プロセスインスタンス名

プロセスインスタンスタイトル

プロセスインスタンスの親プロセスIDプロセスインスタンスの作成日

プロセスインスタンスの終了日

プロセスインスタンスの所有者

Filter.AllWorkItemsFilter.AllInactiveWorkItemsFilter.MyWorkItemsFilter.MyAcceptedWorkItemsFilter.MyActiveWorkItemsFilter.MyDeclinedWorkItems

LISTFIELD_APPLICATION_IDENTIFIERLISTFIELD_PLAN_IDLISTFIELD_PLAN_NAMELISTFIELD_PLAN_IDENTIFIERLISTFIELD_PROCESSINSTANCE_IDLISTFIELD_PROCESSINSTANCE_STATELISTFIELD_PROCESSINSTANCE_NAMELISTFIELD_PROCESSINSTANCE_TITLELISTFIELD_PROCESSINSTANCE_INITIATORLISTFIELD_PROCESSINSTANCE_PRIORITYLISTFIELD_PROCESSINSTANCE_CREATEDTIMELISTFIELD_WORKITEM_IDLISTFIELD_WORKITEM_ASSIGNEELISTFIELD_WORKITEM_STATELISTFIELD_WORKITEM_CREATEDTIMELISTFIELD_WORKITEM_DUEDATELISTFIELD_WORKITEM_PRIORITYLISTFIELD_WORKITEM_NAMELISTFIELD_WORKITEM_ACTIVITYINSTANCEID

アプリケーションIDプロセス定義IDプロセス定義名

プロセス定義識別子

プロセスインスタンスIDプロセスインスタンス状態

プロセスインスタンス名

プロセスインスタンスタイトル

プロセスインスタンスの開始

プロセスインスタンスの優先度

プロセスインスタンスの作成日

ワークアイテムIDワークアイテムの割当て

ワークアイテムの状態

ワークアイテムの作成日

ワークアイテムの期限

ワークアイテムの優先度

ワークアイテム名

ワークアイテムアクティビティインスタ

ンスID

Filter.AllArchivedPlans LISTFIELD_PLAN_IDLISTFIELD_PLAN_NAME

プロセス定義IDプロセス定義名

Filter.AllArchivedProcesses LISTFIELD_PLAN_IDLISTFIELD_PROCESSINSTANCE_IDLISTFIELD_PROCESSINSTANCE_NAME

プロセス定義IDプロセスインスタンスIDプロセスインスタンス名

以下の定数は、ソート順を示します。

・ SORTORDER_ASCENDING(昇順)

・ SORTORDER_DESCENDING(降順)

- 69 -

Page 79: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

以下の定数は、SQLの演算子を示します。

・ SQLOP_EQUALTO (一致する)

・ SQLOP_GREATERTHAN(以上)

・ SQLOP_LESSTHAN(以下)

・ SQLOP_GREATERTHANOREQUALTO(より大きい)

・ SQLOP_LESSTHANOREQUALTO(より小さい)

・ SQLOP_NOTEQUALTO(一致しない)

・ SQLOP_LIKE(部分一致)

・ SQLOP_NOTLIKE(部分一致しない)

・ SQLOP_IN(含む)

フィルターを使用した例は、「5.3.3 ワークアイテムリストの作成」、「7.3.1 プロセス定義リストの作成」、および「7.4.1 プロセスインスタンス

リストの作成」を参照してください。

6.3.2 フィルターとソートのメソッド

フィルターおよびソートを行うには、以下のメソッドを利用します。これらのメソッドの利用方法を次節で示しています。

・ addFilter(): 取得するリストに対するフィールドを識別する定数のフィルター条件を追加します。パラメータに渡される値は、“where <リストのフィールドの列名> <SQL演算子> <指定する値>”という書式で記述します。

・ addFilter(): 取得するリストに対するUDAによるフィルター条件を追加します。パラメータに渡される値は、“where <UDA> <SQL演算子

> <指定する値>”という書式で記述します。

・ addSortOrder(): 取得するリストに対するフィールドを識別する定数のソート順を追加します。

・ addSortOrder(): 取得するリストに対するUDAによるソート順を追加します。

・ getNextBatch(): openBatchedList()で取得したオブジェクトのリストを引数batchSizeの数だけ返します。 後に取得するリストの数

は、引数batchSizeより小さい可能性があります。リスト内に返すエレメントが無い場合、nullが返されます。

詳細については、『API Javadocマニュアル』を参照してください。

6.3.3 メソッドの呼び出し手順

以下のサンプルは、メソッドの呼び出し順序を示しています。

wfol = WFObjectFactory.getWfObjectList()

wfol.addFilter(…)

wfol.addSortOrder(…)

Object[] listElements = null;

int batchSize = 10;

wfol.openBatchedList(…)

while ((listElements = wfol.getNextBatch(batchSize)) != null) {

// process elements in listElements array

}

openBatchedList()の呼出しは、addFilter()、addSortOrder()のいずれかを呼出した後かつ、getNextBatch()を呼出す前であることを確認

します。メソッドがほかの順序で呼び出された場合、WFObjectListの動作は保証されません。

6.3.4 リストに使用するUDAの識別

プロセス定義、プロセスインスタンス、およびワークアイテムのリストをUDAの値でフィルターすることができます。ユーザはUDAの値に

基づいたフィルター条件に一致するリストを取得することができます。たとえば、「UDAの変数の値が指定の値より大きいワークアイテ

ムをすべて取得 > 5000.*」などの条件です。それには、UDAにWorkListUDAフラグが設定されていることを確認してください。プロセ

ス定義をデザインするときに、DataItemRefインタフェースのmarkAsWorkListUDA()を使用して、このフラグを設定できます。詳細につ

いては、「6.5.2 ワークリストUDA」を参照してください。

- 70 -

Page 80: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

上記のように識別されていないUDAを使用してリストのフィルターやソートを行った場合、リストの動作は保証されません。

6.3.5 ソートとフィルター

リストは、フィールドを組み合わせてソートしたり、フィルターしたりすることができますが、以下の制限があります。

フィールドを識別する定数のソートと、UDAによるソートは同時に指定することができません。

以下の表は、フィールドまたはUDAフィルタ、およびソート順の有効な組み合わせを示しています。

1つのUDAフィルター 1つのUDAソート順 1つ以上のフィールドフィ

ルター

1つ以上のフィールドソー

ト順

1つのUDAフィルター -

1つのUDAソート順 同一(注)* -

1つ以上のフィールド

フィルター

有効 有効 -

1つ以上のフィールド

ソート順

有効 無効 有効 -

注: ソートとフィルターの両方が同一のUDA上で行われる必要があります。

6.3.6 バッチ処理の注意点

バッチでリストを取得することができます。データベース内のレコード数が多い場合、数件のレコードが必要な場合でも、リストを開くに

は時間がかかります。openBatchedListおよびgetNextBatch(int howMany)を使用して、リストをバッチで取得することができます。バッチ

処理は、フィルターとソートが影響します。すなわち、Interstage BPMは、フィルターおよびソートしたリストのバッチを取得します。目的

の結果を取得するには、「6.3.3 メソッドの呼び出し手順」の手順に従ってください。

注意

フィルターやソートを使用した場合、バッチの取得スピードとリスト全体の取得スピードは、フィルターやソートに使用したフィールドまたは

UDAの値の分散によって異なります。値の分散が高いほど、バッチを使用することによって効率性が高まります。

たとえば、プロセスインスタンスのリストがプロセス名でソートされていて、すべてのプロセスインスタンスが同じプロセス名の場合は、内

部的にバッチを取得すると、リスト全体を取得するよりも効率性が低くなります。それに対して、ほとんどのプロセスインスタンスが違うプ

ロセス名だった場合は、バッチを使用することによって効率性が高まります。

6.3.7 リストの更新通知

リストの更新通知は、ワークリストなどの更新をユーザに通知する機能です。バッチ、フィルター、ソート順などを使用していないリストに

対してサポートしています。以下のメソッドは、リストの更新通知機能を使用している場合にModelExceptionを送出します。

・ addFilter()

・ addSortOrder()

・ getNextBatch()

6.4 複数オブジェクトの情報の一括取得

WFDetailsListインタフェースを使用すると、複数のオブジェクトに関する情報を効率的に一括して取得できます。この機能は、一括処

理とも呼ばれます。

現在、インタフェースには、次の処理を行うメソッドがあります。

・ 複数のプロセスインスタンスのユーザ定義属性(UDA)の一括取得

・ 複数のワークアイテムの外向き矢印の一括取得

- 71 -

Page 81: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

ここでは、このインタフェースの使用方法の一般的な手順を説明します。複数のプロセスインスタンスのUDAを取得するプログラムの例

を挙げます。完全なプログラムコードはサンプルファイルBatchDetailsRetrieval.javaにあります。このサンプルファイルには、複数のワー

クアイテムの外向き矢印を取得する方法の例も含まれています。

複数のプロセスインスタンスのUDAを一括取得するには、以下の手順に従います。

1. UDAを取得したいプロセスインスタンスのIDのリストを用意します。そのためには、WFObjectListインタフェースが提供するプロ

セスインスタンスフィルターの1つを使用します。

以下のプログラム例では、一括処理機能の準備段階として、ログインユーザの活性プロセスインスタンスを取得しています。

WFObjectList list = WFObjectFactory.getWFObjectList(session);

list.openBatchedList(Filter.MyActiveProcesses); Object[] batch = list.getNextBatch(10);

フィルターの詳細については、「6.3 フィルターとソートのAPI」を参照してください。

2. プロセスインスタンスが見つかったら、それぞれのIDを配列に格納します。

if (batch == null) {

< ... >

return;

}

long[] idValues = new long[batch.length];

for (int i = 0; i < batch.length; i++) {

idValues[i] = ((ProcessInstance) batch[i]).getId();

}

3. その後の処理で必要でない場合、プロセスインスタンスのリストはクローズします。

list.closeList();

4. 前の手順で取得したすべてのプロセスインスタンスのUDAを取得します。そのためには、WFDetailsListのインスタンスを生成し、

getUDAsForProcessInstances()を呼びます。

WFDetailsList detailsList = WFObjectFactory.getWFDetailsList(session);

ProcessInstancesUDASet udaInfo = detailsList

.getUDAsForProcessInstances(idValues);

udaInfoオブジェクトがプロセスインスタンスのUDAをJava Mapに格納します。プロセスインスタンスのIDはキーとして使用され、

そのプロセスインスタンスのUDAを表すもう1つのJava Mapが値として使用されます。

次の例では、特定のプロセスインスタンスのUDAを取得します。

5. 特定のプロセスインスタンスのUDAを取得するには、ProcessInstancesUDASetクラスのgetUDAsForProcessInstance()を使用しま

す。

for (int i = 0; i < idValues.length; i++) {

Map udaData = udaInfo.getUDAsForProcessInstance(idValues[i]);

< ... >

}

この例では、プロセスインスタンスのUDAがudaDataという名前のJava Mapに格納されます。このMapは、UDAの名前をキーとし、

UDAData型のオブジェクトを値とします。UDADataオブジェクトは、個々のUDAの名前、データ型、値を格納します。

6. プロセスインスタンスの個々のUDAを処理するには、Java Iteratorを使用してプロセスインスタンスのUDAを反復処理します。

UDADataクラスのgetUdaName()、getUdaType()、getUdaValue()を使用すると、UDAの名前、データ型、値を取得できます。

以下の例では、Map udaDataの各要素で反復するのに必要なJava Iteratorを生成します。iterator.next()が返すオブジェクトはそ

れぞれUDADataオブジェクトにキャストされます。 終的に、UDAの名前、データ型、値を、その後の処理のために取得します。

Iterator iterator = udaData.keySet().iterator();

while (iterator.hasNext()) {

UDAData data = (UDAData) udaData.get(iterator.next());

System.out.println("¥tUDA name: '" + data.getUdaName() + "'");

System.out.println("¥tUDA type: '" + data.getUdaType() + "'");

- 72 -

Page 82: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

System.out.println("¥tUDA value: '" + data.getUdaValue() + "'¥n");

}

6.5 特別なユーザ定義属性のプロパティ

6.5.1 タイプXMLのユーザ定義属性でのワーク

プロセスで使用されるデータをモデル化するとき、XML形式に構造化されたデータを処理する場合があります。例えば、プロセス実行

の間に、外部システムを経由する場合などです。

Interstage BPMはXMLデータの特別なデータタイプを提供します。XML形式のユーザ定義属性(UDAs)にアクセスし、要素やシング

ルエレメント、属性と同様に全体のXML構造を操作します。XPath評価は、さらなる処理のためのXMLデータからコンポーネントを選

択するのに使用します。

XML形式のUDAデータを保存する前に、Interstage BPMサーバはデータが正しいフォームかをチェックします。正しいフォームのXMLデータのみ保存されます。任意に各UDAにXMLスキーマを指定して、そのスキーマに対してXMLデータを有効にできます。

他のUDAのようにXML形式のUDAsの作成、アップデート、読み込み、削除が可能です。XML形式のUDAsに以下の追加メソッドが

あります。

・ XSDスキーマの設定および取得

・ ファイルとしてUDA値を設定および取得

・ XPath式を使用してのUDA値を設定および取得。全体のXML構造、要素、およびシングルエレメントの値の設定および取得が可

能。

・ UDAのXMLコンテンツの有効化

XML形式のUDAマッピング時、ワークアイテムインタフェースのDataItemMappingElementクラスで

・ すべてのXML構造をすべてのXML構造にマッピング

・ XML形式の別のUDAにシングルエレメントをマッピング

・ 別のXML要素にXML要素をマッピング

・ すべてのXML構造にXML要素をマッピング

以下にXML形式のUDAsの利用例があります。サンプルコードの全体については、ComplexPlan.javaサンプルファイルを参照してくだ

さい。

XML形式UDAsを利用するには、以下の手順に従います。

1. UDAs追加する場合は、データタイプにTYPE_XMLを指定します。

DataItemRef dataRefOrder = procDef.addDataItemRef(XMLUDA_BOOKSTORE,

DataItemRef.TYPE_XML, XMLVAL_BOOKSTORE);

XMLUDA_BOOKSTORE定数はUDAの名で定義します。

private final static String XMLUDA_BOOKSTORE = "XMLBookstore";

XMLVAL_BOOKSTORE定数は以下のXML構造のUDA値を定義します。

private final static String XMLVAL_BOOKSTORE =

"<?xml version=¥"1.0¥" encoding=¥"ISO-8859-1¥"?>"

+ "<bookstore>"

+ "<book category=¥"COOKING¥">"

+ "<title lang=¥"en¥">Everyday Italian</title>"

+ "<author>Giada De Laurentiis</author>"

+ "<year>2005</year>"

+ "<price>30.00</price>"

+ "</book>"

+ "<book category=¥"CHILDREN¥">"

+ "<title lang=¥"en¥">Harry Potter</title>"

- 73 -

Page 83: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

+ "<author>J K. Rowling</author>"

+ "<year>2005</year>"

+ "<price>29.99</price>"

+ "</book>"

+ "<book category=¥"WEB¥">"

+ "<title lang=¥"en¥">XQuery Kick Start</title>"

+ "<author>James McGovern</author>"

+ "<author>Per Bothner</author>"

+ "<author>Kurt Cagle</author>"

+ "<author>James Linn</author>"

+ "<author>Vaidyanathan Nagarajan</author>"

+ "<year>2003</year>"

+ "<price>49.99</price>"

+ "</book>"

+ "<book category=¥"WEB¥">"

+ "<title lang=¥"en¥">Learning XML</title>"

+ "<author>Erik T. Ray</author>"

+ "<year>2003</year>"

+ "<price>39.95</price>" + "</book>" + "</bookstore>";

2. XML構造のシングルエレメントを読みこむには、XPath式を使用してエレメントを指定します。ここでは 初の本の価格です。

DataItem di = pi.getDataItem(XMLUDA_BOOKSTORE);

// retrieve the price for the first book

String price = di.getElementValue("/bookstore/book[1]/price/text()");

logger.log(Logger.DEBUG, "Price is: " + price);

3. 要素でのXMLノードの名前を読み込みます。ここでは2番目の本を定義するXMLノードの名前です。

org.w3c.dom.Node subNode = di.getSubTreeValue("/bookstore/book[2]");

logger.log(Logger.DEBUG, "Node name is: " +

subNode.getNodeName());

Interstage BPMがNodeインタフェースを提供するので、XMLノードの処理には必ずorg.w3c.dom.Nodeインタフェースを使用して

ください。

4. XMLエレメントの値を比較します。

String xPath = "/bookstore/book[3]/author/text()";

String expAuthor = "Erik T. Ray";

logger.log(Logger.DEBUG, "Author: " + di.getElementValue(xPath));

if (di.getElementValue(xPath).equals(expAuthor)) {

logger.log(Logger.DEBUG, "Expected author found");

6.5.2 ワークリストUDA多くのアプリケーションでは、作業者が次に行う作業のリストを表示する必要がありますが、その際、特定のUDAの値を表示するワーク

リストを表示することができます。一般のアクセスでは、ワークリストからUDAの値へのアクセスは遅くなることがあります。ワークリストUDAは、より高速なアクセス方法を提供しています。さらに、UDAをワークリストUDAとすることで、そのUDAのワークリストエレメントのリスト

をソートしたり、フィルターしたりすることができます。

ワークリストUDAは、ワークリストオブジェクトにオブジェクトとして含まれます。ワークリストオブジェクトが生成されると、アクティビティに

関係することなく同じ内容のUDA値が含まれます。これらの値は、ワークアイテムオブジェクトと共に含まれており、すぐに読み込むこと

ができます(プロセスインスタンス全体をモデルに読み込む必要はありません)。

Model APIを使用して特定のワークアイテムのUDA情報を取得するには、2つのメソッドを使用することができます。まず、ワークアイテ

ムオブジェクトを取得します。次に、getDataItems()を使用して、そのワークアイテムのすべてのUDA(DataItem)を取得するか、または

getWorklistDataItems()メソッドを使用して、ワークアイテムのDataItemで構成されているサブセットを取得します。

WorkItemインタフェースのgetWorklistDataItems()メソッドを使用するには、特定のDataItemをワークリストUDAとして、マークする必要

があります。プロセス定義をデザインするときに、DataItemRefインタフェースのmarkAsWorkListUDA()を使用して、このマークを設定

できます。

ワークリストUDA特有のメソッドには、以下のものがあります。

- 74 -

Page 84: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ markAsWorkListUDA(): UDAをワークリストUDAとしてマークします。

・ boolean isWorkListUDA(): UDAがワークリストUDAかどうかを確認します。

以下のサンプルコードでは、プロセス定義作成時に、UDAを定義し、それらをワークリストUDAとしてマークする方法を示しています。

プロセス定義への処理は、ComplexPlan.javaのサンプルファイルを参照してください。

protected final static String WLUDA_PRICE = "Price";

protected final static String WLUDA_QTY = "Qty";

protected final static String WLUDA_TOTAL = "Total";

//*** Definition of UDAs ***

DataItemRef udaPrice = plan.addDataItemRef(WLUDA_PRICE,

DataItemRef.TYPE_FLOAT, "0.0");

DataItemRef udaQty = plan.addDataItemRef(WLUDA_QTY,

DataItemRef.TYPE_INTEGER, "0");

DataItemRef udaTotal = plan.addDataItemRef(WLUDA_TOTAL,

DataItemRef.TYPE_FLOAT, "0.0");

//Mark the UDAs as Worklist UDAs.

udaPrice.markAsWorkListUDA(true);

udaQty.markAsWorkListUDA(true);

udaTotal.markAsWorkListUDA(true);

たとえば、これらのワークリストUDAを使用して、UDAの値をもとにしたフィルター条件に一致するプロセスインスタンスを取得すること

ができます。プログラミングサンプルは、ComplexPlan.javaサンプルファイルのlistProcsByUDA()メソッドを参照してください。

6.6 拡張属性の使用

Interstage BPMで拡張属性が定義できます。拡張属性はInterstage BPM用ではないその他の情報を保存します。定義、ノードおよび

矢印の処理に拡張属性を割り当てることができます。

拡張属性はXMLドキュメントとして指定されます。拡張属性値は常にString型です。以下のXMLスキーマは拡張属性の定型を定義し

ます。

<xsd:element name="ExtendedAttributes">

<xsd:complexType>

<xsd:sequence>

<xsd:element ref="xpdl:ExtendedAttribute" minOccurs="0"

maxOccurs="unbounded"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:element name="ExtendedAttribute">

<xsd:complexType mixed="true">

<xsd:choice minOccurs="0" maxOccurs="unbounded">

<xsd:any minOccurs="0" maxOccurs="unbounded"/>

</xsd:choice>

<xsd:attribute name="Name" type="xsd:NMTOKEN" use="required"/>

<xsd:attribute name="Value" type="xsd:string"/>

</xsd:complexType>

</xsd:element>

拡張属性を使用すると、XMLドキュメントはXMLスキーマを確実に満たします。以下のサンプルは有効なインスタンスです。

<ExtendedAttributes>

<ExtendedAttribute Name="SomeAttributeName" Value="Some value"/>

<ExtendedAttribute Name="AnotherAttributeName" Value="200"/>

</ExtendedAttributes>

プラン、ノード、および矢印インタフェースは拡張属性に関連する以下のメソッドを提供します。

・ setExtendedAttributes(org.w3c. dom.Document attrs): 拡張属性をプロセス定義、ノードまたは矢印に割り当てます。attrsは、割当

てられる拡張属性を含むXMLドキュメントです。

・ getExtendedAttributes(): プロセス定義、ノードまたは矢印のすべての拡張属性を含むXMLドキュメントに戻ります。

- 75 -

Page 85: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

ComplexPlan.javaは、拡張属性がどのように働くかを示すサンプルを含みます。サンプルプロセス定義CxPD_PurchaseOrderは、各国

で使用できるように作成されます。したがって、プロセス定義名やノード名といった特定のストリングは、各国語で利用できる必要があり

ます。拡張属性は言語特定名の保存に使用されます。

以降、拡張属性の割当て、取得について説明します。

6.6.1 拡張属性の割当て

プロセス定義、ノードまたは矢印に拡張属性を割り当てるには、以下の手順に従います。

1. エレメントに割り当てたい拡張属性を含むXMLドキュメントを作成します。

サンプルプログラムComplexPlan.javaは2つのXMLドキュメントを作成します。CxPD_PurchaseOrderプロセス定義の言語種名の

ためのものとActivityノードの言語種名のためのものです。以下のサンプルコードはプロセス定義の言語種名のために作成される

XMLドキュメントを示しています。

StringBuffer sb_xmlProcDef = new StringBuffer();

sb_xmlProcDef.append("<ExtendedAttributes>");

sb_xmlProcDef.append("<ExtendedAttribute Name=¥"DE¥" Value=¥"Kaufauftrag¥"/>");

sb_xmlProcDef.append("<ExtendedAttribute Name=¥"EN¥" Value=¥"Purchase Order¥"/>");

sb_xmlProcDef.append("<ExtendedAttribute Name=¥"FR¥" Value=¥"Contrat d'achat¥"/>");

sb_xmlProcDef.append("</ExtendedAttributes>");

InputStream in_xmlProcDef = new

ByteArrayInputStream(sb_xmlProcDef.toString().getBytes("UTF-8"));

これはActivityノードの言語特定名に作成されるXMLドキュメントです。

StringBuffer sb_xmlProcDef = new StringBuffer();

sb_xmlProcDef.append("<ExtendedAttributes>");

sb_xmlProcDef.append("<ExtendedAttribute Name=¥"DE¥" Value=¥"Bestellformular ausfuellen¥"/>");

sb_xmlProcDef.append("<ExtendedAttribute Name=¥"EN¥" Value=¥"Fill out Purchase Requisition¥"/

>");

sb_xmlProcDef.append("<ExtendedAttribute Name=¥"FR¥" Value=¥"Remplir le formulaire de commande¥

"/>");

sb_xmlProcDef.append("</ExtendedAttributes>");

InputStream in_xmlActivity = new

ByteArrayInputStream(sb_xmlProcDef.toString().getBytes("UTF-8"));

拡張属性に使用できる名前にはいくつかの制限があります。詳しくは、「6.6.4 拡張属性の名前」を参照してください。

2. 拡張属性を含むXMLドキュメントを読み込みます。

DocumentBuilderFactory dbf =

DocumentBuilderFactory.newInstance();

DocumentBuilder builder = dbf.newDocumentBuilder();

Document extAttPlan = builder.parse(in_xmlProcDef);

Document extAttNode = builder.parse(in_xmlActivity);

3. 拡張属性をエレメントに割り当てます。

4. 以下のサンプルコードは、プロセス定義とノードに拡張属性を割り当てる方法を示しています。

procDef.startEdit();

procDef.setExtendedAttributes(extAttPlan);

nodePR.setExtendedAttributes(extAttNode);

procDef.commitEdit();

いったん拡張属性をエレメントに割当てると、さらなる処理のためのそれらの取得にgetExtendedAttributes()を使用できます。

6.6.2 拡張属性値の取得

前提条件:「6.6.1 拡張属性の割当て」を参照して、拡張属性を要素に割り当てます。

特定の拡張属性値を取得するには、以下の手順に従います。

- 76 -

Page 86: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

1. 要素に割当てられた拡張属性を読み込みます。

以下のサンプルはプロセス定義に割当てられた拡張属性を読む方法を示しています。

Document resExtAttPlan = procDef.getExtendedAttributes();

2. XMLドキュメントの拡張属性の位置を特定するXPath式を構築します。以下のサンプルでは、exAttNameは取得される拡張属性

の名前を保存します。

String xpath = "/ExtendedAttributes/ExtendedAttribute[@Name=¥""

+ exAttName + "¥"]";

exAttNameに値ENがあれば、結果としてXPath式は以下のようになります。

"/ExtendedAttributes/ExtendedAttribute[@Name=¥"EN¥"]"

3. 拡張属性に対応するXMLノードを選択します。

org.w3c.dom.Node ndLang =

XPathAPI.selectSingleNode(resExtAttPlan, xpath);

XMLノードの結果例:

<ExtendedAttribute Name="EN" Value="Purchase Order"/>

4. 拡張属性値にアクセスするには、以下の設定をします。

String strRes =

ndLang.getAttributes().getNamedItem("Value").getNodeValue();

エレメントで拡張属性を割り当てない場合、getExtendedAttributes()かselectSingleNode()は、null値になります。

6.6.3 エレメントの全拡張属性の取得

前提条件:「6.6.1 拡張属性の割当て」を参照して、拡張属性をエレメントに割当てます。

特定のエレメントの全拡張属性を取得するには、以下の手順に従います。

1. XMLドキュメントの拡張属性の位置を特定するXPath式を構築します。

String xpath = "/ExtendedAttributes/ExtendedAttribute";

エレメントに割り当てられた拡張属性を読み込みます。以下のサンプルはプロセス定義のすべてのノードを取得して、拡張属性

がノードに割り当てられているかをチェックします。ノードに拡張属性がある場合、XMLノードのリストに割り当てられます。

Node[] nodes = procDef.getNodes();

for (int iNodeCnt=0; iNodeCnt<nodes.length; iNodeCnt++) {

Node tmpNode = nodes[iNodeCnt];

Document resExtAttNode = tmpNode.getExtendedAttributes();

if (resExtAttNode != null) {

NodeList nodelistNode =

XPathAPI.selectNodeList(resExtAttNode, xpath);

. . . }

}

2. XMLノードのリストにある特定の拡張属性にアクセスします。

for (int iNListCnt=0; iNListCnt<nodelistNode.getLength();

iNListCnt++) {

org.w3c.dom.Node exAttNode = nodelistNode.item(iNListCnt);

. . . }

nodelistNodeが以下のXMLノードを含むと仮定します。

- 77 -

Page 87: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

<ExtendedAttribute Name="DE"

Value="Bestellformular ausfuellen"/>

<ExtendedAttribute Name="EN"

Value="Fill out Purchase Requisition"/>

<ExtendedAttribute Name="FR"

Value="Remplir le formulaire de commande"/>

この場合、nodelistNode.item(1)は以下のXMLノードを戻します。

<ExtendedAttribute Name="EN"

Value="Fill out Purchase Requisition"/>

6.6.4 拡張属性の名前

拡張属性を定義するときは、それらの名前が確実にInterstage BPMかXPDL規格で使用される名前を妨げないようにします。

Interstage BPMへのネイティブ拡張属性

プロセス定義をXPDLに変換するとき、Interstage BPMは拡張属性にInterstage BPMにネイティブな情報をコード化します。以下はその

ネイティブ拡張属性にInterstage BPMで使用されたリストがあります。

注意

拡張属性値としてこれらの名前を使用しないでください。

プロセス定義がXPDLに変換されるとき、これらの属性値を持っているXMLノードは削除されます。Interstage BPMは内部のデータを

マッピングするのにこれらのノードを使用します。getExtendedAttributesメソッドを使用して、それらは拡張属性から抽出されます。

Associations

Artifacts

ChildPlan

ChildPlanId

CommitJavaActionSet

CommitScript

Coordinates

CustomNodeType

DataMapping

DataMappings

Description

EndPoint

EpilogueJavaActionSet

EpilogueScript

ExposedField

FormList

FormsList

InitJavaActionSet

InitScript

InTransaction

IsWorkItemUDA

- 78 -

Page 88: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

NodeType

Organization

ParentVersion

PrivateData

ProcessDefinitionId

ProcessOwnerRole

ProcessOwnerRoleJavaActionSet

ProcessOwnerRoleScript

ProcessTypeId

PrologueJavaActionSet

PrologueScript

RoleJavaActionSet

RoleScript

StartPoint

State

subProcessDefinitionURI

SWIM_LANES

TemplateIdentifier

TimerDefSet

Title

TriggerDefSet

VersionComment

ViewerScript

例: 以下のXMLフラグメントは二つの拡張属性、StartPoint、およびStartPoint1を定義します。この名前がInterstage BPMによってネイ

ティブ拡張属性の一つに使用されるので、StartPointの定義は不完全です。

<ExtendedAttributes xmlns:x="http://example.com">

<ExtendedAttribute Name="StartPoint">

<x:StartPoint>

PointA

</x:StartPoint>

</ExtendedAttribute>

<ExtendedAttribute Name="StartPoint1">

<x:StartPoint1>

PointB

</x:StartPoint1>

</ExtendedAttribute>

</ExtendedAttributes>

プロセス定義がXPDLに変換されるとき、StartPoint XMLノードは削除されます。結果としてXPDLフラグメントは以下のようになります。

<ExtendedAttributes xmlns:x="http://example.com">

<ExtendedAttribute Name="StartPoint1">

<x:StartPoint1>

PointB

</x:StartPoint1>

</ExtendedAttribute>

</ExtendedAttributes>

- 79 -

Page 89: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

6.6.5 拡張属性の名前空間

Interstage BPMはXPDL2.0規格に完全準拠の名前空間を意識したXPDLを生成します。

注意

拡張属性を使用しているなら、その名前を有効な名前空間のプレフィクスにすることをお薦めします。これで確実にInterstage BPMに

よって生成されたXPDLがXPDL規格に完全に準拠していることになります。

拡張属性を定義するときに名前空間を使用していないと、XPDL2.0規格に完全準拠の名前空間を意識したXPDLを生成するよう、

Interstage BPMはデフォルトibpm名前空間を加えます。

例1

以下のサンプルは名前空間xとyでプレフィクス拡張属性を定義します。:

<?xml version="1.0" encoding="UTF-8"?>

<ExtendedAttributes xmlns:x="http://example.com"

xmlns:y="http://example.net">

<ExtendedAttribute Name="myAttribute">

<x:myTag1>

myData1

</x:myTag1>

<y:myTag2>

<myTag3>

myData2

</myTag3>

</y:myTag2>

</ExtendedAttribute>

</ExtendedAttributes>

そのようなプロセス定義をインポートした後に、getExtendedAttributes()は以下のXMLドキュメントを戻します。

<?xml version="1.0" encoding="UTF-8"?>

<ExtendedAttributes xmlns="http://www.wfmc.org/2004/XPDL2.0alpha"

xmlns:xpdl="http://www.wfmc.org/2004/XPDL2.0alpha"

xmlns:ibpm="http://fujitsu.com/ibpm1" xmlns:x="http://example.com"

xmlns:y="http://example.net">

<ExtendedAttribute Name="myAttribute">

<x:myTag1>

myData1

</x:myTag1>

<y:myTag2>

<myTag3>

myData2

</myTag3>

</y:myTag2>

</ExtendedAttribute>

</ExtendedAttributes>

追加名前空間属性(ibpm名前空間とXPDL、2.0の標準の名前空間)がルートエレメントに追加されていることに注意してください。適切

な名前空間がオリジナルのXMLドキュメントに既に存在していたので、ExtendedAttributeエレメントの直系のエレメントはibpmでプレ

フィクスになっていません。

例2

このXMLフラグメントは名前空間なしで拡張属性を定義します。XPDL規格のコンテキストでは、ExtendedAttributeエレメントの子エレ

メントには前に置かれた名前空間がないのでこのXMLは無効です。

<!-- INVALID -->

<ExtendedAttributes>

<ExtendedAttribute Name="myAttribute">

- 80 -

Page 90: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

<myTag1>

myData1

</myTag1>

<myTag2>

<myTag3>

myData2

</myTag3>

</myTag2>

</ExtendedAttribute>

</ExtendedAttributes>

プロセス定義をインポートした後に、getExtendedAttributes()は以下のXMLドキュメントを戻します。

<?xml version="1.0" encoding="UTF-8"?>

<ExtendedAttributes xmlns="http://www.wfmc.org/2004/XPDL2.0alpha"

xmlns:xpdl="http://www.wfmc.org/2004/XPDL2.0alpha"

xmlns:ibpm="http://fujitsu.com/ibpm1">

<ExtendedAttribute Name="myAttribute">

<ibpm:myTag1>

myData1

</ibpm:myTag1>

<ibpm:myTag2>

<myTag3>

myData2

</myTag3>

</ibpm:myTag2>

</ExtendedAttribute>

</ExtendedAttributes>

戻ったXMLドキュメントは、以下2点で変化しています。

・ ibpm名前空間とXPDL2.0標準名前空間属性がルートエレメントに追加されました。

・ ibpmプレフィクスがExtendedAttributeエレメントの直系のエレメントに追加されました。

6.7 トランザクション制御

Interstage BPMのトランザクション制御メカニズムは、プロセス実行中の特定ポイントへのロールバックトランザクションを設定できます。

このメカニズムで、システム全体のパフォーマンスも向上します。

プロセスは多くの場合、ノードの連続で構成されます。ノードの完了後、トランザクションを開いたままにしておくかどうかを決めることが

できます。トランザクションが開いたままの場合、そのプロセスの次のノードが同じトランザクション内で処理されることになります。

以下の点を考慮します。

・ パフォーマンス: トランザクションをコミットすると、すべてのデータがデータベースに保存され、後続のトランザクションを開始するた

めに、データベースから再度すべてのデータを読み取ります。簡単な演算を行うノードが長く連なっている(たとえば、多くの選択

肢から方向を選択する枝分かれしたノードが連なっているなど)場合、データベースに毎回保存すると負荷が大きくなります。

・ エラー時のロールバック: プロセスの処理中に低レベルのエラーが発生した場合、現在のトランザクションは 後にコミットされたポ

イントにロールバックします。同一トランザクション内に4つのノードが存在した場合、エラーが起きると、4つのノードすべてがロール

バックし、再スタート時には4つすべてが再度実行されます。トランザクションを途中でコミットすると、そのポイントまでしかロールバッ

クされないということになります。

Model APIを使用してトランザクションを制御する

com.fujitsu.iflow.model.workflow.Nodeインタフェースには、トランザクションを制御する機能をサポートする2つのメソッドがあります。そ

れらは、以下のとおりです。

・ setNodeInTxn(): ノードにトランザクションフラグを設定します。トランザクションフラグは、ノードが完了したとき、トランザクションをコ

ミットすべきかどうかを決定するために使用します。

- 81 -

Page 91: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ getNodeTxnStatus(): ノードのトランザクションの状態を取得します。同じトランザクション内で、そのノードが完了に設定されたかど

うかによって決まります。

これらのメソッド、または一般的なModel APIの詳細については、『API Javadocマニュアル』を参照します。

次のコミット操作で自動的にトランザクションをコミットするノードは、次のようにsetNodeInTxn()をtrueに設定します。

fillOutNode.setNodeInTxn(true);

ノードのトランザクション状態を確認するには、getNodeTxnStatus()を次のように使用します。

logger.log(Logger.INFO, "");

logger.log(Logger.INFO, "Get status of node transaction");

boolean nodeTxnStatus =

workItem.getNodeInstance().getNodeTxnStatus();

logger.log(Logger.INFO, "Status: " + nodeTxnStatus);

完了ノードの定義については、ComplexPlan.javaおよびProcessExecution.javaのサンプルを参照してください。

外部システムのロールバックトランザクション

トランザクションがロールバックされてプロセスインスタンスがエラー状態に設定される前に「クリーンアップ」を実行するJava Actionを定

義することもできます。これには、Java Actionセット内のすべてのJava Actionのロールバックが含まれます。プロセスインスタンスがエ

ラー状態に設定される前に、エラー発生時の通知メールの送信などの一般的なアクションを実行したり、何らかの特別なアクションを実

行することができます。

Java Actionに対してエラー処理を定義しない場合、このJava Actionで例外がスローされると、トランザクションがロールバックされます。

ただし、ロールバックは、Interstage BPMアプリケーションサーバのコンテキストでの変更に対してのみ実行可能です。外部システムの

トランザクション(データベースへの行の追加など)は、ロールバックできません。このため、場合によっては、トランザクションで使用され

たすべてのシステムを一貫した状態に保つために、外部システムを手動でクリーンアップする必要があります。必要な場合は、補償ア

クションセットを使用できます。

詳細については、「6.2.8 Java Actionのエラー処理」を参照してください。

6.8 トリガ

トリガの目的は、データを移動することです。これは、一般的に、外部システムのデータソースから送られてきたXMLデータファイルを

Interstage BPMのプロセスインスタンスに移動することを指します。これらのプロセスインスタンスは、受信したXMLデータファイルによっ

て開始されるか、または制御され、そのプロセスインスタンスはソースデータのデータを使用する機能を実行します。このXMLデータ

ファイルを、Eventデータファイルと呼びます。

トリガは、イベントデータファイルを認識するように設定することができます。それによって、データがInterstage BPMのプロセスインスタンスの

UDAにマップされるか、またはトリガがイベントデータファイルを直接使用して、データを定義されたUDAに書き込みます。

トリガは用途が広く、プロセス定義、Event Activity(Trigger)ノード、またはActivityノードに関連付けることができます。それぞれのトリガ

には、別々の動作範囲があります。

・ プロセス定義レベルで定義した場合、トリガは新しいプロセスインスタンスを生成し、開始します。

・ ノードレベルで定義した場合、トリガは選択をして、プロセスの実行を次のノードに進めます。

トリガは2つのコンポーネントを含んでいます。1つはトリガを起動するEvent、もう1つはトリガが実行されたときにとるアクションです。

6.8.1 トリガの機能

イベントデータファイル(XMLファイル)は、外部データソースからInterstage BPMのFile Listenerの設定内容に従って指定したディレク

トリに送られます。トリガハンドラは、Interstage BPMで構成されているすべてのトリガを確認し、受信したXMLファイルについてFile Listenerがトリガハンドラに通知した場合にそのトリガを活性化します。トリガは、以下に示すように、その定義に従って動作します。

・ プロセス定義レベルのトリガの場合は、トリガが定義されているプロセス定義からプロセスインスタンスを開始し、トリガ定義に指定さ

れたデータマッピングに従って、XMLデータをプロセスのUDAに移動します。

・ Activityノードレベルのトリガの場合は、トリガが定義されているプロセスのアクティビティを選択し、トリガ定義に指定されたデータ

マッピングに従って、XMLデータをプロセスインスタンスのUDAに移動します。

- 82 -

Page 92: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

ト リ ガ は File Listener だ け で は 開 始 さ れ ま せ ん 。 com.fujitsu.iflow.model.workflow パ ッ ケ ー ジ 内 の Model API のWFObjectFactory.processTriggerEventメソッドを明示的に使用する必要があります。このメソッドは、XML形式で提供された、活性中の

全トリガ定義のイベントデータを処理します。

トリガの状態

トリガの状態は、デフォルト、活性中、非活性のどれかになります。トリガの状態は、定義レベルでのプロパティです。つまり、

ProcessInstance.getTriggers()を呼び出すなどの方法で、インスタンスレベルで取得したトリガを変更すると、同じプロセス定義に属する

すべてのプロセスインスタンスのトリガが影響を受けます。プロセス定義またはプロセスインスタンスの状態が変化しても、それに含まれ

るトリガの状態は影響を受けません。

制御条件

トリガは、プロセス定義ではなくプロセスインスタンスで動作するようにデザインされている場合があります。その場合は、制御条件を設

定して、トリガが開始されるときに動作対象の適切なプロセスインスタンスを特定することができます。制御条件を設定しないと、指定さ

れたディレクトリ内でFile Listenerが新しいXMLファイルを検出するたびにトリガが開始されます。

たとえば、プロセス定義レベルのトリガの場合は、次のようになります。複数のプロセス定義にトリガを定義した場合は、File ListenerがXMLファイルを検出するたびに、それぞれのプロセス定義用のプロセスインスタンスが作成されます。つまり、XMLファイルは、プロセス定

義の数だけプロセスインスタンスを生成することを意味します。制御条件を指定することで、このような動作を回避し、XMLファイルの内

容に応じてプロセスインスタンスを作成することができます。XMLファイルの内容が制御条件に一致した場合にだけトリガが開始(プロ

セスインスタンスが作成)されます。

制御条件はUDAで操作します。使用する各属性について、XPath式で送られてくるイベントデータのエレメントを指定します。トリガが

開始されると、指定した属性の値が受信したEventの対応するエレメントの値と一致するプロセスだけが選択されます。

アクションの詳細

アクションの詳細には、トリガが実行する操作を定義します。各トリガは1つの種類の操作を扱うように定義されます。つまり、アクティビ

ティで選択を行うように定義されているトリガが、プロセスを開始することはできません。

Activityノードレベルのトリガ(選択トリガ)では、addAction(String, String)メソッドを使用して、実行可能なアクションを指定する必要があ

ります。 初のパラメータには、2番目のパラメータに指定された条件がtrueの場合に実行される外向き矢印の名前を指定します。

トリガをイベントアクティビティノードで定義する場合、このノードは外向き矢印を1つだけしか持てないため、1つのアクションを定義する

必要があります。

トリガをアクティビティノードで定義する場合、定義可能なアクションの数は、Activityノードに定義された外向き矢印の数によって異な

ります。メソッドの2番目のパラメータに指定されている条件を評価する順序は、アクションの順序によって決まります。index [0]のアク

ションの条件が 初に評価されます。この条件がtrueの場合、そのほかのアクションの条件は評価されません。プロセスインスタンスは、

条件がtrueであったアクションに定義された矢印を使用して続行します。

6.8.2 トリガの定義

ここでは、トリガをプロセス定義レベルで定義する方法を説明します。ここで紹介されているプログラミング例のすべてのコードは、

TriggerTimerSample.javaサンプルファイル内にあります。

注意

TriggerTimerSample.javaは、トリガをActivityノードに追加する別の例を含みます。Event Activity(Trigger)ノードで定義するトリガの詳

細については、「6.9 Event Activity(Trigger)ノードの使用」を参照してください。

トリガを定義する方法について説明します。

1. File Listenerを設定することにより、受信したイベントデータファイルが保存されるディレクトリ内を調査して、トリガが開始されま

す。File Listenerの設定とテストの方法に関しては、「6.10 File Listener」を参照してください。

- 83 -

Page 93: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

2. プロセス定義に関連するUDAを作成します。

サンプルファイル内では、以下のUDAが作成されます。

plan.addDataItemRef("OrderID",

DataItemRef.TYPE_STRING, "Initial Value");

plan.addDataItemRef("OrderPerson",

DataItemRef.TYPE_STRING,"Initial Value");

plan.addDataItemRef("Name",

DataItemRef.TYPE_STRING, "Initial Value");

plan.addDataItemRef("Address",

DataItemRef.TYPE_STRING, "Initial Value");

plan.addDataItemRef("City",

DataItemRef.TYPE_STRING, "Initial Value");

plan.addDataItemRef("State",

DataItemRef.TYPE_STRING, "Initial Value");

plan.addDataItemRef("ZIP",

DataItemRef.TYPE_STRING, "Initial Value");

plan.addDataItemRef("Title",

DataItemRef.TYPE_STRING, "Initial Value");

plan.addDataItemRef("Note",

DataItemRef.TYPE_STRING, "Initial Value");

plan.addDataItemRef("Quantity",

DataItemRef.TYPE_INTEGER, "1");

plan.addDataItemRef("Price",

DataItemRef.TYPE_BIGDECIMAL, "0.00");

3. プロセス定義にトリガを追加します。たとえば、プロセス定義レベルのトリガを追加して、制御条件を定義し、その状態を活性中に

します。

以下のサンプルでは、2つの制御条件が定義されます。 初の制御条件は商品の価格の値が10より大きいこと、2番目の制御条

件は受取人名が“Pete Gagnet”であることが記載されています。

TriggerDef myTrigger = plan.addTrigger("myTrigger",

TriggerDef.TYPE_START_PROCESS);

myTrigger.setDescription("プロセスインスタンスを開始します。");

// 制御条件を追加します。

String[] conditions = new String[2];

conditions[0] = "toFloat(eventData.getXMLData

( ¥"/shiporder/item/price/text()¥" )) > 10";

conditions[1] = "eventData.getXMLData

( ¥"/shiporder/shipto/name/text()¥" ) == ¥"Pete Gagnet¥"";

myTrigger.setControlConditions(conditions);

// トリガを活性化します。

myTrigger.setState(TriggerDef.STATE_ACTIVE);

4. トリガを起動し、XMLファイルからイベントエレメントの値を抽出してUDAに値を格納するためのマッピングを指定します。以下の

例を参照してください。

myTrigger.addDataMap("OrderID","shiporder/@orderid");

myTrigger.addDataMap("OrderPerson","shiporder/orderperson/text()");

myTrigger.addDataMap("Name","shiporder/shipto/name/text()");

myTrigger.addDataMap("Address","shiporder/shipto/address/text()");

myTrigger.addDataMap("City","shiporder/shipto/city/text()");

myTrigger.addDataMap("State","shiporder/shipto/state/text()");

myTrigger.addDataMap("ZIP","shiporder/shipto/zip/text()");

myTrigger.addDataMap("Title","shiporder/item/title/text()");

myTrigger.addDataMap("Note","shiporder/item/note/text()");

myTrigger.addDataMap("Quantity","shiporder/item/quantity/text()");

myTrigger.addDataMap("Price","shiporder/item/price/text()");

- 84 -

Page 94: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

5. トリガがプロセス定義のインスタンスを開始するために使用するXMLファイルを作成し、そのファイルに値を入力します。既存のXMLファイルを使用するか、またはAPIを使用して次のように作成します。

// Create XML file in the folder specified by the FILELISTENER_PATH File xml = new

File(FILELISTENER_PATH + "shiporder.xml");

// XMLデータをファイルに書き込みます。

FileWriter fw = new FileWriter(xml);

BufferedWriter bw = new BufferedWriter(fw);

bw.write("<?xml version=¥"1.0¥" encoding=¥

"ISO-8859-1¥"?>"); bw.newLine();

bw.write("<shiporder orderid=¥"889923¥">"); bw.newLine();

bw.write("<orderperson>Joan Smith</orderperson>");

bw.newLine();

bw.write("<shipto>");bw.newLine();

bw.write("<name>Pete Gagnet</name>"); bw.newLine();

bw.write(" <address>325 Eastwood Ave</address>");

bw.newLine();

bw.write("<city>" + CITY_OF_ORDER + "</city>"); bw.newLine();

bw.write("<state>OH</state>"); bw.newLine();

bw.write("<zip>20131-1234</zip>"); bw.newLine();

bw.write("</shipto>");bw.newLine();

bw.write("<item>");bw.newLine(); String titleStr = "<title>" + ITEM_TITLE + "</title>";

bw.write("(titleStr);bw.newLine();

bw.write("<note>Special Edition</note>");bw.newLine();titleStr = "<quantity>" + QUANTITY_ORDER

+ "</quantity>";

bw.write("(titleStr);bw.newLine();

bw.write("<price>39.99</price>");bw.newLine();

bw.write("</item>");bw.newLine();

bw.write("</shiporder>");bw.newLine();

bw.close();

注意

XMLファイルにデータを指定する場合、Interstage BPMサーバに一致するデータフォーマットを使用します。

6.9 Event Activity(Trigger)ノードの使用

Event Activity(Trigger)ノードは、プロセス内の、外部イベントドリブンのステップを表します。各Event Activity(Trigger)ノードは、外部

システムからデータ(XMLファイルなど)が送られてきた際に実行すべき定義済みトリガを含みます。データを受信すると、トリガはその

定義に従って、データをユーザ定義属性(UDA)に移動します。そして、トリガがアクティビティを選択し、プロセスの実行は次のノード

に進みます。人の操作は不要です。

ここでは、Event Activity(Trigger)ノードの使用方法の一般的な手順を説明します。ここで示す例の完全なプログラムコードは、サンプ

ルファイルEventActivityNodeSample.javaにあります。

トリガとその動作の全般については、「6.8 トリガ」を参照してください。

Event Activity(Trigger)ノードを使用するには、以下の手順に従います。

1. addNode()を使用して、Event Activity(Trigger)ノードを生成します。定数nodeTypeをTYPE_EVENT_ACTIVITYに設定します。

Node activity = plan.addNode("EventActivity",

Node.TYPE_EVENT_ACTIVITY);

2. 以下のように、Event Activity(Trigger)ノードに外向き矢印を1つだけ追加します。

plan.addArrow("Exit", activity, exit);

3. 前の手順で作成したEvent Activity(Trigger)ノードの選択トリガを定義します。

TriggerDef trigger = activity.addTrigger("ChoiceTrigger",

TriggerDef.TYPE_MAKE_CHOICE);

- 85 -

Page 95: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

4. 必要な場合は、制御条件と相関マップを追加します。

制御条件は、受け取ったXMLデータの内容がトリガにとって有効かどうかをチェックします。相関マップは、トリガが動作するプロ

セスインスタンスを選択するのに使用します。

次の例は、外部システムから受け取ったXMLデータの<doMakeChoice>要素の値がtrueの場合にトリガを作動させるための定義

です。トリガは、特定のUDAが受け取ったXMLデータの<newValue>要素の値と同じ場合のみ、プロセスインスタンスに対して作

動します。

trigger.addControlCondition("eventData.getXMLData"

+ "('/root/doMakeChoice/text()[1]') == 'true'");

trigger.addCorrelationMap(UDA_NAME, "/root/currentValue/text()[1]");

5. メソッドaddAction(String, String)を使用して、トリガが選択する外向き矢印を指定します。

初のパラメタは、第2のパラメタに指定された条件がtrueの場合に選択すべき外向き矢印の名前を指定します。

このプログラム例では、特定のUDAの値が10未満の場合、トリガが外向き矢印を選択します。

trigger.addAction(exit.getName(), "uda." + UDA_NAME + " < 10");

6. 受け取ったXMLデータの情報のうち、さらに処理が必要なものをUDAにマッピングします。

このプログラム例では、<newValue>要素の値からUDAへのマッピングという、1つのデータマッピングだけを定義しています。

trigger.addDataMap(UDA_NAME, "/root/newValue/text()[1]"

7. トリガの状態をアクティブにします。

trigger.setState(TriggerDef.STATE_ACTIVE);

Event ActivityTriggerノードの定義は、これで完了です。実行時にトリガを作動させるには、受け取ったXMLデータの一部をトリガに送

る必要があります。このデータはサンプルプログラムが生成し、WFObjectFactory.processTriggerEvent()を使用してトリガに送ります。

StringBuffer bw = new StringBuffer();

bw.append("<?xml version=¥"1.0¥" encoding=¥"ISO-8859-1¥"?>");

bw.append("<root>");

bw.append("<currentValue>5</currentValue>");

bw.append("<doMakeChoice>true</doMakeChoice>");

bw.append("<newValue>7</newValue>");

bw.append("</root>");

WFObjectFactory.processTriggerEvent(bw.toString(), adminSession);

6.10 File ListenerFile Listenerは、指定されたディレクトリ内のファイルを監視します。ファイルハンドラは、新しいファイルや、新しく変更されたファイルを

検出すると、Interstage BPMのファイルハンドラに通知し、Interstage BPMプロセスインスタンスを開始したり、アクティビティの選択を行っ

たりする自動機能を実行できるようにします。File Listenerは、一般的に、Interstage BPMをほかのエンタープライズアプリケーションと

統合するために使用します。

6.10.1 File Listenerの使用

File Listenerを使用する方法について説明します。

1. <Interstage BPMサーバのインストールディレクトリ>/server/instance/default/resources 内のFile Listenerの環境設定ファイル

fileListenerConf.xmlを確認し、正しい監視ディレクトリが指定されているかどうかを確認します。

デフォルトのFile Listener設定では、filelistenerディレクトリが監視ディレクトリとして設定されています。別のディレクトリを監視ディ

レクトリとして指定する場合は、このファイルを編集して、希望のディレクトリを指定します。パラメータの詳細な説明は、「6.10.2File Listenerの設定」を参照してください。

2. File Listener環境設定ファイルを変更した場合は、Interstage BPMサーバを再起動します。

- 86 -

Page 96: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

3. プロセス定義を作成し、File Listenerにプロセスインスタンスを開始させるトリガを追加します。手順については、「6.8 トリガ」を参

照してください。

4. トリガとなるイベントデータファイル(XMLファイル)を作成し、filelistenerディレクトリに保存します。手順については、「6.8 トリガ」を

参照してください。

トリガが作動中の場合、イベントデータファイルは消え、トリガを含むプロセス定義からプロセスインスタンスが開始されます。トリ

ガが作動中ではない場合、イベントデータファイルはfilelistener¥errorディレクトリに移動します。

Interstage BPM サーバ configurationからFileListenerConfigFileパラメータを除いて、システム上のFile Listenerを一時停止し、InterstageBPMサーバを再起動することができます。このパラメータの詳細については、『Interstage BPMサーバ 管理者ガイド』を参照してくださ

い。

6.10.2 File Listenerの設定

File Listenerの環境設定ファイル、fileListenerConf.xmlは、<Interstage BPMサーバのインストールディレクトリ>/server/instance/default/resources に格納されています。

以下は、fileListenerConf.xml環境設定ファイルの例です。

<FileListener>

<Directory>

<Path>C:/Fujitsu/InterstageBPM/server/instance/default/filelistener</Path>

<ScanInterval>60000</ScanInterval>

<StabilizationPeriod>2000</StabilizationPeriod>

<PostProcessing>

<onSuccess>

<Delete></Delete>

</onSuccess>

<onError>

<Move>

C:/Fujitsu/InterstageBPM/server/instance/default/filelistener/error

</Move>

</onError>

</PostProcessing>

</Directory>

</FileListener>

以下の表は、fileListenerConf.xmlで使用されているXMLタグを説明しています。

タグ 説明

<Directory> 新しいファイル、または新しく変更されたファイルを監視するディレクトリの環境設定パ

ラメータが含まれます。

<Path> 監視するディレクトリのパスです。

<ScanInterval> ディレクトリ内に新しいファイルがあるかどうかをスキャンする間隔を指定します。(単位

はミリ秒)

<StabilizationPeriod> ファイルが処理される前に、ファイルのサイズを監視し、変更の有無を確認するための

設定です。(単位はミリ秒)

<PostProcessing><onSuccess> ファイルの処理に成功した場合にとるアクションです。アクションとして設定できるの

は、<Delete>または<Move>です。

<PostProcessing><onError> ファイルの処理に成功しなかった場合にとるアクションです。アクションとして設定でき

るのは、<Delete>または<Move>です。

<Delete> ファイルを削除します。

<Move> 指定されたディレクトリにファイルを移動します。

- 87 -

Page 97: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

6.11 エージェントの使用

Interstage BPMのエージェントは、自動的に実行され、ユーザの代わりとして振る舞います。エージェントを使用して、Interstage BPMの

外のシステムにアクセスすることができます。接続する外部システムは、レガシーシステムの場合も、Webサービスの場合もあります。

エージェントを使用して、これらの外部サービスをInterstage BPMプロセスインスタンスに組み入れることができます。

注意

Interstage BPMエージェントが使用できるように外部のライブラリを含めるには、外部クラスかJARを、Interstage BPMのライブラリ拡張

ディレクトリ(<Interstage BPMサーバのインストールディレクトリ>/server/instance/default/lib/ext)へコピーします。

クラスタインストール環境でエージェントを使用する場合は、各クラスタノードにエージェントを設定します。エージェントの設定はすべ

てのクラスタノードで完全に一致しなければなりません。

6.11.1 エージェントの概要

エージェントは、agentsConfig.xmlというXMLファイルを使用して構成されます。このファイルは、Interstage BPMのエージェントのディレクトリ

(<Interstage BPMサーバのインストールディレクトリ>/server/instance/default/agents )にあります。

エージェントがagentsConfig.xmlに追加され、Interstage BPMで構成されると、エージェントをActivityノードに割当てることで、InterstageBPMのプロセスインスタンス内でアクティビティとして実行することができます。これにより、エージェントはアクティビティの代わりに実行

されます。実際は、ワークアイテムが、そのエージェントと同じ名前のシステムユーザに割当てられます。

agentsConfig.xml環境設定ファイル

agentsConfig.xmlのサンプルコードを以下に示します。

<ActionAgentList>

<ActionAgent>

<Name>@TestFrameAgent</Name>

<Description>テスト用です。最初の矢印を返します。</Description>

<RetryInterval>20</RetryInterval>

<EscalationInterval>1</EscalationInterval>

<ClassName>com.fujitsu.iflowqa.testframe.TestFrameAgent

</ClassName>

<ClassPath>IBPMROOT/classes</ClassPath>

<ConfigFile></ConfigFile>

</ActionAgent>

</ActionAgentList>

以下の表は、agentsConfig.xmlで使用されているXMLタグを説明しています。

タグ 説明

<ActionAgentList> エージェントの一覧が記述されます。

<ActionAgent> 単一のエージェント定義が記述されます。エージェントごとに独自の定義をこのタグ内に記述

する必要があります。

<Name> エージェントの名前です。名前の先頭は必ず「@」にする必要があります。これは、エージェン

トであることを指定します。この名前はActivityノードの担当者として指定し、そのアクティビティを

「エージェント」アクティビティにする必要があります。つまり、これは通常のInterstage BPMアク

ティビティではなく、エージェントとして機能します。

<Description> エージェントの簡単な説明です。通常は、機能について説明します。

<RetryInterval> エージェントは、外部サービスの呼出しに失敗した場合、指定された間隔をおいてその呼出

しを再試行します。RetryIntervalには、その試行間隔を秒単位で指定します。

<EscalationInterval> システム管理者にメールで通知する場合に、失敗回数のしきい値を指定します。

メールは、次のエスカレーションに進むたびに送られます。たとえば、値が1の場合は、エー

ジェントが失敗するたびにシステム管理者に通知されます。

- 88 -

Page 98: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

タグ 説明

メールは、Interstage BPMサーバのServerEmailAddressパラメータに指定されたアドレスに送

られます。

<ClassName> エージェントに関連付けられているJavaクラスの名前です。このクラスは、エージェントの機能

部分です。

<ClassPath> エージェントに関連付けられているJavaクラスのクラスパスです。

<ConfigFile> エージェントが使用する環境設定ファイルの完全修飾名です。

エージェントクラス

agentsConfig.xmlの<ClassName>タグに指定されたクラスは、エージェントが外部サービスにアクセスする手段です。以降は、エージェ

ントクラスと呼びます。エージェントクラスは、次のインタフェースを実装する必要があります。

package com.fujitsu.iflow.server.intf;

public interface ActionAgentInvoke

{

public String invokeService( ServerEnactmentContext sec, String configFile) throws

Exception;

}

エージェントクラスは、invokeService()を使用して外部サービスを呼び出し、そのサービスからデータを受け取ります。次に、サービス

のアクションを指示するInterstage BPMに、STRING型のデータを返します。

エージェントクラスの実行結果は3つあります。それらは、以下のとおりです。

・ NULL STRING型、または空のSTRING型のデータが返された場合: エージェントはサービスの実行を繰り返し試行します。再試

行の間隔は、<RetryInterval>タグに指定されます。エージェントは、<EscalationInterval>タグに指定された回数だけ実行を試み、

そのたびにInterstage BPMサーバのServerEmailAddressパラメータに指定されたアドレスにメールを送ります。

・ そのほかのSTRING型のデータが返された場合: エージェントは、そのデータがエージェントアクティビティを起点とした外向き矢印

の名前の1つと一致するかどうかを確認します。一致する場合、プロセスインスタンスはその一致する矢印に従って続行します。STRING型の戻り値が矢印に一致しない場合、エージェントはcannot-find-arrow例外を送出し、プロセスインスタンスはエラー状態になりま

す。

・ エージェントクラスが例外を送出した場合: エージェントはInterstage BPMにその例外を送り、プロセスインスタンスはエラー状態に

なります。

6.11.2 FTPエージェントの構成

FTPエージェントは、そのエージェントが含まれるプロセスインスタンスに添付されたファイルを自動的に転送します。すべてのエージェ

ントと同様に、FTPエージェントもInterstage BPMのアクティビティを代行します。FTPエージェントのアクティビティが含まれるプロセス定

義から開始されたプロセスインスタンスは、添付されているファイルを自動的に転送します。添付ファイルは、Interstage BPMサーバか

ら接続可能な、どのコンピュータのFTPサーバにも転送されます。

FTPエージェントは、すべてのエージェントと同様に、agentsConfig.xmlで構成されます。この環境設定ファイルの<ActionAgent>セク

ションには、FTPエージェントのデフォルトの設定が含まれています。通常、このファイルのFTPエージェントの設定を変更する必要は

ありません。

FTPエージェントは、Interstage BPMのServiceAgentクラスを使用します。また、ftp.xmlという特別なFTPエージェントの環境設定ファイ

ルも使用します。この環境設定ファイルは、FTPホストのアドレスなど、FTPの設定を定義します。この環境設定ファイルを確認して、使

用する環境に合わせてください。

ftp.xml環境設定ファイル

FTPエージェントの環境設定ファイルであるftp.xmlは、Interstage BPMサーバインストール環境内のエージェントディレクトリ(InterstageBPM Server Installation Directory>/server/instance/default/agents)にあります。

FTPエージェントを構成するftp.xmlファイルのサンプルを以下に示します。

- 89 -

Page 99: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

<Services>

<Service>

<ServiceType>FTP</ServiceType>

<ServiceStatusUDA>AgentServiceStatus</ServiceStatusUDA>

<ServiceResultUDA>AgentServiceResult</ServiceResultUDA>

<ServiceSpecificInfo>

<FTPHost><HOSTNAME or IP Address></FTPHost>

<FTPPort></FTPPort>

<FTPUser>anonymous</FTPUser>

<FTPPassword></FTPPassword>

<FTPType>ASCII</FTPType>

<FTPAppend>FALSE</FTPAppend>

<FTPDirectory>%%REMOTE_FTP_DIRECTORY%%

</FTPDirectory>

<FTPFileNames>%%REMOTE_FTP_FILES%%</FTPFileNames>

<Documents>%%OUTGOING_FILES%%</Documents>

</ServiceSpecificInfo>

</Service>

</Services>

このファイル内の一部のタグは、ServiceAgentクラスを使用するすべてのエージェントが利用します。一部のタグはFTPエージェント固

有のものです。

以下の表は、ftp.xmlで使用されているXMLタグを説明しています。

タグ 説明

<ServiceType> FTPエージェントのサービスタイプは、常にFTPです。サービスタイプが指定されてい

ない場合や、サービスタイプが無効な場合、プロセスインスタンスはエラー状態にな

ります。

このタグは、ServiceAgentクラスを使用するすべてのエージェントが利用します。

<ServiceStatusUDA> FTPエージェントのアクティビティの状態を保存するUDAの名前です。設定可能な値

は、DoneまたはFailedです。このタグを削除してもFTPエージェントには何も影響があ

りませんが、ユーザはFTPエージェントのアクティビティの状態を確認できなくなりま

す。

<ServiceResultUDA> FTPエージェントが例外を送出した場合に使用する、エラーメッセージを保存するUDAの名前です。このタグを削除してもFTPエージェントには何も影響がありませんが、FTPエージェントが失敗しても、ユーザはエラーが発生したことを確認できなくなります。

<FTPHost> 転送されたファイルを受信するローカルコンピュータのサーバ名またはIPアドレスで

す。デフォルト値は127.0.0.1 (ローカルコンピュータ)です。FTPホストが指定されてい

ない場合や、FTPホストが無効な場合、ファイルは、FTPサーバが使用できる場合は、

そこに転送されます。

このタグはFTPエージェント固有のものです。

<FTPPort> FTPサーバが使用するポートです。ポートが指定されていない場合は、デフォルトの

FTPポートである21が使用されます。

このタグはFTPエージェント固有のものです。

<FTPUser> ファイルを転送するFTPユーザのユーザ名です。ユーザ名が無効な場合、ファイル

の転送は失敗し、プロセスインスタンスはエラー状態になります。

このタグはFTPエージェント固有のものです。

<FTPPassword> ファイルを転送するFTPユーザのパスワードです。

このタグはFTPエージェント固有のものです。

<FTPType> 転送されるファイルのタイプです。設定可能な値は、ASCIIまたはBINARYです。デ

フォルト値はBINARYです。

テキストファイルを転送する場合は、ASCIIを使用します。バイナリファイルを転送す

る場合は、BINARYを使用します。ASCIIまたはBINARY以外の値を指定すると、FTPエージェントは例外を送出します。

このタグはFTPエージェント固有のものです。

- 90 -

Page 100: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

タグ 説明

<FTPAppend> 転送されるファイルをリモートファイルに追加するかどうかを指定します。設定可能な

値は、TRUEまたはFALSEです。デフォルト値はFALSEです。

既存のリモートファイルにローカルファイルのコンテンツを追加する場合は、TRUEを使用します。既存のリモートファイルを上書きする場合は、FALSEを使用します。TRUEまたはFALSE以外の値を指定すると、FTPエージェントは例外を送出します。

このタグはFTPエージェント固有のものです。

<FTPDirectory> ファイルの転送先のディレクトリを指定するUDAの名前です。FTPサーバからの相対

パスが指定されます。

たとえば、/iflowがREMOTE_FTP_DIRECTORY UDAの値で、ユーザがWindowsシステムで作業している場合、ファイルはC:¥Inetpub¥ftproot¥iflowに転送されます。無

効なディレクトリが指定された場合、プロセスインスタンスはエラー状態になります。

このタグはFTPエージェント固有のものです。

<FTPFileNames> リモートファイルに使用するファイル名を指定するUDAの名前です。このパラメータ

は、ファイルの名前を転送中に変更するために使用します。

たとえば、プロセスインスタンスにLocalFile.txtというファイルが添付されていて、

REMOTE_FTP_FILESの値にRemoteFile.txtが設定されている場合、LocalFile.txtはFTPディレクトリに転送され、RemoteFile.txtというファイル名に変更されます。

REMOTE_FTP_FILESには、複数のファイル名をセミコロン(;)で区切って指定できま

す。REMOTE_FTP_FILESにファイル名が含まれていない場合は、元のファイル名

が使用されます。

<Documents> FTPディレクトリに転送されるファイルを指定するUDAの名前です。

OUTGOING_FILESには、複数のファイル名をセミコロン(;)で区切って指定できま

す。OUTGOING_FILESにファイル名が含まれていない場合は、プロセスインスタン

スに添付されているすべてのファイルが転送されます。

注意

ファイル名にセミコロン(;)が含まれるファイルは、FTPディレクトリに転送できません。セミコロンはファイル名の区切り文字と見なされる

ので、転送するファイルの名前に含めることはできません。

6.11.3 FTPエージェントの使用

プロセス定義のFTPエージェントを使用する方法について説明します。

1. FTPエージェントを表すActivityノードを作成します。

2. 役割@FTPをActivityノードに割当てます。

3. FTPエージェントの環境設定ファイル、ftp.xmlのパラメータに対応する、すべてのUDAをプロセス定義に追加します。

以下は、追加する可能性のあるUDAです。

- AgentServiceStatus

- AgentServiceResult

- REMOTE_FTP_DIRECTORY

- REMOTE_FTP_FILES

- OUTGOING_FILES

REMOTE_FTP_FILESまたはOUTGOING_FILESを追加しない場合は、該当するタグのコンテンツをftp.xmlファイルから削除し

ます。たとえば、転送されるファイルの名前を変更しないと仮定します。この場合REMOTE_FTP_FILESUDAをプロセス定義に

追加する必要はありません。さらに、<FTPFileNames>タグの次のコンテンツをftp.xmlファイルから削除する必要があります。

<FTPFileNames></FTPFileNames>

該当するパラメータがftp.xmlファイルに指定されているにも関わらず、REMOTE_FTP_FILESまたはOUTGOING_FILESを追加

しなかった場合、FTPエージェントアクティビティが活性化されると、プロセスインスタンスはエラー状態となります。

- 91 -

Page 101: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

ftp.xml環境設定ファイルの詳細については、「6.11.2 FTPエージェントの構成」を参照してください。

4. FTPエージェントアクティビティを起点として次のアクティビティを活性化する、Done矢印を追加します。

FTPエージェントは、以下のとおり、Doneまたはnullを返します。

・ Doneを返した場合、プロセスインスタンスはDone矢印に従って続行します。

・ nullを返した場合、プロセスインスタンスはエラー状態となります。AgentServiceStatusUDAはエラー状態を示し、

AgentServiceResultUDAには発行されたエラーメッセージが保存されます。

・ 次のケースでは、プロセスインスタンスがエラー状態となりますが、AgentServiceStatusUDAおよびAgentServiceResultUDAは、エ

ラー情報が更新されません。

・ FTPエージェントアクティビティに、外向きのDone矢印が設定されていません。

・ agentsConfig.xml内のいずれかのデータが正しくないか、または設定されていません。

エラーの理由を確認するには、プロセスインスタンスの履歴を確認する必要があります。

6.11.4 HTTPエージェントの設定

HTTPエージェントは、環境設定ファイルに指定されているURLにデータを送り、そのURLからレスポンスデータを受信します。

<HTTPRequestUDA>タグに指定されているUDAの値を、<HTTPBaseURL>タグに指定されているURLに送り、返されたデータを

<HTTPResponseUDA>タグに指定されているUDAの値として割当てます。

HTTPエージェントは、すべてのエージェントと同様、agentsConfig.xmlで構成されます。この環境設定ファイルの<ActionAgent>セク

ションには、HTTPエージェントのデフォルトの設定が含まれています。通常、このファイルのHTTPエージェントの設定を変更する必要

はありません。

Interstage BPM内にHTTPエージェントを設定する方法について説明します。

HTTPエージェントの環境設定ファイルを作成し、Interstage BPMのエージェントディレクトリ、<Interstage BPMサーバのインストールディ

レクトリ>/server/instance/default/agentsに保存します。

環境設定ファイルHTTPagent.xml

以下は、HTTPエージェントの環境設定ファイルのサンプルです。

<HTTPAgent>

<HTTPBaseURL method="POST"

followRedirects="true">{{Field HTTP_URL}}</HTTPBaseURL>

<HTTPHeaderParams name="Content-Type">text/xml;

charset=UTF-8</HTTPHeaderParams>

<HTTPHeaderParams name="User-Agent">I-BPM HTTP Agent

</HTTPHeaderParams>

<HTTPHeaderParams name="accept-charset">UTF-8

</HTTPHeaderParams>

<QueryParams name= "ParamName"> Param value</QueryParams>

<HTTPRequestUDA>HTTP_REQUEST</HTTPRequestUDA>

<HTTPResponseUDA>HTTP_RESPONSE</HTTPResponseUDA>

<HTTPAgentStatusUDA>HTTP_STATUS</HTTPAgentStatusUDA>

</HTTPAgent>

以下の表は、HTTPagent.xmlで使用されているXMLタグを説明しています。

タグ 説明

<HTTPBaseURL> URLエンドポイントです。<HTTPBaseURL>タグの値は、HTTPエージェントによって呼び

出される、サーブレットなどの外部サービスを指定します。

属性:

method="POST"または"GET"を指定します。HTTPリクエストで使用するリクエストメソッド

を定義します。method属性が指定されていない場合、プロセスインスタンスはエラー状態

になります。"POST"または"GET"以外の属性値を設定した場合は、HTTPエージェントは

失敗します。

- 92 -

Page 102: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

タグ 説明

followRedirects="true"を指定します。

followRedirectsのデフォルト値はfalseなので、この属性を指定する必要があります。

<HTTPHeaderParams> エンコードスタイルやコンテンツタイプなどのHTTPヘッダのプロパティを設定します。HTTPヘッダは、たとえば、現在のHTTPセッションのリクエスト、レスポンスオブジェクトのプロパ

ティなど、様々なWebオブジェクトプロパティを定義するために使用します。

属性:

name="Content-type"または"User-Agent"を指定します。

"Content-type"は、リクエストされたコンテンツの種類を定義します。以下の値が使用でき

ます。value="text/xml"、およびcharset=UTF-8。

"User-Agent"は、リクエストを送ったクライアント(ユーザエージェント)についての情報を含

みます。

<HTTPHeaderParams>タグのname属性で指定される値には、現在制限が設けられていな

いことに注意してください。この属性に有効な値はすべて、HTTPヘッダに有効となります。

<QueryParams> このタグは、HTTPエージェントが"GET"メソッドを使用した場合、必要となります。このタグ

の値は、クエリ文字列として外部サービスに渡されます。<HTTPRequestUDA>タグに指定

されたUDAの値は、"GET"メソッドを使用した場合は使用されないことに注意してくださ

い。

このタグの正しい使用法は以下のとおりです。

<QueryParams name= "ParamName"> Param value</QueryParams>

これは、HTTPエージェントが実行中の以下のようなURL指定となります。

URL?ParamName= Param value

<QueryParams>タグの名前属性には、有効な文字列であれば、すべて指定できます。

<HTTPRequestUDA> タグ内で指定されたUDAの値は、HTTPリクエストのクエリ文字列の一部となります。

<HTTPAgentStatusUDA> HTTPサービスのステータスが保存されるUDAです。

<HTTPResponseUDA> HTTPレスポンスが保存されるUDAです。

6.11.5 HTTPエージェントの使用

プロセス定義のHTTPエージェントを使用する方法について説明します。

1. HTTPエージェントを表すActivityノードを作成します。

2. 役割@HTTPAgentをActivityノードに割当てます。

3. HTTPAgent.xmlのパラメータに対応する、すべてのUDAをプロセス定義に追加します。

以下は、追加する可能性のあるUDAです。

- HTTP_URL

- HTTP_REQUEST

- HTTP_RESPONSE

- HTTP_STATUS

4. HTTPエージェントのアクティビティを起点として次のノードを活性化する、Done矢印およびFailed矢印を追加します。

HTTPエージェントは、以下のとおり、DoneまたはFailedを返します。

- Doneを返した場合、プロセスインスタンスはDone矢印に従って続行します。

- Failedを返した場合、プロセスインスタンスはFailed矢印に従って続行します。

- 93 -

Page 103: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

HTTPエージェントサンプル

あらかじめ設定されているHTTPのサンプルが、Windowsの場合<Interstage BPMサーバのインストールディレクトリ>/client/samples/examples/sources/HTTPAgentExample、SolarisまたはLinuxの場合<Interstage BPMサーバのインストールディレクトリ>/client/samples/examples/sources/HTTPAgentExampleディレクトリに保存されています。このサンプルでは、簡単に実装できるHTTPエージェントが提

供されています。このサンプルのエージェントは、HTTPエージェントの完全な機能を示しています。

この例には、Interstage BPMサーバがインストールされているアプリケーションサーバ上に展開する.warファイルが含まれています。

HTTPAgentExampleディレクトリにあるHTTPAgentExampleInstructions.txtファイルの説明のとおり、HTTPエージェントの実装に進んで

ください。

以下は、追加説明です。

・ 環境設定ファイルのagentsConfig.xmlおよびHTTPAgent.xmlには、この例で使用するHTTPエージェントの設定も含まれています。

HTTPエージェントの設定は、HTTPAgent.xmlファイルに含まれています。agentsConfig.xmlは、HTTPAgent.xmlファイルをエー

ジェントとして指定します。

・ 新しく設定したHTTPエージェントを使用するために、Interstage BPMサービスを再開する必要があります。

・ インポートしたテンプレートのHTTP Agent Example V1.xpdlには、HTTPエージェントが含まれています。エージェントは、役割が

Activityノードに割当てられるのと同じ方法で、Activityノードに割当てられます。ただし、エージェントの役割には、特別な指定として

@記号が付いています。この場合、エージェントの役割は、@HTTPAgentになります。

6.12 タイマーの使用

タイマーの期限が切れると、特定のアクションがトリガされます。タイマーには、Activityノードが活性化された場合に実行が開始される

Activityノードレベルタイマー、またはタイマーを含むプロセス定義から新しいプロセスインスタンスが作成されるたびに実行が開始さ

れるプロセスレベルタイマーがあります。

タイマーはUDAで指定され、Java Actionで設定される時刻とアクションのパラメータで制御されます。タイマーの有効期限と開始時刻

は、絶対時刻を使用した時間指定をすることも、ほかのイベント(アクティビティまたはプロセスインスタンスの開始など)に対して相対的

な時間を指定することも可能です。タイマーに、定期的なトリガアクションを指定することも可能です。また、タイマーは、エスカレーション

(追加のユーザリストにアクティビティを割当てる)やメールの送信を含む、さまざまなアクションを実行することができます。

タイマーは、次のノードに設定することができます。

・ Activityノード

・ Delayノード

・ Voting Activityノード

・ Event Activity(Trigger)ノード

使用可能なタイマーの種類の概要は、「3.2.7 タイマー」を参照してください。

6.12.1 タイマーの定義

以下の例では、2000ミリ秒待機してメールを送信するDelayノードにタイマーが追加されます。

ノードにタイマーを追加する方法について説明します。

1. TimerActionオブジェクトのJava Action、およびUDAを定義します。

JavaActionSet timerJASet = WFObjectFactory.getJavaActionSet();

timerJASet.setActionSetDescription("タイマーで実行を制御する"

+ "アクション");

timerJASet.setActionSetName("TimerActions");

JavaAction[] timerJA = timerJASet.createJavaActions(1);

timerJA[0].setActionDescription("メールを送信");

timerJA[0].setActionName("EmailSend");

timerJA[0].setClassName(CLASS_NAME_JAVA_ACTION);

timerJA[0].setClassPath(CLASS_PATH_JAVA_ACTION);

timerJA[0].setMethodName("sendEmail(String,String,String,String,"

+ "String,String,ServerEnactmentContext)");

- 94 -

Page 104: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

timerJA[0].setArgumentsUDANames("<E>uda.to</E><E>uda.from</E>"

+ "<E>uda.cc</E><E>uda.bcc</E><E>uda.subject</E>"

+ "<E>uda.body</E><E>sec</E>");

timerJASet.setJavaActions(timerJA);

plan.addDataItemRef("Timer_JavaActionSet",

DataItemRef.TYPE_STRING,

timerJASet.toString());

2. TimerActionオブジェクトを定義します。WFObjectFactoryクラスのgetTimerDef()を使用して、指定された種類のタイマーを作成

します。

TimerAction timerAction = WFObjectFactory.getTimerAction();

timerAction.setJavaActionSet("Timer_JavaActionSet");

3. TimerActionオブジェクトをTimerDefオブジェクトに追加して、TimerDefオブジェクトを定義します。有効期限が切れる時刻を含む

UDAの名前を設定します。

TimerActionオブジェクトおよびTimerDefオブジェクトは、独立しており、作成する順序に指定はありません。独立しており、作成

する順序に指定はありません。ただし、TimerActionオブジェクトを使用するには、TimerDef.addTimerAction(TimerAction action)を使用してTimerDefオブジェクトを関連付ける必要があります。

この段階で、setType(timerType)を使用して、使用するタイマーの種類も定義します。timerType定数に設定可能な値は、TimerDefインタフェースで取得できます。以下の値があります。

- RELATIVE: 相対時刻タイマーを定義します。

- ABSOLUTE: 絶対時刻タイマーを定義します。

- PERIODIC: 周期タイマーを定義します。

- BUSINESSPERIODIC: ビジネス周期タイマーを定義します。

- BUSINESSRELATIVE: ビジネス相対時刻タイマーを定義します。

TimerDef timer = WFObjectFactory.getTimerDef();

timer.setName("Send mail timer");

timer.setDescription("このタイマーは、2000ミリ秒待機後、"

+ "メールを送信します。");

timer.setType(TimerDef.RELATIVE);

timer.setTime("TimeOfExpiration");

timer.addTimerAction(timerAction);

plan.addDataItemRef("TimeOfExpiration",

DataItemRef.TYPE_LONG, "2000");

4. TimerDefオブジェクトをノードに追加します。

delayNode.addTimer(timer);

6.12.2 ビジネスカレンダーの使用

Interstage BPMでは、その有効期限と関連付けて特定のEventをトリガするタイマーを作成することができます。ビジネスカレンダー機

能を使用して、ビジネスタイマーを作成することができます。ビジネスタイマーは特別な種類のタイマーで、営業時間と営業日だけを

「カウント」し、営業時間内に有効期限が切れます。営業時間や営業日は、ビジネスカレンダーで指定します。

ビジネス定期タイマーとビジネス相対時刻タイマーは、ビジネスカレンダーで使用します。ビジネスカレンダーはタイマーとの組合せで

使用されるので、以下の種類のノードで使用することができます。

・ Activityノード

・ Delayノード

・ Voting Activityノード

・ Event Activity(Trigger)ノード

- 95 -

Page 105: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

使用可能なタイマーの種類の概要は、「3.2.7 タイマー」を参照してください。

ここで紹介されているプログラミング例のすべてのコードは、TriggerTimerSample.javaサンプルファイル内にあります。

ビジネスカレンダーの設定

Interstage BPMでは多種多様なビジネスカレンダーを利用できます。使用するプロセス定義にビジネスカレンダーをまだ定義していな

い場合、Interstage BPMはInterstage BPMのインストール時にデフォルトで設定されたビジネスカレンダーを使います。

独自のカスタムビジネスカレンダーを作成することも、デフォルトのビジネスカレンダーをニーズに合わせて変更することもできます。組

織の実状に合わせて必要な数だけビジネスカレンダーを作成し、プロセス定義またはプロセスインスタンスごとに異なるビジネスカレン

ダーを使用できます。カレンダー名はカレンダーのファイル名に対応しています。カレンダーファイルの拡張子は.calで、これによりビジ

ネスカレンダーとして識別できます。

デフォルトのカレンダー(ファイル名Default.cal)は、インストール時に提供されます。他のカレンダーがInterstage BPMに設定されてい

なくても、Interstage BPMプロセスインスタンスにビジネスタイマーを追加し、デフォルトのカレンダーで営業日と営業時間を指定できま

す。デフォルトのカレンダーは、全機能を備えたビジネスカレンダーのサンプルも提供します。

カスタム化したビジネスカレンダーの作成や、デフォルトのビジネスカレンダーの変更に関する詳細については、『Interstage BPMサーバ

管理者ガイド』を参照してください。

ビジネスカレンダーの割当て

カレンダーの名前(拡張子.calを除くファイル名)をユーザ定義属性(UDA)__businessCalendarに割り当てることで、そのカレンダーを

プロセス定義やプロセスインスタンスに割り当てることができます。このUDAはビジネスタイマーと期限にのみ使用されます。

例えば、ドイツの子会社で実行するプロセスインスタンス用として使いたいカレンダーがあり、それをGerman.calと呼ぶことにします。あ

るアクティビティを従業員の1人に割り当てたいが、しばらくこの従業員の手が空いていない場合に、他の従業員に割り当てたいとしま

す。アクティビティを割り当てなおすタイミングは、ビジネスカレンダーとタイマーの定義によって異なります。

ビジネスカレンダーをプロセス定義に割り当てるには、以下の操作を行います。

1. プロセス定義にSTRING型のUDAを追加し、カレンダーファイルの名前をその値として割り当てます。

例えば、STRING型のUDAをドイツの子会社事業部のプロセス定義に追加し、Germanという値を割り当てることもできます。

plan.addDataItemRef("__businessCalendar", DataItemRef.TYPE_STRING, "German");

2. 任意の名前、タイプ、初期値で、UDAをプロセス定義に追加します。UDAの値は、STRINGとして指定し、タイマーの開始時刻

を表します。

以下の例では、営業時間は現在の時刻に相対して2分置いて設定されます。

plan.addDataItemRef("__udaStartTime", DataItemRef.TYPE_STRING, "BT(00:02:00)");

営業時間に使用できる時刻コードと日付コードの一覧については、「6.12.3 タイマーの時刻コードと日付コード」を参照してくだ

さい。

3. 例えばActivityノードなどの、ビジネスの定期タイマーまたは相対タイマーを割り当てるノードを追加します。

Node orderActivity = plan.addNode("Order",Node.TYPE_ACTIVITY);

4. 名前、説明、UDA __udaStartTimeで定義された開始時刻を指定して、また相対タイマーと定期タイマーのいずれであるかを定

義して、タイマーを作成します。

以下の例では、ビジネスの相対タイマーを使用します。

TimerDef busCalTimer = WFObjectFactory.getTimerDef();

busCalTimer.setName("busCalTimer");

busCalTimer.setDescription("Timer to show the business calendar functionality");

busCalTimer.setTime("__udaStartTime");

busCalTimer.setType(TimerDef.BUSINESSRELATIVE);

5. タイマーをActivityノードに追加します。

TimerAction busCalTimerAction = WFObjectFactory.getTimerAction();

// タイマーの期限が切れるときに実行されるJavaActionSetを含む

- 96 -

Page 106: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

// UDAの名前を設定します。

busCalTimerAction.setJavaActionSet("BusCalActionSet");

// このタイマー定義にJavaActionSetを指定するTimerAction

// を追加します。このタイマーの期限が切れると

// アクションの定義済みJavaActionSetが実行されます。

busCalTimer.addTimerAction(busCalTimerAction);

// タイマーをActivityノードに追加します。

orderActivity.addTimer(busCalTimer)

ビジネスカレンダーを特定のビジネスタイマーや期限に割り当てることもできます。ビジネスタイマーや期限は、このビジネスカレ

ンダーに基づいて計算されます。以下の表現を使用します。

UC(<ビジネスカレンダー>):

<ビジネスカレンダー>には、拡張子.calを除いたビジネスカレンダーの名前を指定します。

以下の例では、California.calと呼ばれるビジネスカレンダーをビジネスタイマーの計算に使用します。

plan.addDataItemRef("__udaStartTime", DataItemRef.TYPE_STRING,

"UC(California);BT(00:02:00)");

. . . TimerDef busCalTimer = WFObjectFactory.getTimerDef();

. . . busCalTimer.setTime("__udaStartTime");

busCalTimer.setType(TimerDef.BUSINESSRELATIVE);

. . .

JavaScript関数setProcessAttributeとUDA __businessCalendarを使えば、プロセスインスタンスの実行中でもカレンダーの変更が

可能です。ビジネスカレンダーをEngland.calに変更する場合、以下のスクリプトを使用します。

sec.setProcessAttribute("__businessCalendar","England");

6.12.3 タイマーの時刻コードと日付コード

タイマーを設定するとき、時刻コードと日付コードを使って時刻を指定できます。以下の例では、現在の時刻に対して相対的に表され

る営業時刻を設定しています。時刻コードは太字で示しています。

plan.addDataItemRef("__udaStartTime", DataItemRef.TYPE_STRING,

"BT(00:02:00)");

使用できる時刻コードと日付コードは以下のとおりです。

時刻コード

コード 意味 例

AT 1日のうちの絶対時刻を設定します。 AT(16:30:00): その日の午後4時30分。

CT 1日の終業時刻に対して相対的に表され

る時刻を設定します。

設定可能な値: 00またはマイナスの時間。

一般的には、終業時刻までの相対的な

時刻を計算するために、終業時刻ととも

にマイナスの時間を使用します。

CT(00): 終業時刻。

CT(-02:00:00): 終業時刻の2時間前。

OT 1日の始業時刻に対して相対的に表され

る時刻を設定します。

設定可能な値: 00またはプラスの時間。

OT(00): 始業時刻。

OT(02:00:00): 始業時刻の2時間後。

BT 現在の時刻に対して相対的に表される営

業時刻を設定します。

BT(04:30:00): 営業時刻で現時刻から4時間30分後。

BT(-02:00): 営業時間の2時間前。

BT(00): 現在の時刻が営業時刻ではない場合に、時

刻を変えずに次の営業時刻を順方向検索することがで

- 97 -

Page 107: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

コード 意味 例

きます。営業日によって営業時刻が異なる場合は、こ

れを使用する必要があります。

BT(-00): 直前の営業時刻に逆方向検索する場合に使

用します。現在の時刻がすでに営業時刻になっている

場合は無効です。

日付コード

コード 意味 例

BD 営業日を設定します。 BD(4): 今日から4営業日後。

BD(0): その日が営業日の場合は同じ日、営業日でな

い場合は翌日。

BD(-0): その日が営業日の場合は同じ日、営業日でな

い場合は前日。

RD 現在の日付から日付を相対的に設定し

ます。

RD(7): 1週間後。

RD(-1): 1日前。

WD 曜日を設定します。

設定可能な値: 1以上。

WD(1): その週の日曜日。

WD(7): その週の土曜日。

WD(8): 次の週の日曜日。

WN 今日以降の次の曜日を設定します。

設定可能な値: 1から7。

WN(1): 今日以降の次の日曜日。

WN(7): 今日以降の次の土曜日。

RM 将来の月を相対的に設定します。その月

に十分な日数がないため同じ日に設定

できない場合は、月の 後の日になりま

す。

RM(3): 3か月後。

DM 月の特定の日を設定します。

設定可能な値: -1、1から31

DM(1): 月の 初の日。

DM(-1): 月の 後の日。

BM 月の特定の営業日を設定します。

設定可能な値: -1、1から31

BM(1): 月の 初の営業日。

BM(-1): 月の 後の営業日。

DY その年の特定の日を設定します。

設定可能な値: -1、1から365

DY(1): 年の 初の日。

DY(-1): 年の 後の日。

BY その年の特定の営業日を設定します。

設定可能な値: -1、1から365

BY(1): 年の 初の営業日。

BY(-1): 年の 後の営業日。

6.13 リモートサブプロセスのモデル化

リモートサブプロセスは、リモートコンピュータのワークフローサーバ上で実行されるサブプロセスです。リモートコンピュータのワークフ

ローサーバは、たとえば、ほかのInterstage BPMサーバなどです。

リモートサブプロセスは、親プロセス定義ではRemote Subprocessノードによって表されます。親プロセスとリモートサブプロセスとの間の

やり取りは、以下のステップで行われます。

1. Remote Subprocessノードに到達すると、ローカルコンピュータのワークフローサーバがStartProcess要求をリモートコンピュータの

ワークフローサーバに送ります。このとき、リモートサブプロセスインスタンスが処理するUDAも送られます。

2. リモートコンピュータのワークフローサーバはこの要求を受け取って、プロセスインスタンスを開始します。

- 98 -

Page 108: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

3. リモートプロセスインスタンスが完了すると、それを実行したワークフローサーバがProcessCompletedメッセージを返します。この

とき、サブプロセスインスタンスの結果も返されます。

4. ローカルコンピュータのワークフローサーバはこのメッセージを受け取り、結果を取り込み、Remote Subprocessノードを完了して、

プロセスインスタンスが次のノードに進めるようにします。

このやり取りを正常に行うためには、親プロセス定義に以下を定義する必要があります。

・ リモートプロセス定義のURI

・ やり取りされるUDAの識別子

・ サブプロセス定義の戻り値

6.13.1 親とリモートサブプロセス定義を設計

ここでは親とサブプロセス定義を設計する方法を説明します。以下のサンプルプロセス定義を使って主なステップを説明します。

図6.3 リモートサブプロセスノードとの親プロセス定義

- 99 -

Page 109: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

図6.4 リモートサブプロセス定義

サンプルファイルRemoteSubProcess.javaで、プログラミングコードの全体を参照できます。

親とリモートサブプロセス定義を設計するには、以下の手順に従います。

1. サブプロセス定義を作成します。Startノード、一つ以上のExitノード、および必要なActivityノードをサブプロセス定義に追加しま

す。また、前後にパスされるUDAsを特定します。

サンプルプログラムでは、サブプロセス定義を作成するためにcreateRemoteSubPlan()が呼び出されています。

Plan subPlan = createRemoteSubPlan();

サンプルサブプロセス定義は、Startノード、Activityノードおよび2つのExitノードから成り立っています。Exitノードは親プロセス

定義によって処理される必要があるサブプロセス定義の可能な結果を定義します。

Node exitNodeApp = plan.addNode("Approved", Node.TYPE_EXIT);

exitNodeApp.setPosition(new Point(500, 350));

Node exitNodeRej = plan.addNode("Rejected", Node.TYPE_EXIT);

exitNodeRej.setPosition(new Point(200, 350));

以下のUDAsはサンプルサブプロセス定義で作成されます。

plan.addDataItemRef("Name",

DataItemRef.TYPE_STRING, "John Smith");

plan.addDataItemRef("Number",

DataItemRef.TYPE_STRING, "0123456789");

plan.addDataItemRef("Amount",

DataItemRef.TYPE_FLOAT, "0.0");

plan.addDataItemRef("Limit",

DataItemRef.TYPE_FLOAT, "0.0");

2. 親プロセス定義を作成し、編集モードに設定します。

plan = WFObjectFactory.getPlan();

plan.setWFSession(adminSession);

plan.startEdit();

3. 親プロセス定義では前後にパスされるUDAsを作成します。サンプルプログラムでは以下のUDAsが作成されます。

plan.addDataItemRefWithId("Name", "Name",

DataItemRef.TYPE_STRING, "John Smith");

plan.addDataItemRefWithId("SSN", "SSN",

DataItemRef.TYPE_STRING, "0123456789");

- 100 -

Page 110: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

plan.addDataItemRefWithId("LoanAmount", "Loan Amount",

DataItemRef.TYPE_FLOAT, "0.0");

plan.addDataItemRefWithId("ApprovalLimit", "Approval Limit",

DataItemRef.TYPE_FLOAT, "0.0");

注意

プロセス定義が関わった同じUDAに違う名前を使用できます。ただし同じデータタイプにしてください。

4. Startノード、一つ以上のExitノードおよび必要なActivityノードを親プロセス定義に追加します。

5. 親プロセス定義にRemote Subprocessノードを追加します。

Node RemoteSubProcessNode = plan.addNode("Remote",

Node.TYPE_REMOTE_SUB_PROCESS);

RemoteSubProcessNode.setPosition(new Point(400, 300));

6. 前後にパスされる必要があるUDAsのデータマッピングを定義します。ノードインタフェースの以下のメソッドを使用します。

addDataMappingElement(<UDA identifier in parent process definition>,

<UDA identifier in subprocess definition>,<direction of data flow>)

親からリモートサブプロセスへデータ値を渡すとき、データフローの方向としてDataItemMappingElement.INを指定してください。

リモートサブプロセスから親プロセスへデータ値を渡すとき、DataItemMappingElement.OUTを指定してください。データ値を渡

すのが双方向のときは、DataItemMappingElement.INOUTを指定してください。

サンプルプログラムでは、以下のデータマッピングが定義されます。

RemoteSubProcessNode.addDataMappingElement("Name","Name",

DataItemMappingElement.IN);

RemoteSubProcessNode.addDataMappingElement("SSN","Number",

DataItemMappingElement.IN);

RemoteSubProcessNode.addDataMappingElement("LoanAmount", "Amount",

DataItemMappingElement.IN);

RemoteSubProcessNode.addDataMappingElement("ApprovalLimit", "Limit",

DataItemMappingElement.OUT);

7. 以下のメソッドを使用し、親とサブプロセス定義を接続します。それにはリモートサブプロセス定義のURIとサーバがかかわった

ワークフローで使用される通信プロトコルを指定してください。

RemoteSubProcessNode.setSubPlanURI("asap:" +

subPlan.getPlanURI());

Interstage BPMはワークフローサーバ間のコミュニケーションの2つのオープンプロトコル、シンプルワークフローアクセスプロトコル

(SWAP)と非同期サービスアクセスプロトコル(ASAP)をサポートします。これらのプロトコルはXMLメッセージをワークフローサー

バの間でHTTPを超えて渡します。

プロセスを統合Interstage BPMサーバ上で実行するときASAP(asapと指定)の使用をお薦めします。Collaboration Ringのみと

SWAP(swapと指定)を使用します。Collaboration Ring統合に関する詳細はお近くのFujitsuサポートセンターに連絡してくださ

い。

8. 親プロセス定義でノードを接続するために矢印を追加します。サブプロセスが戻る可能性を考慮して外向きの矢印をRemoteSubprocessノードに必ず追加します。結果値はリモートサブプロセス定義のExitノードの名前に対応しています。

9. Remote Subprocessノードには、1つ以上の外向きの矢がある場合があります。親プロセスが再開するときは1つの矢印だけが選

択されます。選択された矢印はリモートサブプロセスの結果に一致するものです。サンプルプログラムでサブプロセスは可決か

否決のいずれかを戻します。

Arrow ExitSubProcessApp = plan.addArrow("Approved", RemoteSubProcessNode, activityNodeAfter);

Arrow ExitSubProcessRej = plan.addArrow("Rejected", RemoteSubProcessNode, exitNode);

- 101 -

Page 111: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

注意

サブプロセス定義のExitノードの名前と外向きの矢印の名前は大文字・小文字も同一でなければなりません。

6.13.2 実行中のリモートサブプロセス定義

リモートサブプロセス定義を実行できるように、Interstage BPM連携ユーザはローカルおよびリモートInterstage BPMサーバで構成され

なければなりません。:

・ ローカルInterstage BPMサーバでは、ユーザはリモートInterstage BPMサーバで認証可能であると指定してください。このユーザは

リモートInterstage BPMサーバにサブプロセスインスタンスを作成します。

・ リモートInterstage BPMサーバでは、ユーザはローカルInterstage BPMサーバで認証可能であると指定してください。このユーザは

リモートサブプロセスインスタンスの結果をローカルInterstage BPMサーバに戻します。

Interstage BPM連携ユーザはInterstage BPMサーバのSWAPLinkageUserNameパラメータとSWAPLinkagePasswordで構成されます。

詳しくは『Interstage BPMサーバ 管理者ガイド』を参照してください。

サブプロセス定義がInterstage BPM連携ユーザに属さない限り、発行されたサブプロセス定義のみがリモートに呼び出されます。

Interstage BPM連携ユーザはドラフト状態にあるリモートサブプロセス定義を呼び出すことができます。よって、以下のオプションの一

つをサブプロセス定義のテストに使用します。

1. 実行する前に、リモートサブプロセス定義を発行します。

2. ローカルInterstage BPMサーバに構成されたInterstage BPM連携ユーザを調べます。それをサブプロセス定義の所有者として

使用します。

3. ローカルInterstage BPMサーバに構成されたInterstage BPM連携ユーザを変更します。Interstage BPM連携ユーザとしてサブプ

ロセス定義の所有者を指定します。

6.13.3 リモートサブプロセスのエラー処理

親プロセス定義でRemote SubprocessノードのエラーJava Actionを定義することでリモートサーバが開始しないなどの理由から、リモー

トサブプロセス開始が失敗した場合の処理が可能です。このように、サブプロセスが開始できなければプロセスインスタンスがエラー状

態になるのを避けられます。

リモートサブプロセスが開始に失敗すると、リモートサブプロセスレベルのエラーJava Actionセットが活性化されます。 Java Actionのこ

のタイプに関する詳細は「6.2.7 エラーJava Actionの使用」を参照してください。

エラーアクションセットをRemote Subprocessノードに設計し、割り当てるには、以下の手順に従います。

1. WFObjectFactoryクラスからgetJavaActionSet()を使用して、新しいJavaActionSetオブジェクトを作成します。

JavaActionSet errorJavaActionSet = WFObjectFactory.getJavaActionSet();

2. Java ActionセットにJava Actionsの必要数を生成します。以下の例では、一つのJava Actionが生成しています。

JavaAction[] errorJavaActions = errorJavaActionSet.createJavaActions(1);

3. Java Actionセットを定義します。

errorJavaActions[0]

.setActionName("WriteLogEntry");

errorJavaActions[0]

.setActionDescription("Writes a log entry in case the Remote Subprocess could not be

started");

errorJavaActions[0]

.setMethodName("writeLogEntryWithException(String,ServerEnactmentContext)");

errorJavaActions[0]

.setClassName(CLASS_NAME_JAVA_ACTION);

errorJavaActions[0]

.setClassPath(CLASS_PATH_JAVA_ACTION);

errorJavaActions[0]

- 102 -

Page 112: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

.setArgumentsUDANames("<E>uda.LogEntry</E><E>sec</E>");

errorJavaActionSet.setJavaActions(errorJavaActions);

4. リモートサブプロセスノードにJava Actionセットを割り当てます。

RemoteSubProcessNode.setJavaActionSet(errorJavaActionSet,

JavaActionSet.NODE_ERROR);

- 103 -

Page 113: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

第7章 運用管理

ここでは、管理者によって行われる運用管理のためのModel APIを使用したプログラミングの例を示します。プログラミングの例には、

以下のものがあります。

・ 管理者のログインとログアウト

・ ユーザ管理

・ プロセス定義管理

・ プロセスインスタンス管理

・ ワークアイテム管理

こ の 章 で 紹 介 さ れ て い る プ ロ グ ラ ミ ン グ 例 の す べ て の コ ー ド は 、 Adminstration.java サ ン プ ル フ ァ イ ル 、 お よ び

SampleLocalUserManagement.javaサンプルファイル内にあります。

サンプルコードを実装するには、Model APIの次のパッケージを使用する必要があります。

・ com.fujitsu.iflow.model.util

ほかのクラスやインタフェースで一般的に使用される、低レベルのユーティリティクラスが含まれています。

・ com.fujitsu.iflow.model.workflow

プロセス定義やプロセスインスタンスで必要な情報を管理するインタフェースが含まれています。これには、ノード、矢印、添付文

書、ワークアイテム、およびパーミッションレベルが含まれます。

一般的なModel APIの詳細については、『API Javadocマニュアル』を参照してください。

7.1 管理者のログインとログアウト

プロセス定義やユーザを管理するために、管理者はInterstage BPMサーバにログインする必要があります。管理者がログインするに

は、セッション、つまりWFAdminSessionオブジェクトを作成する必要があります。このセッションは、管理者がログアウトすると終了しま

す。

管理者がログイン/ログアウトする方法について説明します。

1. 新しいWFAdminSessionオブジェクトを作成します。

adminSession = WFObjectFactory.getWFAdminSession();

ワークフローオブジェクトを割当てるには、WFObjectFactoryクラスを使用します。次に、getWFAdminSession()でWFAdminSessionオブジェクトを作成します。

2. 該当する環境設定ファイルを使用して、セッションを初期化します。

<Interstage BPMサーバ インストールディレクトリ>/client/samples/examples/classesに格納されたiFlowClient.propertファイルのサンプル

を使用できます。

このファイルを使うか、実行時のカレントディレクトリに格納された新しいファイルにプロパティを書き込みます。実行時のカレントディレ

クトリの格納先については、「4.3 プロパティファイルの格納」を参照してください。

iFlowClient.properties ファイルの中でバックスラッシュ"¥"またはコロン":"を使用する場合は、バックスラッシュでエスケープする必要が

あります。たとえば、サーバのアドレスは以下のように指定します。

ibpmhost¥:49950

java.util.Propertiesを使い、iFlowClient.propertiesファイルをロードするとき、load() メソッドは、エスケープ文字を自動的に考慮されま

す。他の方法でプロパティをロードする場合は、エスケープ文字を正しく扱うようにしてください。iFlowClient.propertiesファイルで使用

するのエスケープシーケンスの詳細については、java.util.Properties.store()メソッドのJAVAドキュメントを参照してください。

セッション用に設定ファイルiFlowClient.propertiesを読込みます。

Properties sessionProps = new Properties(); sessionProps.load(new

FileInputStream("iFlowClient.properties"));

- 104 -

Page 114: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

以下のとおり、セッションを初期化します。

adminSession.initForApplication(null, sessionProps);

1. サーバにログインします。

String server = sessionProps.getProperty("HostName") + "Flow";

adminSession.logIn(server, adminName, password);

接続サーバ名には、"Flow"という文字列を追加してください。

2. すべての作業が終了したら、管理者はWFAdminSessionを使用してサーバからログアウトします。

if (adminSession != null ) {

adminSession.logOut();

}

7.2 ユーザおよびグループ管理

Interstage BPMを使うすべてのユーザはユーザアカウントが必要です。ユーザは一つ以上のグループに所属しなければなりません。

ユーザアカウント

配備時のInterstage BPMの構成によって、ユーザアカウントはInterstage BPMのローカルユーザストアまたはディレクトリサービス(リモー

トユーザストア)で管理されます。

ローカルのユーザストアを使用する場合、WFAdminSessionインタフェースを使用してユーザの追加や削除、またパスワードのリセット

ができます。

ディレクトリサービスを使用する場合、ユーザの追加や削除にディレクトリサービスの機能を使用します。

グループ

グループは、組織内である機能を共有するユーザの集まりです。 例えば、マネージャグループは組織の上位のマネージャを含む場

合があります。Interstage BPMでは、グループはだれがプロセスでのタスク責任者であるかを決定するのに使用されます。

グループはInterstage BPMのローカルグループストアかディレクトリサービス(リモートグループストア)、または両方のシステムで管理で

きます。ローカルグループストアを使用する場合、WFAdminSessionインタフェースで管理できます。 WFAdminSessionインタフェース

には、グループの作成、グループを他のグループに追加、ユーザをグループに追加するなどのオペレーションがあります。

グループが他のグループのメンバーである場合もあるので、組織の階層を対応するグループ階層にモデル化できます。どんな深さに

もグループをネストできます。

注意

ユーザとグループを異なったストアで管理できます。例えば、ある組織ではユーザアカウントをディレクトリサービスで管理し、グループ

をローカルグループストアで管理する場合があります。

7.2.1 ローカルユーザの管理

前提条件: Interstage BPMは、ローカルユーザストアを使用するように構成されています。詳細は『Interstage BPMサーバ 導入ガイド』

を参照してください。

WFAdminSessionインタフェースですべてのローカルユーザのリストを取得、ローカルユーザの追加、パスワードのリセット、ローカル

ユーザの削除ができます。

・ すべてのローカルユーザのリストを取得するには、以下のように設定します。

User[] localUser = adminSession.getLocalUsers();

- 105 -

Page 115: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ ローカルユーザを追加するには、以下のように設定します。

//Check whether the user already exists

User testUser = WFObjectFactory.getUser(sampleUser);

adminSession.createUser(testUser, usrPassword);

ユーザIDとパスワードは 大200文字まで使えます。 英数字、ハイフン、およびアンダースコア ("_")のみを使用してくださ

い。"@"はInterstage BPMでエージェントを特定するのに使われるため、"@"で始まるユーザ名は使用できません。

・ ローカルユーザのパスワードをリセットするには、以下のように設定します。

adminSession.resetPassword(testUser, usrPassword);

注意

ユーザにパスワードを変更する権限を与える場合、WFSessionインタフェースからchangePassword()を使用します。

・ ローカルユーザを削除するには、以下のように設定します。

adminSession.deleteUser(userID);

このユーザは属するすべてのローカルグループから削除、除外されます。

7.2.2 ローカルグループの管理

ここではローカルグループストア管理の も重要なオペレーションを紹介します。プログラミングサンプルでは、3つのグループの階層

が作成され、ユーザはそれらのグループに割り当てられます。以下の図は作成される組織構造を示します。

図7.1 サンプルグループとユーザ

ローカルグループ管理をするには、以下の手順に従います。

1. WFAdminSessionインタフェースからcreateGroup()を使用して、必要なローカルグループを作成します。

以下のサンプルはAllEmployees、US_Employees、UK_Employeesグループを作成します。グループ作成前にサンプルはグルー

プが既に存在するかどうかチェックします。

group = WFObjectFactory.getGroup("AllEmployees ",

"ALL Employee group");

adminSession.createGroup(group);

group = WFObjectFactory.getGroup("US_Employees ",

"US Employee group");

adminSession.createGroup(group);

group = WFObjectFactory.getGroup("UK_Employees ",

"UK Employee group");

adminSession.createGroup(group);

ユーザIDとパスワードは 大200文字まで使えます。 英数字、ハイフン、およびアンダースコア ("_")のみを使用してくださ

い。"@"はInterstage BPMでエージェントを特定するのに使われるため、"@"で始まるユーザ名は使用できません。

- 106 -

Page 116: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

2. getAllGroups()を使用してInterstage BPMで利用可能なすべてのグループを取得できます。

Group[] LocalGroupList = adminSession.getAllGroups();

3. Interstage BPMのローカルグループに割り当てたいユーザを作成します。 このサンプルでは、ユーザのLisa、Sarah、Peterおよび

Johnが作成されます。

testUser = WFObjectFactory.getUser("UserSarah");

adminSession.createUser(testUser, "SomePassword");

testUser = WFObjectFactory.getUser("UserLisa");

adminSession.createUser(testUser, "SomePassword");

testUser = WFObjectFactory.getUser("UserPeter");

adminSession.createUser(testUser, "SomePassword");

testUser = WFObjectFactory.getUser("UserJohn");

adminSession.createUser(testUser, "SomePassword");

4. WFAdminSessionインタフェースからaddUserToGroup()を使用して新たに作成されたユーザをローカルグループに割り当ててく

ださい。サンプルでは、LisaとSarahはUS_Employeesに割り当てられ、JohnとPeterはUK_Employeesに割り当てられます。

adminSession.addUserToGroup("UserSarah", "US_Employees");

adminSession.addUserToGroup("UserLisa", "US_Employees");

adminSession.addUserToGroup("UserPeter", "UK_Employees");

adminSession.addUserToGroup("UserJohn", "UK_Employees");

必要な数のグループに同一ユーザを割り当てることができます。

いかなるInterstage BPMユーザもいかなるローカルグループに割り当てできます。割り当てられるユーザはInterstage BPMのロー

カルユーザストアまたはディレクトリサービスのどちらに保存されていても構いません。

5. グループの階層構造を作成したい場合は、addGroupToGroup()を使用して子グループを親グループに割り当てます。サンプルでは

US_EmployeesとUK_EmployeesはAllEmployeesグループに関連しています。

adminSession.addGroupToGroup("US_Employees", "AllEmployees");

adminSession.addGroupToGroup("UK_Employees", "AllEmployees");

子グループを親グループに割り当てるとき、子グループのすべてのメンバーが親グループのメンバーになります。

同じグループを複数のグループに割り当てることができます。

注意

循環するグループを作成しないでください。例えば、グループ1をグループ2の子グループとし、グループ2をグループ1の子グ

ループに追加しないでください。

6. ユーザがグループのメンバーでなくなった時点でグループからそのユーザを除外できます。

adminSession.removeUserFromGroup(sampleUser, roleName);

7.2.3 ログインしたユーザリストの作成

すべてのログインしたユーザのリストを取得する方法について説明します。

1. WFAdminSessionインタフェースのgetAllUserAgentInfo()を使用します。

UserInfo[] userInfoList = adminSession.getAllUserAgentInfo();

7.2.4 ユーザのログアウト

・ 単独のユーザをログアウトさせる方法について説明します。

WFAdminSessionインタフェースのlogoutUser()を使用します。

- 107 -

Page 117: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ すべてのユーザをログアウトさせる方法について説明します。

WFAdminSessionインタフェースのlogoutAllUsers()を使用します。

次の例では、管理者を除くすべてのユーザをuserInfoListからログアウトさせる方法を示しています。

if (userInfoList != null) {

boolean loggedOut = false;

for (int i = 0; i < userInfoList.length; i++) {

// 現在の管理者ではないユーザを取得するために

// ユーザ名を制御します。

if (!userInfoList[i].getName().equals(adminName)) {

adminSession.logoutUser(userInfoList[i].

getClientID());

loggedOut = true;

}

}

}

7.2.5 ユーザとグループキャッシュのリセット

管理セッション(WFAdminSession)で、管理者はディレクトリサーバからグループとユーザのキャッシュデータをリセットできます。

起動時、Interstage BPMサーバはローカルまたはリモートストアからグループとユーザを取得し、キャッシュに保存します。 WFAdminSessionでは、管理者がグループとユーザのキャッシュデータをリセットできます。

・ グループリストをリセットするには、以下のように設定します。

adminSession.resetLDAPGroupsList();

resetLDAPGroupsList()は即座にグループのキャッシュをクリアします。ローカルまたはリモートストアで定義されたグループのキャッ

シュされたメモリオブジェクトをリセットします。ローカルまたはリモートストアのいかなるグループリストの変更もメモリオブジェクトにリ

ロードされます。

・ ユーザーリストをリセットするには、以下のように設定します。

adminSession.resetLDAPUsersList();

resetLDAPUsersList()は即座にユーザのキャッシュをクリアします。ローカルまたはリモートストアで定義されたユーザのキャッシュ

されたメモリオブジェクトをリセットします。ローカルまたはリモートストアのいかなるユーザリストの変更もメモリオブジェクトにリロード

されます。

注意

リモートストアを使用するとき、グループキャッシュは自動的に一定の間隔で更新されます。LDAPグループキャッシュの有効期限は

Interstage BPMサーバのLDAPGroupCacheAgeSecパラメータで設定されます。詳細は『Interstage BPMサーバ 管理者ガイド』を参照し

てください。

7.3 プロセス定義管理

ここでは、以下の一般的なプロセス定義管理タスクについて説明します。

・ プロセス定義リストを作成する

・ プロセス定義を公開する

・ プロセス定義をアーカイブする

・ プロセス定義を削除する

・ アーカイブ済のプロセス定義を削除する

・ プロセス定義をXPDLファイルからインポートする

- 108 -

Page 118: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ プロセス定義をXPDLファイルにエクスポートする

7.3.1 プロセス定義リストの作成

プロセス定義リストを作成するには、com.fujitsu.iflow.model.workflowパッケージのWFObjectListインタフェースを使用します。このイ

ンタフェースは、Interstage BPMサーバから既存のWFObjectsのリストを取得します。

プロセス定義リストを作成する方法について説明します。

1. Filterクラスを使用して、フィルタを作成します。

プロセス定義のフィルタには以下の条件を使用することができます。

- AllArchivedPlans: アーカイブ済のすべてのプロセス定義を取得します。

- AllPlans: すべてのプロセス定義を取得します。

- MyInactivePlans: 非活性状態のすべてのプロセス定義を取得します。

- MyPlans: ログイン中のユーザに属するすべてのプロセス定義を取得します。

2. openBatchedList()を使用します。

3. openBatchedList()を使用して、取得したオブジェクトのリストからフィルタ条件に一致するものを取り出します。

Plan[] planList = null;

if (filter == Filter.AllArchivedPlans

|| filter == Filter.AllPlans

|| filter == Filter.MyInactivePlans

|| filter == Filter.MyPlans) {

WFObjectList wfObjectList =

WFObjectFactory.getWFObjectList(adminSession);

wfObjectList.openBatchedList(filter);

Vector tmpList = new Vector();

int batchSize = 50;

Object[] elements = wfObjectList.getNextBatch(batchSize);

Plan plan = null;

while (elements != null && elements.length > 0) {

for (int i = 0; i < elements.length; i++) {

plan = (Plan) elements[i];

// プロセス定義をテンポラリリストに追加します。

tmpList.add(plan);

}

// フィルタに該当するプロセス定義の次のリストを読み込みます。

elements = wfObjectList.getNextBatch(batchSize);

}

// テンポラリリスト内のプロセスインスタンスを

// このプログラムで返されるProcessInstance配列にコピーします。

planList = new Plan[tmpList.size()];

planList = (Plan[]) tmpList.toArray(planList);

return planList;

}

7.3.2 プロセス定義の公開

プロセス定義を公開する方法について説明します。

- 109 -

Page 119: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ WFAdminSessionインタフェースのpublishPlan()を使用します。

プロセス定義を公開すると、状態が「公開済」に変更されます。

以下の例では、プロセス定義のリスト(planList)の 初のプライベートまたはドラフト状態のプロセス定義を公開する方法を示します。

if (planList != null ) {

boolean published = false;

for (int i = 0; i < planList.length; i++) {

if (planList[i].getState() == Plan.STATE_DRAFT

|| planList[i].getState() == Plan.STATE_PRIVATE) {

adminSession.publishPlan(planList[i].getId());

}

published = true;

}

}

7.3.3 プロセス定義のアーカイブ

プロセス定義をアーカイブすると、状態が「アーカイブ済」に変更されます。すでにアーカイブ済のプロセス定義をアーカイブしようとす

ると、Interstage BPMでは、公開したプロセス定義をアーカイブすると判断します。この場合、プロセス定義リスト内にプロセス定義は残

り、状態が「削除済」になります。

プロセス定義をアーカイブする方法について説明します。

・ WFAdminSessionインタフェースのarchivePlan()を使用します。

adminSession.archivePlan(planList[i].getId());

一度プロセス定義をアーカイブした後も、以下のように再取得できます。

1. アーカイブ済のプロセス定義のIDを取得するには、アーカイブ済のプロセス定義の全リストを取得します。AllArchivedPlansフィ

ルタの基準を利用します。

2. 特定のアーカイブ済のプロセス定義を取得するにはWFAdminSessionインタフェースのgetArchivedPlan(id)を使用します。

adminSession.getArchivedPlan(planList[i].getId());

アーカイブ済のプロセス定義に対して実行できるのは、情報の取得など、一部の関数のみであることにご注意ください。プロセス定義

を変更する関数すべてが、アーカイブ済のプロセス定義でサポートされているわけではありません(setNameなど)。

7.3.4 プロセス定義の削除

管理者はすべてのユーザのプロセス定義を削除することができます。ただし、一般ユーザは自分が所有者であるプロセス定義だけ削

除できます。

プロセス定義の削除方法について説明します。

1. WFAdminSessionインタフェースのdeletePlan()を使用します。

adminSession.deletePlan(planList[i].getId());

このメソッドは、データベースから指定されたプロセス定義を選択します。プロセス定義は、「ドラフト」または「プライベート」状態

である必要があります。プロセス定義の状態がそれ以外の場合は、状態が「削除済」に変わりますが、データベースから物理的

に削除されるわけではありません。

7.3.5 アーカイブ済のプロセス定義の削除

データベースからアーカイブ済のプロセス定義を削除する方法について説明します。

1. WFAdminSessionインタフェースのdeleteArchivedPlan()を使用します。

adminSession.deleteArchivedPlan(archivedPlanList[i].getId());

- 110 -

Page 120: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

7.3.6 プロセス定義のインポート

XPDLファイルをインポートする方法について説明します。

1. WFObjectFactory.getPlan()を使用して、空のプロセス定義オブジェクトを作成します。

2. setWFSession()を使用して、現在のセッションをプロセス定義オブジェクトに設定します。

3. convertFromXPDL()を使用して、XPDLファイルからプロセス定義オブジェクトを作成します。

以下の例が正しく動作するように、定義したインポート元のディレクトリDIR_PATH_IMPORTにファイルが含まれていることを確認しま

す。

File importDir = new File(DIR_PATH_IMPORT);

if (importDir.exists() && importDir.isDirectory()) {

File[] fileList = importDir.listFiles();

String filePath; boolean fileFound = false;

Plan plan = null;

for (int i = 0; i < fileList.length; i++) {

filePath = fileList[i].getAbsolutePath();

if (filePath.endsWith(".xml") ||

filePath.endsWith(".xpdl")) {

plan = WFObjectFactory.getPlan();

plan.setWFSession(adminSession);

plan.convertFromXPDL(new FileInputStream(fileList[i]));

break;

}

}

}

7.3.7 プロセス定義のエクスポート

PlanインタフェースのconvertToXPDL()を使用して、プロセス定義をXPDLデータに変換することができます。プロセス定義をインポー

トする場合と同様に、インポートの宣言を拡張する必要があります。

プロセス定義をXPDLファイルにエクスポートする方法について説明します。

1. プロセス定義のリストから 初のプロセス定義を取得します。

if (planList != null && planList.length > 0) {

Plan plan = planList[0];

. . .

}

2. エクスポート先のディレクトリが存在するかどうかを確認します。存在しない場合は、新しいディレクトリを作成します。

File exportDir = new File(DIR_PATH_EXPORT);

if (!exportDir.exists() || !exportDir.isDirectory()) {

exportDir.mkdir();

}

3. エクスポートファイルを絶対ファイル名で生成します。

String fileName = DIR_PATH_EXPORT + "/" + "PLAN_" +

plan.getName() + "_" + plan.getId() + ".xml";

4. 新しいファイルオブジェクトを作成します。

File file = new File(fileName);

if (!file.exists()) {

- 111 -

Page 121: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

file.createNewFile();

. . .

}

5. プロセス定義をXPDLに変換します。

plan.convertToXPDL(new FileOutputStream(file));

7.4 プロセスインスタンス管理

ここでは、以下のプロセスインスタンス管理タスクについて説明します。

・ プロセスインスタンスリストを作成する

・ プロセスインスタンスの所有権を変更する

・ プロセスインスタンスをアーカイブする

・ プロセスインスタンスを一時停止する

・ プロセスインスタンスを中止する

・ プロセスインスタンスを削除する

・ アーカイブ済のプロセスインスタンスを削除する

7.4.1 プロセスインスタンスリストの作成

プロセスインスタンスリストを作成するには、com.fujitsu.iflow.model.workflowパッケージのWFObjectListインタフェースを使用します。

このインタフェースは、Interstage BPMサーバから既存のWFObjectsのリストを取得します。

プロセスインスタンスリストを作成する方法について説明します。

1. Filterクラスを使用して、フィルタを作成します。

プロセスインスタンスのフィルタには以下の条件を使用することができます。

- AllActiveProcesses: 活性中のすべてのプロセスインスタンスを取得します。

- AllArchivedProcesses: アーカイブ済のすべてのプロセスインスタンスを取得します。

- AllInactiveProcesses: 非活性状態のすべてのプロセスインスタンスを取得します。

- AllProcesses: すべてのプロセスインスタンスを取得します。

- AllProcessesInErrorState: 非活性状態のすべてのプロセスインスタンスを取得します。

- MyActiveProcesses: ログイン中のユーザによって開始された活性中のすべてのプロセスインスタンスを取得します。

- MyInactiveProcesses: ログイン中のユーザによって開始された非活性状態のすべてのプロセスインスタンスを取得します。

- MyProcesses: ログイン中のユーザによって開始されたすべてのプロセスインスタンスを取得します。

2. openBatchedList()を使用します。

3. openBatchedList()に設定したフィルタ条件に一致する、返却されたオブジェクトのリストの取得を繰り返します。

プロセスインスタンスリストを作成する方法の詳しいサンプルコードに関しては、Windowsの場合<Interstage BPMサーバのインストール

ディレクトリ>¥client¥samples¥examples¥sources、SolarisまたはLinuxの場合<Interstage BPMサーバのインストールディレクトリ>/client/samples/examples/sourcesディレクトリ内のAdministration.javaサンプルソースファイルを参照してください。

7.4.2 プロセスインスタンスの所有権の変更

プロセスインスタンスの所有権を変更できるのは、管理者または現在のプロセスインスタンスの所有者だけです。プロセスの所有権は、

プロセス定義レベルで設定される必要があります。プロセス所有者は、「所有者のロール」に属性を設定することで定義されます。「所

有者のロール」という属性は、新しいプロセスインスタンスを活性化する前にInterstage BPMサーバによって確認されます。

- 112 -

Page 122: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

ProcessInstanceインタフェースのsetOwners()を使用して、実行中のプロセスインスタンスの所有者を設定します。実際に所有権を変更

する前に、このメソッドは新たに所有者となるユーザやグループの存在を確認します。新たな所有者が存在しない場合、プロセスイン

スタンスはエラー状態になります。

以下の例では、プロセスインスタンスの所有権を、ユーザリストの 初のユーザに割当てます。

プロセスインスタンスの所有権を変更する方法について説明します。

1. 既存の全ユーザグループのリストを作成し、 初のグループのユーザリストを取得します。

if (procInstList != null) {

String[] owners = null;

String role = "";

DirectoryServices ds = WFObjectFactory.getDirectoryServices(

adminSession, adminName, password);

String[] groups = ds.getUserGroups();

if (groups != null && groups.length > 0) {

role = groups[0];

}

owners = ds.getUserList(role);

if (owners != null) {

boolean assigned = false;

...

}

}

2. プロセスインスタンスの所有者を変更するために、編集モードを開始します。

for (int i = 0; i < procInstList.length; i++) {

procInstList[i].startEdit();

...

}

3. プロセスインスタンスに所有者を設定します。

procInstList[i].setOwners(owners);

4. 編集モードをコミットします。

procInstList[i].commitEdit();

assigned = true;

7.4.3 プロセスインスタンスのアーカイブ

アーカイブできるのは、終了、中止、またはエラー状態のプロセスインスタンスだけです。そのため、プロセスインスタンスをアーカイブ

する前に、プロセスインスタンスの現在の状態を確認する必要があります。ProcessInstanceインタフェースから定数STATE_CLOSEDを

使用するとプロセスインスタンスの終了状態を特定できます。定数STATE_ERRORまたはSTATE_ABORTEDを使用し、プロセスイン

スタンスがエラー状態であるか中止状態であるかを確認します。

プロセスインスタンスをアーカイブする方法について説明します。

1. プロセスインスタンスのリストから、終了、中止、またはエラー状態のプロセスインスタンスを取得します。そのためには、ProcessInstanceインタフェースのgetState()を使用してプロセスインスタンスの現在の状態を確認します。

if (procInstList[i].getState() == ProcessInstance.STATE_CLOSED) ||

ProcessInstance.STATE_ABORTED || ProcessInstance.STATE_ERROR

{

...

}

2. 終了状態のプロセスインスタンスをアーカイブするには、WFAdminSessionインタフェースのarchiveClosedProcess()を使用しま

す。

adminSession.archiveClosedProcess(procInstList[i].getId());

- 113 -

Page 123: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

一度プロセスインスタンスをアーカイブした後も、以下のように再取得できます。

1. アーカイブ済のプロセスインスタンスのIDを再取得するには、アーカイブ済のプロセスインスタンスの全リストを取得します。

AllArchivedProcessesフィルタの基準を利用します。

2. 特 定 の ア ー カ イ ブ 済 の プ ロ セ ス イ ン ス タ ン ス を 取 得 す る に は 、 WFAdminSession interface.adminSession.getArchivedProcess(procInstList[i].getId())のgetArchivedProcess(id)を使用します。

アーカイブ済のプロセスインスタンスに対して実行できるのは、情報の取得など、一部の関数のみであることにご注意ください。プロセ

スインスタンスを変更する関数すべてが、アーカイブ済プロセスインスタンスでサポートされているわけではありません(setNameなど)。

7.4.4 プロセスインスタンスの一時停止

実行中のプロセスインスタンスを一時停止すると、インスタンスの状態がSTATE_SUSPENDEDに変わります。このプロセスインスタンス

にワークアイテムがあった場合は、それらも一時停止します。プロセスインスタンスに実行中のサブプロセスインスタンスがあった場合

は、それらも一時停止します。

プロセスインスタンスを一時停止する方法について説明します。

1. プロセスインスタンスの一覧で、実行中のプロセスインスタンスかどうかを確認します。そのためには、ProcessInstanceインタフェースの

getState()を使用してプロセスインスタンスの現在の状態を確認します。

if (procInstList[i].getState() == ProcessInstance.STATE_RUNNING)

{

...

}

2. 実行中のプロセスインスタンスを一時停止するには、ProcessInstanceインタフェースのsuspend()を使用します。

procInstList[i].suspend();

注意

プロセスインスタンスがSTATE_SUSPENDEDに変更される前に、プロセス定義レベルまたはアクティビティノードレベルで定義されている

Java Actionのセットが実行されることがあります。このJava Actionのセットは、suspend()コマンドを呼び出すとすぐに活性化されます。例

えば、通知メールがプロセスインスタンスの所有者に送信されたり、追加のログファイルエントリが書き込まれたりします。

onSuspendJavaActionSetの定義方法の詳細については、「6.2.10 中止時、一時停止時、および再開時アクションの使用」を参照してく

ださい。

ProcessInstanceインタフェースのresume()を使用して、一時停止しているプロセスインスタンスを再開することができます。プロセスイン

スタンスの状態は、STATE_RUNNINGに変わります。

ここでも、プロセスインスタンスがSTATE_RUNNINGに再び変更される前に、プロセス定義レベルまたはアクティビティノードレベルで

定義されているJava Actionのセットが実行されることがあります。このJava Actionのセットは、resume()コマンドを呼び出すとすぐに活性

化されます。

7.4.5 プロセスインスタンスの中止

プロセスインスタンスを中止すると、インスタンスの状態がSTATE_ABORTEDに変わります。このプロセスインスタンスにワークアイテム

があった場合は、すべて削除されます。プロセスインスタンスに実行中のサブプロセスインスタンスがあった場合は、それらも中止され

ます。

プロセスインスタンスを中止する方法について説明します。

1. ProcessInstanceインタフェースのabort()を使用します。

このメソッドは管理者、またはプロセスインスタンスの所有者だけが使用できます。ほかのユーザは、プロセスインスタンスの中止

を許可されていません。

- 114 -

Page 124: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

以下の例では、ProcessInstanceインタフェースのgetState()を使用して、プロセスインスタンスのリスト内で実行中(定数STATE_RUNNING)または一時停止中(定数STATE_SUSPENDED)のインスタンスをチェックします。getState()はプロセスインスタンスの現在の状態を返し

ます。次に、リスト内で 初に見つかった実行中、または一時停止中のプロセスインスタンスを中止します。

if (procInstList != null ) {

boolean aborted = false;

for (int i = 0; i < procInstList.length; i++) {

if (procInstList[i].getState() ==

ProcessInstance.STATE_RUNNING

|| procInstList[i].getState() == ProcessInstance.STATE_SUSPENDED)

{

procInstList[i].abort();

aborted = true;

}

}

}

注意

プロセスインスタンスがSTATE_ABORTEDに再び変更される前に、プロセス定義レベルまたはアクティビティノードレベルで定義されている

Java Actionのセットが実行されることがあります。このJava Actionのセットは、abort()コマンドを呼び出すとすぐに活性化されます。例え

ば、通知メールがプロセスインスタンスの所有者に送信されたり、追加のログファイルエントリが書き込まれたりします。onAbortJavaActionSetの定義方法の詳細については、「6.2.10 中止時、一時停止時、および再開時アクションの使用」を参照してください。

7.4.6 プロセスインスタンスの削除

プロセスインスタンスの削除方法について説明します。

1. WFAdminSessionインタフェースのdeleteProcessInstance()を使用します。

このメソッドは、プロセスインスタンスのIDを使用してデータベースからプロセスインスタンスを削除します。

以下の例では、リスト内の 初の有効なプロセスインスタンスが削除されます。

if (procInstList != null ) {

boolean deleted = false;

for (int i = 0; i < procInstList.length; i++) {

adminSession.deleteProcessInstance

(procInstList[i].getId());

deleted = true;

break;

}

}

7.4.7 アーカイブ済のプロセスインスタンスの削除

データベースからアーカイブ済のプロセスインスタンスを削除する方法について説明します。

1. WFAdminSessionインタフェースのdeleteArchivedProcess()を使用します。

adminSession.deleteArchivedProcess(archivedProcInstList[i].getId());

7.5 ワークアイテム管理

ここでは、以下のワークアイテム管理タスクについて説明します。

・ ワークアイテムを別のユーザに再割当てする

・ ワークアイテムを更新する

- 115 -

Page 125: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

7.5.1 ワークアイテムのユーザに再割当て

ワークアイテムのユーザに再割当て

ワークアイテムを別のユーザに再割当てする方法について説明します。

1. WFSessionAdminインタフェースのreassign()を使用します。

以下の例では、ワークアイテムをあるユーザから別の既存のユーザに再割当てする方法を示しています。

if (workItemList != null && workItemList.length > 0) {

WorkItem workItem = workItemList[0];

UserInfo[] userList = listUsers();

String oldAssignee = "";

String newAssignee = "";

if (userList != null && userList.length > 0) {

oldAssignee = workItem.getAssignee();

newAssignee = userList[0].getName();

adminSession.reassign(oldAssignee, newAssignee,

workItem.getProcessInstanceId(),

workItem.getId(),false);

}

}

7.5.2 ワークアイテムの更新

管理者がロールにユーザを追加したり、削除したりする場合、この情報が自動的に関連する活性中のタスクのワークアイテムに転送さ

れることはありません。情報を更新するには、管理者がワークアイテムを更新する必要があります。

タスクを完了するために、さまざまな反復処理が必要となるので、ワークアイテムを更新するにはある程度時間がかかります。したがっ

て、実行にかかる時間は、データベース内の活性中のタスクの量に依存します。実行時間を短縮するため、更新するワークアイテムを

選択する際には、以下のオプションがあります。

・ プロセスインスタンスのワークアイテム。

・ プロセス定義に属するすべてのプロセスインスタンスのワークアイテム。

・ グループのワークアイテム。

・ すべての既存のワークアイテム。

・ プロセスインスタンスのワークアイテムを更新する方法について説明します。

boolean ignoreActivityWithRoleScript = true;

String refreshResult = null;

if (procInst != null) {

long procInstId = procInst.getId();

refreshResult = adminSession.refreshWIforProcess(procInstId,

ignoreActivityWithRoleScript);

}

・ プロセス定義に属するすべてのプロセスインスタンスのワークアイテムを更新します。

if (procDef != null) {

long procDefId = procDef.getId();

refreshResult = adminSession.refreshWIforPlan(procDefId,

ignoreActivityWithRoleScript);

・ グループのワークアイテムを更新します。

String group = "Role";

refreshResult = adminSession.refreshWIforGroup(group,

ignoreActivityWithRoleScript);

- 116 -

Page 126: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ すべてのワークアイテムを更新します。

refreshResult = adminSession.refreshWorkItems

(ignoreActivityWithRoleScript);

注意

Interstage BPMサーバの SupportGroupWorkItemパラメータにtrueが設定されている場合、Filter.MyActiveWorkItemsフィルタはサポー

トしません。したがって、このフィルタを使用してワークアイテムを取得することはできません。

この場合、更新するワークアイテムを取得する独自のフィルタを定義する必要があります。ワークアイテムのフィルタを構築する詳細に

ついては、「5.3.3 ワークアイテムリストの作成」を参照してください。SupportGroupWorkItemパラメータの詳細については、『Interstage BPMサーバ 管理者ガイド』を参照してください。

更新結果はXMLの文字列としてフォーマットされ、操作が成功したか、失敗したかがリストで表示されます。以下にXML文字列の例を

示します。

<?xml version="1.0" encoding="UTF-8" ?>

<Processes>

<success>

<Process Name="procName" id="123"></Process>

</success>

<failed>

<Process Name="procName" id="456" Status="ignored"

message="error message" />

<Process Name="procName" id="123">

<Activities>

<Activity Id="123456" Name="activityName"

Status="ignored" message="error message" />

</Activities>

</Process>

</failed>

</Processes>

<success>タグには、ワークアイテムの更新に成功したプロセスインスタンスの一覧が含まれています。<failed>タグには、更新に失敗し

たプロセスインスタンスの一覧が含まれています。<Activities>タグには更新に失敗したプロセスインスタンスのアクティビティが含まれ

ています。

- 117 -

Page 127: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

第8章 履歴情報の取得

各プロセスインスタンスは、ワークフローに関する情報を、teamflowdbというInterstage BPMのデータベースに保存します。teamflowdbデータベースのHistoryテーブルには、プロセスインスタンスのワークフロー内の各ステップが保存されています。

Historyテーブルから履歴情報を取得するには以下の方法があります。

・ Model APIを使用する

・ ハッシュテーブルから取得する

・ SQLステートメントを使用する

8.1 Model APIを使用した履歴情報の取得

Model APIを使用して、プロセスインスタンスから履歴情報を取得する方法について説明します。

1. 次のコードを基礎として使用します。

import com.fujitsu.iflow.model.workflow.ProcessInstance;

import com.fujitsu.iflow.model.util.IflowEnumeration;

int processHistoryFields[] = {

ProcessInstance.HISTORY_ID,

ProcessInstance.HISTORY_TIME_STAMP,

ProcessInstance.HISTORY_EVENT_CODE,

ProcessInstance.HISTORY_EVENT_TYPE,

ProcessInstance.HISTORY_RESPONSIBLE,

ProcessInstance.HISTORY_PRODUCER_TYPE,

ProcessInstance.HISTORY_PRODUCER_ID,

ProcessInstance.HISTORY_CONSUMER_TYPE,

ProcessInstance.HISTORY_CONSUMER_ID,

ProcessInstance.HISTORY_PROCESSINSTANCE_ID,

ProcessInstance.HISTORY_ISHANDLED_CODE,

ProcessInstance.HISTORY_EVENTDATA

};

ProcessInstance procInst =

WFObjectFactory.getProcessInstance(procID, session);

IflowEnumeration sElements =

processInstance.getHistory(processHistoryFields);

getHistory()は、関連するプロセスインスタンスから、すべての履歴データを取得します。取得する列は、INTEGER型の配列で

定義され、メソッドの引数に渡されます。

2. 取得したIflowEnumeration型のオブジェクトを検索し、履歴エントリの各行にアクセスします。

while(sElements.hasMoreElements())

{

Hashtable htblEvent = (Hashtable) sElements.nextElement();

// ここに、「ハッシュテーブルからの履歴情報の取得」のコードが入ります。

}

以下のテーブルは、ProcessInstanceクラスの定数とHistoryテーブルの列のマッピングを示しています。

ProcessInstanceクラスの定数 列名

HISTORY_ID historyID

HISTORY_TIME_STAMP CreatedTime

HISTORY_EVENT_CODE EventCode

HISTORY_EVENT_TYPE EventType

- 118 -

Page 128: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

ProcessInstanceクラスの定数 列名

HISTORY_EVENTDATA EventData

HISTORY_PRODUCER_TYPE ProducerType

HISTORY_PRODUCER_ID ProducerId

HISTORY_CONSUMER_TYPE ConsumerType

HISTORY_CONSUMER_ID ConsumerId

HISTORY_ISHANDLED_CODE IsHandled

HISTORY_PROCESSINSTANCE_ID ProcessInstanceId

HISTORY_RESPONSIBLE Responsible

8.2 ハッシュテーブルからの履歴情報の取得

「8.1 Model APIを使用した履歴情報の取得」のコードを使用して、プロセスインスタンスからすべての履歴データを取得することができ

ます。結果は、ハッシュテーブルに保存されます。以降の各節では、ProcessInstanceクラスの単一定数の値を取得する方法を説明しま

す。

8.2.1 HISTORY_IDエントリの履歴IDを取得するには、次のコードを使用します。

long historyId = ((Long)htblEvent.get

(new Integer(ProcessInstance.HISTORY_ID))).longValue();

Historyテーブルの各エントリには、固有の識別子が設定されています。

8.2.2 HISTORY_TIME_STAMPエントリのタイムスタンプを取得するには、次のコードを使用します。

long timestamp = ((Long)htblEvent.get(

new Integer(ProcessInstance.HISTORY_TIME_STAMP))).longValue();

LONG型の日付の値を読みやすい形式に変換するには、標準のJavaステートメントを使用します。

8.2.3 HISTORY_EVENT_CODEエントリのイベントコードを取得するには、次のコードを使用します。

long historyEventCode = ((Long) htblEvent.get

(new Integer(ProcessInstance.HISTORY_EVENT_CODE)).longValue();

イベントコードは、イベントの種類を表します。次の表は、イベントコードの値と、その意味を示しています。

イベントコード 説明

0 開始(デフォルト)

1 活性化

2 選択

3 承認

4 拒否

5 再割当て

6 終了

7 サブプロセスを作成

- 119 -

Page 129: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

イベントコード 説明

8 ワークアイテムを一時停止

9 ワークアイテムを再開

8.2.4 HISTORY_EVENT_TYPEエントリのイベントタイプを取得するには、次のコードを使用します。

String eventType = (String) htblEvent.get(

new Integer(ProcessInstance.HISTORY_EVENT_TYPE));

イベントタイプは、Interstage BPMのアクティビティの名前または矢印の名前を特定します。たとえば、矢印にCreate Purchase Requisitionという名前が付けられている場合、HISTORY_EVENT_TYPEの結果は、Create Purchase Requisitionとなります。

8.2.5 HISTORY_EVENTDATAイベントに関する追加データを取得するには、次のコードを使用します。

String eventData = (String) htblEvent.get(

new Integer(ProcessInstance.HISTORY_EVENTDATA));

取得した値は、ほとんどの場合、NULLとなります。

8.2.6 HISTORY_PRODUCER_IDエントリのプロデューサIDを取得するには、次のコードを使用します。

long producerId = ((Long)htblEvent.get(

new Integer(ProcessInstance.HISTORY_PRODUCER_ID))).longValue();

プロデューサタイプに応じて、プロデューサIDは異なる種類の情報を指定します。

8.2.7 HISTORY_PRODUCER_TYPEエントリのプロデューサタイプを取得するには、次のコードを使用します。

long lProdType=((Long)htblEvent.get(

new Integer(ProcessInstance.HISTORY_PRODUCER_TYPE))).longValue();

プロデューサタイプは、現在のイベントの作成に関与するイベントを示します。次の表は、プロデューサタイプの値と、その意味を示し

ています。

プロデューサタイプ 説明

0 矢印

3 アクティビティ

7 プロセス

15 タイマ

8.2.8 HISTORY_CONSUMER_IDエントリのコンシューマIDを取得するには、次のコードを使用します。

long consumerId = ((Long)htblEvent.get(

new Integer(ProcessInstance.HISTORY_CONSUMER_ID))).longValue();

コンシューマタイプに応じて、コンシューマIDは様々な種類の情報を指定します。詳細については、「8.2.13 履歴エントリの検索ルー

ル」を参照してください。

- 120 -

Page 130: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

8.2.9 HISTORY_CONSUMER_TYPEエントリのコンシューマタイプを取得するには、次のコードを使用します。

long lConsType = ((Long)htblEvent.get(

new Integer(ProcessInstance.HISTORY_CONSUMER_TYPE))).longValue();

コンシューマタイプは、イベントの対象となっているエレメントの種類を示します。次の表は、コンシューマタイプの値と、その意味を示し

ています。

コンシューマタイプ 説明

3 アクティビティ

7 プロセス

コンシューマタイプを解釈する方法の詳細については、「8.2.13 履歴エントリの検索ルール」を参照してください。

8.2.10 HISTORY_ISHANDLED_CODEエントリのIsHandledの値を取得するには、次のコードを使用します。

long isHandledCode = ((Long)htblEvent.get(

new Integer(ProcessInstance.HISTORY_ISHANDLED_CODE)))

.longValue();

次の表は、IsHandledの値と、その意味を示しています。

isHandledコード 説明

0 未処理

1 処理済

2 無視

3 エラー

4 監査

5 一時停止

8.2.11 HISTORY_PROCESSINSTANCE_IDエントリのプロセスインスタンスIDを取得するには、次のコードを使用します。

long procInstId = ((Long)htblEvent.get(

new Integer(ProcessInstance.HISTORY_PROCESSINSTANCE_ID)))

.longValue();

8.2.12 HISTORY_RESPONSIBLEHistoryテーブルへのエントリの要因となった作業者を取得するには、次のコードを使用します。

String responsible = (String) htblEvent.get(

new Integer(ProcessInstance.HISTORY_RESPONSIBLE));

取得可能な値は、次のとおりです。

・ __process

ワークフローエンジンのアクティビティを示すシステムユーザID

・ <userID>

アクションを実行したユーザIDを示す、有効なユーザID

- 121 -

Page 131: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

8.2.13 履歴エントリの検索ルール

プロセスインスタンスのHistoryテーブルのエントリを検索するには、次のルールが定義されています。

ルール1

Historyテーブルのエントリを検索するには、以下の3条件のうちの1つを満たしているエントリだけが評価されます。

・ 活性化イベント

次の基準をすべて満たすものに適用されます。

- ConsumerTypeが、3と定義されている(アクティビティ)

- EventTypeが、__Activateと等しい

・ Activityノード

次の基準をすべて満たすものに適用されます。

- ConsumerTypeが、3と定義されている(アクティビティ)

- EventTypeが、__Activateと等しくない

- ProducerTypeが、7と定義されている(プロセス)

・ 矢印

次の基準をすべて満たすものに適用されます。

- ConsumerTypeが、3と定義されている(アクティビティ)

- EventTypeが、__Activateと等しくない

- ProducerTypeが、0と定義されている(矢印)

ルール2

タイプ1のエントリ、つまり、活性化イベントがある場合、タイムスタンプだけが取得されます。

ルール3

タイプ2のエントリ、つまり、Activityノードがある場合、コンシューマIDは、プロセスインスタンス内のノードインスタンスのIDを表します。

Model APIを使用して、ノードインスタンスを次のように取得することができます。

// CONSUMER_IDは、ノードインスタンスIDを表します。

long consumerId = ((Long)htblEvent.get(

new Integer(ProcessInstance.HISTORY_CONSUMER_ID))).longValue();

NodeInstance nodeInst = procInst.getNodeInstance(consumerId);

// NodeInstanceクラスのオブジェクトから引き続き

// 情報を取得します。

ルール4

タイプ3のエントリ、つまり、矢印がある場合、プロデューサIDは、プロセスインスタンス内の矢印インスタンスのIDを表します。Model APIを使用して、始点および終点のノードのノードインスタンスを次のように取得することができます。

// PRODUCER_IDは、矢印インスタンスIDを表します。

long producerId = ((Long)htblEvent.get(

- 122 -

Page 132: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

new Integer(ProcessInstance.HISTORY_PRODUCER_ID))).longValue();

ArrowInstance arrow = procInst.getArrowInstance(producerId);

NodeInstance sourceNodeInst = arrow.getSourceNodeInstance();

NodeInstance targetNodeInst = arrow.getTargetNodeInstance();

// 矢印インスタンスのソースオブジェクトとターゲットオブジェクトから

// 引き続き情報を取得します。

8.3 履歴テーブル

履歴テーブルでは、プロセスインスタンスのワークフローでの各ステップは別々のエントリ(行)で定義されます。ステップは「プロセスイ

ンスタンスの作成」のようなシステムアクションや「承認に投票」のようなプロセス定義で明示的に定義されるアクティビティの実行で定義

されます。

注意

Interstage BPMの将来のバージョンではここで説明しているデータベーススキーマは変更されるかもしれません。データベーススキー

マに基づいてアプリケーションを開発する場合、データベーススキーマが変更されるとアプリケーションも変更する必要があります。

フィールド 値・サンプル 備考

historyID 888919 履歴テーブル各行で単一に識別

EventCode 0=Start (default)

1=Activate

2=MakeChoice

3=Accept

4=Decline

5=Reassign

6=Exit

7=CreateSubProcess

8=SuspendWorkItem

9=ResumeWorkItem

各コードは別々のEventを一意に識別

EventType "Approve"

または

"Submit Purchase Order:99198"

Event名

EventData NULL 追加情報。ほとんどの場合はNULLです。

CreatedTime "2004-11-12 13:19:12.820"

または

"22.12.2004 16:48"

このアクティビティ作成のタイマースタンプ

(文字列形式)

Responsible "jim"

または

"__process"

イベント作成の原因となったユーザまた

はシステムの名前。ノードに割当てられ

たロールがない場合はシステムがノード

を実行し、名前"__process"を使用しま

す。

IsHandled 0=notHandled Eventの状態

- 123 -

Page 133: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

フィールド 値・サンプル 備考

1=handled

2=ignored

3=Error

4=audit↓

ProducerType 0: arrow

7: node↓

現在のEvent作成の原因となったエレメン

ト。矢印かノードのいずれか。

ProducerId 99130 ProducerType = 0の場合、ProducerIdは現在のEventの矢印インスタンスIDを示し

ます。矢印インスタンスIDを使ってEventのソースとターゲットノードインスタンスを

取得できます。

ConsumerType 0=ArrowType

3=ActivityType

7=ProcessType

Eventが示すエレメントタイプ

ConsumerId 99116 ProducerType = 7の場合、ConsumerIdは現在のノードのノードインスタンスIDを示

します。

ProducerType = 0の場合、ConsumerIdはターゲットノードのノードインスタンスIDを

示します。同じノードインスタンスを矢印

インスタンスから取得することができます。

ProcessInstanceId 88892 プロセスインスタンスの一意なID

ServerName Localhost これらのEventが生成・処理されるサーバ

8.4 SQLステートメントの履歴情報検索

teamflowdbデータベースでSQLステートメントを使用して履歴情報を検索できます。

・ 履歴テーブルに保存されたすべてのデータに関する全体像を得るには、以下のように設定します。

SELECT * HISTORY

・ 特定のプロセスインスタンスにリンクしたすべての行を検索するには、以下のように設定します。

SELECT * FROM HISTORY WHERE PROCESSINSTANCEID=<PROCID>

プロセスインスタンスの要求されたID(数字)で<PROCID>を置き換えます。

以下の図は完了したプロセスインスタンスに割り当てられた履歴テーブルへのすべてのエントリ例を示しています。

- 124 -

Page 134: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

図8.1 履歴テーブルのエントリ

- 125 -

Page 135: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

付録A Interstage BPMのサンプル

このマニュアルのサンプルでは、Model APIを使ってInterstage BPMのプログラミングを行うさまざまな方法を示します。Interstage BPMサーバをインストールすると、<Interstage BPMサーバのインストールディレクトリ>ディレクトリ (Windowsの場合C:¥Fujitsu¥InterstageBPM、SolarisまたはLinuxの場合/opt/FJSVibpm)に以下のサブディレクトリが作成されます。

¥client¥samples¥examples¥sources (Windowsの場合)、/client/samples/examples/sources (SolarisまたはLinuxの場合)

¥ client¥samples¥examples¥classes (Windowsの場合)、/client/samples/examples/classes (SolarisまたはLinuxの場合)

¥ client¥samples¥examples¥bin (Windowsの場合)、/client/samples/examples/bin (SolarisまたはLinuxの場合)

各サブディレクトリの内容については、次の節で詳しく説明します。

A.1 /client/samples/examples/sourcesこのディレクトリにはこのマニュアル中で使用される例のJavaソースコードが格納されています。 例の実行方法は、Interstage BPMサー

バのインストールディレクトリの/client/samples/examples/sourcesサブディレクトリにあるサンプルソースコードを参照してください。

以下は、利用できるサンプルソースのリストと、このマニュアル中での説明箇所です。

A.1.1 プロセスのモデル化と実行に関連したサンプル

SimplePlan.java

このサンプルは単純なInterstage BPMプロセス定義を作成します。

「5.1 基本的なプロセス定義のデザイン」に追加情報があります。

ComplexPlan.java

このサンプルは、ユーザ定義属性やVoting Activityノードの追加方法、Java Actionの使い方など、複雑なInterstage BPMプロセス定

義の作成方法を示します。

このサンプルに関する追加情報については、以下を参照してください。

「5.2 応用的なプロセス定義のデザイン」

「6.2 Java Action」

「6.3 フィルターとソートのAPI」

「6.5 特別なユーザ定義属性のプロパティ」

「6.6 拡張属性の使用」

「6.7 トランザクション制御」に追加情報があります。

ProcessExecution.java

このサンプルは新しいプロセスインスタンスの開始とワークアイテム実行の方法を示します。

「5.3 プロセスインスタンス」

「6.7 トランザクション制御」に追加情報があります。

注意

このサンプルにはInterstage BPMサーバインストールディレクトリへのpath を含むINSTALL_ROOT定数があります。デフォルトでは、pathの値にはC:¥Fujitsu¥InterstageBPM が設定されます。UNIXまたはLinuxを使用している場合、もしくは、Interstage BPMサーバを違う

場所にインストールした場合は、この値を調整する必要があります。

- 126 -

Page 136: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

SampleJavaActions.java

このサンプルには、ComplexPlan.javaで作成したプロセス定義で定義されたJava Action(メールの送信など)の使用方法が含まれま

す。

「6.2 Java Action」に追加情報があります。

TriggerTimerSample.java

このサンプルはトリガ、タイマーおよびビジネスカレンダーの使用を示します。トリガで始まるプロセス定義を作成します。

「6.8 トリガ」

「6.12 タイマーの使用」に追加情報があります。

RemoteSubProcess.java

このサンプルは、リモートサブプロセスを定義、使用する方法を示しています。Remote Subprocessノードとリモートサブプロセスとして使

用される別のプロセス定義を含むプロセス定義を作成します。

「6.13 リモートサブプロセスのモデル化」に追加情報があります。

AgentSimulator.java and AgentSimulator.xpdl

AgentSimulator.xpdlは、簡単な銀行ローン承認プロセスをモデル化するプロセス定義です。AgentSimulator.javaはローンを決定する

担当をシミュレーションするエージェントクラスの例です。さらなる情報はAgentSimulator.java ソースファイルと「6.11 エージェントの使

用」を参照してください。

HTTPAgentExample

HTTPAgentExampleサブディレクトリにはHTTPエージェントを実行するためにあらかじめ設定されたHTTP Exampleがあります。 例の

エージェントではHTTPエージェントの完全な機能性を示します。さらなる詳細情報はHTTPAgentExampleInstructions.txtファイルと

「6.11.5 HTTPエージェントの使用」を参照してください

A.1.2 System Administration に関連したサンプル

Administration.java

このサンプルはユーザリスト作成、ユーザログアウト、ユーザディレクトリからのデータをリセット、プロセス定義の発行・保存などのような

様々な管理アクティビティを示します。

注意

このサンプルは既存のプロセス定義とプロセスインスタンスで実行します。確実にすべてのプロセス定義が有効で実行可能であるよう

にしてください。さらに、このサンプルが新しいインスタンスを開始し、既存のインスタンスの状態を変更するようにしてください。

「第7章 運用管理」に追加情報があります。

SampleLocalUserManagement.java

このサンプルはローカルユーザとグループを作成、グループにユーザを配属、他のグループにグループを関連づけるなどのローカル

ユーザとグループ管理を示します。

「7.2 ユーザおよびグループ管理」に追加情報があります。

A.1.3 JMS インターフェースに関連したサンプル

JMSインタフェースはModel APIのようなInterstage BPMサーバへのインタフェースです。Model APIですべてのInterstage BPMオペ

レーションを実行するオブジェクトをモデル化するためにメソッドに呼び出すことができます。Model APIはInterstage BPMサーバへの

主要インタフェースですが、オプションとしてJMSインタフェースを使用することによって、よりダイレクトに情報交換ができます。しかしJMSインタフェースの機能はいくつかの主要なInterstage BPMオペレーションに制限されます。

JMSインタフェースの基本トピックは2つあります。

- 127 -

Page 137: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ Interstage BPMコマンドトピック

・ Interstage BPM応答トピック

JMSクライアントはコマンドトピックに要求メッセージを掲示します。このメッセージにはInterstage BPMコマンドとその実行に必要な情報

が入っています。JMSクライアントから要求を受け入れるためにコマンドトピックを構成し、処理のためにInterstage BPMサーバに移しま

す。JMS APIはInterstage BPMサーバへの要求されたアクションを実行し、応答を取得します。適切な形式のすべての要求への応答

メッセージは、必要な情報を含んでいて、応答トピックに掲示されます。その情報はその後JMSクライアントに伝えられます。

要求と応答JMSメッセージはInterstage BPM JMSインタフェーススキーマiFlowJMS.xsdによりフォーマットされなければならないXMLです。<Interstage BPMのインストールディレクトリ>/client/samples/docs/jmsにiFlowJMS.xsdと関連するドキュメントがあります。

JMS Interface を使用する場合は、以下の手順に従います。

1. JMS Client の設定

- JMSインタフェースをランスルーしたいInterstage BPMコマンドにXMLに書き込む必要があるInterstage BPM情報を集めま

す。

必要な情報を決定するとき、ガイドとしてInterstage BPM JMSインタフェーススキーマiFlowJMS.xsdと、関連するドキュメント

を使用します。

- 実行するInterstage BPMコマンドにXMLを書き込みます。

もう一度ガイドとして、Interstage BPM JMSインタフェーススキーマと関連するドキュメントを使用します。任意で、XMLにInterstage BPMインストール時に作成したデフォルト応答トピックと異なる応答トピックを指定できます。

- JMSクライアントをセットアップし、コマンドトピックに書きこんだXMLを掲示します。PATHとCLASSPATH設定のガイドとして

サンプルを使用します。アプリケーションのサーバ特定クライアントプロパティファイルをCLASSPATHに必ず追加します。

- これでコマンドトピックに書きこんだXMLを掲示する準備ができました。

2. コマンドトピックへの掲示要求

<Interstage BPM Installation Directory>/samples/examples/sourceディレクトリのInterstage BPMインスタレーションで利用可能な

様々なJMSに関連するサンプルがあります。これらのサンプルファイルはJms*.javaファイル名で認識されます。

注意

Interstage BPMのJMSインタフェースにはプロセス定義を作成するための機能がありません。ぞのため、プロセス定義の作成を示した

別のサンプルcreatePlan.javaを用意します。

Interstage BPMサンプルのビルドと実行の方法については「B.3 トリガでサポートするJavaScript関数」 を参照してください。

JMS インタフェースに関連したサンプルの一覧

注意

いくつかのJMSサンプルが<Interstage BPMのインストールディレクトリ>/samples/configurationにあるサーバプロパティファイル

server.propertiesを参照します。このファイルは以下の属性の読み込み、またアップデートに使用されます。

planId、processId、workitemId、choiceName、UdaName

createPlanサンプルファイルによって作成されたプロセス定義を使用しない場合、対応するJMSサンプルを実行する前にこのファイルを

アップデートできます。

例: JmsAcceptWorkItemサンプルを実行している場合、server.propertiesで特定されたworkitemidが有効になっている必要があります。

JmsGetMyWorkItemsは適切なworkitemidでserver.propertiesをアップデートします。このように適切なworkitemidでserver.propertiesファ

イルをアップデートされるようにJmsAcceptWorkItemの前にJmsGetMyWorkItemsを実行する必要があります。

- 128 -

Page 138: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

注意

JMS インターフェース に関連したサンプルは以前のプログラムで生成されたワークフローオブジェクトを使用するため、特定の順序で

実行する必要があります。例えば、createPlan はJmsGetMyPlans の前にJmsGetMyPlans を実行する必要があります。

JmsGetMyPlans ログインユーザによって所有されたプロセス定義のリストを取得します。

JmsGetPlanState プロセス定義の状態を取得します。

JmsGetPlanUDA プロセス定義を使用してUDAを取得します。

JmsCreateProcess プロセスインスタンスを作成します。

JmsStartProcess プロセスインスタンスを開始します

JmsGetMyProcesses ログインユーザによって所有されたプロセス定義のリストを取得します。

JmsGetProcessState プロセス定義の状態を取得します。

JmsGetProcessUDA プロセス定義を使用してUDAを取得します。

JmsGetMyWorkItems ログインユーザに割当てられたワークアイテムのリストを取得します。

JmsAcceptWorkItem ワークアイテムを受理します

JmsGetWorkItemState ワークアイテムの状態を取得します。

JmsDeclineWorkItem ワークアイテムを拒否します。

注意

このサンプルの前に、以下のサンプルを上から順番に実行してください。

・ JmsCreateProcess

・ JmsStartProcess

・ JmsGetMyWorkItems

JmsGetWorkItemUDA ワークアイテムを使用してUDAを取得します。

JmsMakeChoice Make choiceオペレーションを実行します。

注意

このサンプルの前に、以下のサンプルを上から順番に実行してください。

・ JmsCreateProcess

・ JmsStartProcess

・ JmsGetMyWorkItems

JmsPublishPlan プロセス定義を発行します。

JmsObsoletePlan プロセス定義を「廃止」状態に設定します。

JmsSuspendProcess プロセスインスタンスの実行を一時停止します。

JmsResumeProcess プロセスインスタンスの実行を再開します。

JmsAbortProcess プロセスインスタンスの実行を停止します。

A.2 /client/samples/examples/classes/client/samples/examples/classesサブディレクトリはサンプルのために保存されたクラスファイルを含んでいます。

- 129 -

Page 139: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

iFlowClient.propertiesが現在のランタイムディレクトリにいつもなければならないことに注意してください。 現在のランタイムディレクトリ

の場所について、「4.3 プロパティファイルの格納」を参照してください。

A.3 /client/samples/examples/binWindowsの¥client¥samples¥examples¥binサブディレクトリ(SolarisまたはLinuxの場合は/client/samples/examples/bin)には、次の2つの

バッチファイルが格納されています。

StartSamples.bat: サンプルファイルの実行を開始します。SolarisまたはLinuxの場合は、StartSamples.shファイルを使用してください。

必ず実行する前に、このバッチファイルを編集し、JAVA_HOME変数にJDKをインストールするディレクトリを設定してください。さらに、

CLASSPATH変数が、iflow.jarファイルおよびアプリケーションサーバ特定のjarファイルが格納されている正確なディレクトリを指して

いることを確認してください。WeblogicとJBossのパスの例については、ファイルStartSamples.batまたはStartSamples.shを参照してくださ

い。

バッチファイルを実行する場合、サンプルファイル名(以下を参照)、管理者権限を持つユーザ名とパスワード、Interstage BPMサーバ

の名前を指定する必要があります。これらは、IBPMPROPERTIESの表またはibpm.propertiesファイルにあるものと同一でなければなり

ません。

BuildSamples.bat: Javaソースファイル用のクラスファイルを作成します。SolarisまたはLinuxの場合は、BuildSamples.shファイルを使用

してください。

この場合も、JAVA_HOME変数とCLASSPATH変数が正しいディレクトリを指していることを確認してください。

- 130 -

Page 140: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

付録B JavaScript関数

Interstage BPMには、Java Action、トリガ、およびComplex Conditionalノードに使用できるJavaScript関数のセットが用意されています。

ここでは、これらの要素に対してどの関数を使用できるかを説明します。

ここに挙げられている関数とは別に、ECMA標準で定義しているJavaScriptの関数を使用することもできます。ECMA標準の情報につ

いては、Interstage BPMのインストールファイルに含まれているecma-262.pdfを参照してください。

注意

JavaScriptで使用するメソッドが保有しているサイズが、Java Virtual Machine (JVM)により制限されている場合があります。現在では、

そのメソッドバイトコードサイズは、65535バイト(64キロバイト)に制限されています。これ以上のサイズのメソッドを使用している場合に

は、JVMによりエラーが返されます。メソッドのサイズを縮小してから、再度JavaScriptを実行してください。

B.1 JavaScript関数

ここで説明するJavaScript関数は、Java Action、トリガ、およびComplex Conditionalノードに使用できます。

注意

数値がNumber型の値として扱われるため、JavaScriptでは、以下の範囲の整数のみ使用可能です。

・ 低値:-9007199254740992

・ 高値:9007199254740992

Long型の以下の 高値、 低値は、サポートしておりません。

・ 低値:Packages.java.lang.Long.MIN_VALUE

・ 高値:Packages.java.lang.Long.MAX_VALUE

new Packages.java.util.Date()

詳細については、J2SE Development Kit (以降、JDKと呼びます。)に付属しているJavadocを参照してください。

Date DateAdd(DateまたはNumber date, Number offset, String field)

日付にoffset値を加えた結果の日時を含むJavaScript Dateオブジェクトを返します。fieldの値には、offset値の基準となる単位を指定し

ます。有効なfield値は以下のとおりです。

field値 説明

"ss" 秒

"mi" 分

"hh" 時

"dd" 日

例:

var now = Packages.java.util.Date(); uda.Date = DateAdd (now, 1, "dd");

注意

この例が正しく機能するのは、UDA DateがDATE型の場合だけです。

- 131 -

Page 141: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

nowが以下の値であるとします。

Tue Jul 01 2006 14:02:59 GMT-0800 (PST)

この場合、tomorrow ( DateAdd ( now, 1, "dd" ) )の値は以下のようになります。

Wed Jul 02 2006 14:02:59 GMT-0800 (PST)

dateがNUMBER型である場合、その値は1970年1月1日以降のミリ秒として解釈されます。

Boolean DateCompare(DateまたはNumber date1, String operator, DateまたはNumber date2)

2つのDate値を比較し、その結果に応じてtrueまたはfalseを返します。有効な演算子は以下のとおりです。

演算子 説明

">" より大きい

"<" より小さい

">=" 以上

"<=" 以下

"==" と等しい

"!=" と等しくない

例:

var now = Packages.java.util.Date(); var tomorrow = DateAdd (now, 1, "dd"); if (DateCompare (now,"<",

tomorrow)) ...; //...DateCompareの結果がtrueのため実行する。

date1とdate2がNUMBER型である場合、それらの値は1970年1月1日以降のミリ秒として解釈されます。

Number DateDiff(DateまたはNumber date1, DateまたはNumber date2, String field)

date1からdate2を減算します。fieldの値に応じて、差分を日、時、分、または秒で返します。有効なfield値は以下のとおりです。

field値 説明

"ss" 秒

"mi" 分

"hh" 時

"dd" 日

例:

var now = Packages.java.util.Date(); var tomorrow = DateAdd (now, 1, "dd"); var diff = DateDiff

(tomorrow, now, "dd")); //差の値は1。

date1とdate2がNUMBER型である場合、それらの値は1970年1月1日以降のミリ秒として解釈されます。

例:

var date = DateDiff (20000000,10000000,"ss");

BigDecimal DecimalAdd(BigDecimal value1, BigDecimal value2)

指定したパラメータの合計であるJavaScript BigDecimalオブジェクトを返します。この結果は、パラメータの 大有効桁の精度を継承し

ます。

結果をUDAに割り当てる場合は、そのUDAがBIGDECIMAL型であることを確認してください。

ほかのデータ型をパラメータとして渡した場合、この関数はパラメータをBigDecimalに変換します。

例:

- 132 -

Page 142: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

int x = 39; var z = DecimalAdd ("3.1416",x);

zがBigDecimalである場合、その値は42.1416になります。

Boolean DecimalCompare(BigDecimal value1, String operator, BigDecimal value2)

2つのBigDecimal値を比較し、その結果に応じてtrueまたはfalseを返します。

有効な演算子は以下のとおりです。

演算子 説明

">" より大きい

"<" より小さい

">=" 以上

"<=" 以下

"==" と等しい

"!=" と等しくない

結果をUDAに割り当てる場合は、そのUDAがBIGDECIMAL型であることを確認してください。

ほかのデータ型をパラメータとして渡した場合、この関数はパラメータをBigDecimalに変換します。

例:

var smallDecimal = "1.11"; var largeDecimal = "22.22"; if (DecimalCompare (smallDecimal,"<",

largeDecimal)) ...; //DecimalCompareの結果がtrueのため実行する。

BigDecimal DecimalDivide(BigDecimal value1, BigDecimal value2, Number scale )

value1をvalue2で除算し、その結果を返します。scaleには、丸めの有効桁数を指定します。scaleの値には任意の数値を使用できます。

デフォルト値は2です。

丸めは常に四捨五入で行われ、両方の近接値から等距離である場合以外は、“ 近接値”に丸められます。両方の近接値から等距

離である場合は切り上げられます。

結果をUDAに割り当てる場合は、そのUDAがBIGDECIMAL型であることを確認してください。

ほかのデータ型をパラメータとして渡した場合、この関数はパラメータをBigDecimalに変換します。

BigDecimal DecimalMultiply(BigDecimal value1, BigDecimal value2, Number scale)

value1をvalue2で乗算し、その結果を返します。scaleには、丸めの有効桁数を指定します。scaleには任意の数値を使用できます。デ

フォルト値は2です。

丸めは常に四捨五入で行われ、両方の近接値から等距離である場合以外は、“ 近接値”に丸められます。両方の近接値から等距

離である場合は切り上げられます。

結果をUDAに割り当てる場合は、そのUDAがBIGDECIMAL型であることを確認してください。

ほかのデータ型をパラメータとして渡した場合、この関数はパラメータをBigDecimalに変換します。

BigDecimal DecimalSubtract(BigDecimal value1, BigDecimal value2)

value1からvalue2を減算します。差分はBigDecimalとして返されます。

boolean toBoolean(StringまたはNumber value)

valueをJavaScript Booleanに変換します。値は、"true"または"false"を含むSTRINGか、ゼロ(true)またはゼロ以外(true)を含むNUMBERです。渡したパラメータに応じて、trueまたはfalseを返します。valueをBooleanに変換できない場合は、falseが返されます。

- 133 -

Page 143: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

BigDecimal toDecimal(BigDecimal value, Number scale)

valueをBigDecimalオブジェクトに変換します。変換結果を、scaleで指定した有効桁数に返します。scaleには任意の数値を使用できま

す。デフォルト値は2です。

結果をUDAに割り当てる場合は、そのUDAがBIGDECIMAL型であることを確認してください。

ほかのデータ型をパラメータとして渡した場合、この関数はパラメータをBigDecimalに変換します。

Packages.java.lang.Float.parseFloat

詳細については、JDKに付属しているJavadocを参照してください。

Packages.java.lang.Integer.parseInt

詳細については、JDKに付属しているJavadocを参照してください。

Packages.java.lang.String.valueOf

詳細については、JDKに付属しているJavadocを参照してください。

注意

JavaScriptでは数値はNumber型となるため、整数としては以下の範囲までしか扱うことができません。

・ 小値:-9007199254740992

・ 大値:9007199254740992

JavaScript式でLong型の以下の 小値および 大値を使用することはできませんので、ご注意ください。

・ 小値:Packages.java.lang.Long.MIN_VALUE

・ 大値:Packages.java.lang.Long.MAX_VALUE

B.2 Java ActionでサポートするJavaScript関数

Java Actionでは、「B.1 JavaScript関数」で説明されている関数と、以下に示す関数を使用できます。

以下に示す関数は、Server Enactment Context APIのcom.fujitsu.iflow.server.intf.ServerEnactmentContextを使用して、ワークフロー情

報へのアクセスを提供します。詳細については、『API Javadocマニュアル』を参照してください。

void sec.addAttachment(String attachmentName, String attachmentPath)

void sec.addProcessXMLAttributeSubstructure(String udaName, String xPath, String value)

void sec.addProcessXMLAttributeSubstructureByIdentifier(String identifier, String xPath, String

value)

void sec.deleteAttachment(String attachmentName)

void sec.deleteProcessXMLAttributeSubStructure(String udaName, String xPath)

void sec.deleteProcessXMLAttributeSubStructureByIdentifier(String identifier, String xPath)

void sec.escalateActivity(String assignees)

Array sec.getActivityAssignees()

String sec.getActivityName()

String sec.getActor()

Array sec.getAllAttachmentNames()

Array sec.getAllAttributeNames()

String sec.getAttachment(String attachmentName)

Number sec.getCurrentActivityId()

Number sec.getCurrentProcessId()

Array sec.getGroupMembers(String groupName)

String sec.getProcessAttribute(String attName)

String sec.getProcessAttributeByIdentifier(String identifier)

String sec.getProcessAttributeStringType(String udaName)

String sec.getProcessDefinitionId()

String sec.getProcessDefinitionName()

- 134 -

Page 144: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

String sec.getProcessDescription()

String sec.getProcessInitiator()

String sec.getProcessName()

Array sec.getProcessOwners()

Number sec.getProcessPriority()

String sec.getProcessTitle()

String sec.getProcessXMLAttributeElementValue(String udaName, String xPath)

String sec.joinString(Array)

void sec.sendEmail(String to, String from, String cc, String bcc, String subject, String body, String

mimeType)

void sec.setActivityAssignees(Array assignees)

void sec.setOwners(Array users)

void sec.setProcessAttribute(String name, String value)

void sec.setProcessAttributeByIdentifier(String identifier, String value)

void sec.setProcessDescription(String description)

void sec.setProcessName(String name)

void sec.setProcessOwners(Array users)

void sec.setProcessPriority(Number priority)

void sec.setProcessTitle(String title)

void sec.setProcessXMLAttributeElementValue(String udaName, String xPath, String value)

void sec.setProcessXMLAttributeElementValueByIdentifier(String identifier, String xPath, String

value)

void sec.setProcessXMLAttributeSubstructure(String udaName, String xPath, String value)

void sec.setProcessXMLAttributeSubstructureByIdentifier(String identifier, String xPath, String

value)

void sec.validateProcessXMLAttributeValue(String udaName)

void sec.validateProcessXMLAttributeValueByIdentifier(String identifier)

Array sec.splitString(String commaSeparatedList)

UDAを使用する

JavaScriptでプロセス定義に追加したUDAを使用できます。以下の構文を使用します。

uda.<UDA識別子名>

JavaScriptでは、変数名としてマルチバイト文字を使用できないため、UDA名ではなく識別子を使用してください。

以下の例では、変数を作成し、その変数をUDAの値に初期化します。

var someVariable = uda.Price;

以下の例は、変数の値をUDAに割り当てる方法を示しています。

var lastName = "Jones";

uda. udaIdentifier = lastName;

メソッドuda.get、uda.setを使用すると、それらの名前で、UDAにアクセスすることができます。

・ uda.getでは、指定したUDAの値が返されます。

var value = uda.get("<UDA名>");

・ uda.setでは、UDAの値を指定した値に設定します。

uda.set("<UDA名>", "<UDA値>");

JavaScriptの戻り値をUDAに割り当てるときには、それぞれのデータ型が一致していることを確認してください。データ型が一致してい

ない場合は、割当てに失敗します。

注意

変換などのエラーによってターゲットUDAへの値の割当てに失敗した場合は、エラーの詳細がIBPMServer.logに記録されます。その

場合、ターゲットUDAは更新されず、前の値が維持されます。

UDAのデータ型が以下のJavaデータ型にマッピングされます。

- 135 -

Page 145: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ BIGDECIMAL型のUDAは、Packages.java.math.BigDecimalオブジェクトにマッピングされます。

・ DATE型のUDAは、Packages.java.util.Dateオブジェクトにマッピングされます。

Javaオブジェクトの詳細については、JDKに付属しているJavadocを参照してください。

B.3 トリガでサポートするJavaScript関数

トリガでは、JavaScript式を使用して制御条件を指定できます。制御条件により、トリガが実行される時期を限定します。

「B.1 JavaScript関数」で説明されている関数と、以下で説明されている関数を使用できます。

String eventData.getXMLData(String xpath)

xpath式で指定されているXMLのテキスト値を返します。

例:

以下にXMLフラグメントの例を示します。

<Customer> <Data> <Name>John</Name> </Data> </Customer>

以下のステートメントは、XMLエレメント<Name>のテキスト値"John"を、変数nameに割り当てます。

var name = eventData.getXMLData ( "/Customer/Data/Name/text()");

- 136 -

Page 146: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

付録C トラブルシューティング

C.1 ログファイルの情報

Interstage BPMの運用中に問題が発生した場合の情報採取のために、次のログファイルを確認してください。

Interstage BPMサーバコンピュータ上の<Interstage BPMサーバインストールディレクトリ>/server/instance/default/logsディレクトリ内の

IBPMServer.log

このログファイルを参照することで、問題解決のための有益な手がかりが得られます。たとえば、データベースサーバが停止しているこ

とがわかります。

C.2 特定のエラー状態を解決

C.2.1 Interstage BPMサーバの起動の失敗

<Interstage BPMサーバインストールディレクトリ>/server/instance/default/logsディレクトリ内のIBPMServer.logを確認します。

エラー 対処方法

DbService :setConnection:データベースサーバへの接続に失

敗しました。データベースサーバが実行中であり、ネットワーク

経由でアクセスできますか。{ORA-01089:immediate shutdownin progress - no operations are permitted.

データベースが実行中であることを確認します。また、データ

ベースが別のコンピュータで実行されている場合は、InterstageBPMサーバがインストールされているコンピュータからデータ

ベースにアクセスできることも確認します。サーバホストコン

ピュータからtelnet <Database Server Hostname> <Port> を使

用して、データベースホスト/ポートへの接続が確立可能である

ことを確認できます。

LdapBroker :getContext:ディレクトリサービスを作成できません

でした。{[LDAP:エラーコード49 - 無効な資格情報です]}

LdapBroker :getGroupMembersByDN:ユーザグループを取得

できませんでした。{ディレクトリサービスを作成できませんでし

た。{[LDAP:エラーコード49 - 無効な資格情報です]}}

LdapBroker :ユーザグループを取得できませんでした。{ディ

レクトリサービスを作成できませんでした。{[LDAP:エラーコード

49 - 無効な資格情報です]}}

Interstage BPMサーバのLDAPAccessUserID /LDAPAccessUserPasswordパラメータでユーザ名とパスワード

が正しく指定され、それらのユーザ名とパスワードを使用して

ディレクトリサーバにログインできることを確認します。

getContext:ディレクトリサービスを作成できませんでした。

LdapBroker :getGroupMembersByDN:ユーザグループを取得

できませんでした。{ディレクトリサービスを作成できませんでし

た。

LdapBroker :ユーザグループを取得できませんでした。{ディ

レクトリサービスを作成できませんでした。

Interstage BPMサーバのLDAPServerパラメータで指定した

ポートでLDAPサーバが実行中であることを確認します。サー

バホストコンピュータからtelnet ldapServerHostName portを使

用して、ホスト/ポートへの接続が確立可能であることを確認で

きます。

C.2.2 IBPMServer.logのエラー

<Interstage BPMサーバインストールディレクトリ>/server/instance/default/logsディレクトリ内のIBPMServer.logを確認してください。

エラー 対処方法

getGroupMembersByDN:ユーザグループを取得できませんで

した。{[LDAP:エラーコード32 - No Such Object]}原因:ディレクトリサーバ(LDAPサーバ)からユーザを削除した

が、グループ内にユーザが登録されたままになっている。

- 137 -

Page 147: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

C.2.3 JavaScript実行中の時間切れ

大きなJavaScriptsの実行時に、WebLogicおよびWebSphere Application Server用に設定されている現在のトランザクション時間切れ(120秒)が不十分です。この設定が原因で、スクリプトの実行が「トランザクション時間切れ」で失敗します。

使用方法の要件に対応して、アプリケーションサーバ管理者は、トランザクション時間切れを長くして、たとえば200秒にすることができ

ます。この設定は、次の場所で変更できます。

・ WebLogic Application Server:

<WebLogicインストールディレクトリ>/../config/config.xml/<jta>/<時間切れ秒数>

・ WebSphere Application Server:

WebSphereコンソール:[サーバ] > [アプリケーションサーバ] > [サーバ1](デフォルト名) > [コンテナサービス] > [トランザクショ

ンサービス] > [トランザクションの合計存続時間の時間切れ]。

C.2.4 Oracleデータベースへの書き込み時のエラー

プロセスインスタンスのアーカイブ時などにOracleデータベーステーブルの更新が失敗した場合は、<Oracleインストールディレクトリ>/admin/<DBインスタンス名>/bdumpディレクトリに存在するOracleアラートログファイルを確認してください。たとえば、次の場所です。

C:¥ProgramFiles¥Oracle¥admin¥orcl¥bdump¥alert_orcl.log

以下のエラーが見つかる場合があります。

{Database add/create request failed.(データベース追加/作成リクエストが失敗しました。){ORA-08103: object no longer exists(オブジェ

クトはもう存在しません)}}

このエラーは、データファイルのサイズがデータベースサーバのハードディスクにおけるファイルサイズ制限に達したために発生した可

能性があります。

システム管理者は、データベースサーバハードディスクのファイルサイズを大きくする必要があります。

C.3 インストール、配備時および構成時に発生するエラー

ここでは、Interstage BPMのインストール、配備時および構成時に発生するトラブルの事例およびその対処について説明します。

なお、データベースにSymfowareを使用している場合は、イベントログにエラーの原因が出力されますので、それに従ってください。

LinuxでInterstage BPMインストールプログラムが起動できない。

I 原因 libXp-1.0.0-8.i386.rpmパッケージがLinuxマシンにインストールされていません。Linuxマシンで

は以下を行ってください。

・ Red Hat Enterprise Linux CDまたは、Red Hat Network WebサイトよりlibXp-1.0.0-8.i386.rpmパッケージをダウンロードしてください。

・ rpmコマンドを使用して、libXp-1.0.0-8.i386.rpmパッケージをインストールしてください。

Interstage BPMのデータベースの作成/更新時のエラー

I 原因 配備時に指定した以下のいずれかの値に誤りがあります。

・ データベース管理者のユーザ名

・ データベース管理者のパスワード

対応 Interstage BPMの配備前に作成したデータベースのバックアップから、データベースを復元しま

す。

配備ツールを再実行し、[ようこそ]画面で[データベース設定]を選択します。これにより、InterstageBPMを再度配備することなく、データベースが構成されます。

II 原因 配備時に指定した以下のいずれかの値に誤りがあります。

- 138 -

Page 148: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ データベースサーバのホスト名

・ データベースSID(データベースインスタンス名)

・ データベースポート

対応 Interstage BPMの配備前に作成したデータベースのバックアップから、データベースを復元しま

す。

アプリケーションサーバからInterstage BPMを削除し、配備ツールを使用して再度配備してくだ

さい。

III 原因 データベースサーバが起動していません。

対応 データベースサーバを起動します。

配備ツールを再実行し、[ようこそ]画面で[データベース設定]を選択します。これにより、InterstageBPMを再度配備することなく、データベースが構成されます。

importLDAP.batの実行時に発生したエラー

I 原因 配備時に指定した以下のいずれかの値に誤りがあります。

・ LDAPキー

・ LDAPの組織単位(OU)

対応 アプリケーションサーバからInterstage BPMを削除し、配備ツールを使用して再度配備してください。

importAD.batの実行時のエラー

I 原因 配備時に指定した以下のいずれかの値に誤りがあります。

・ Active Directoryキー

・ Active Directoryの組織単位(OU)

対応 アプリケーションサーバからInterstage BPMを削除し、配備ツールを使用して再度配備してください。

C.4 Interstage BPMサーバの起動時のエラー

ここでは、Interstage BPMサーバの起動時に発生するトラブルの事例およびその対処について説明します。起動に失敗した場合、以

下の原因が考えられます。原因を調査し、それぞれ対処してください。

Active Directoryに関連するエラー

I 原因 リモートコンピュータにActive Directoryが配備されているため、Active Directoryが実行され

ていません。

対応 Active Directoryを起動してから、Interstage BPMサーバを起動します。

II 原因 配備時に指定した以下のいずれかの値に誤りがあります。

・ ディレクトリサービスのログインアカウントのユーザ名

・ ディレクトリサービスのログインアカウントのパスワード

これらの値は、importAD.batファイルにnet userコマンドの引数として使用されています。

対応 アプリケーションサーバからInterstage BPMを削除し、配備ツールを使用して再度配備してく

ださい。

III 原因 配備時に指定した以下のいずれかの値が誤っているため、Interstage BPMがActive Directoryに接続できません。

・ Active Directoryキー

- 139 -

Page 149: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

・ Active Directoryの組織単位(OU)

対応 アプリケーションサーバからInterstage BPMを削除し、配備ツールを使用して再度配備してく

ださい。

Sun Java System Directory Serverに関連するエラー

I 原因 配備時に指定した以下のいずれかの値が誤っているため、Interstage BPMがLDAPサーバ

に接続できません。

・ LDAPキー

・ LDAPの組織単位(OU)

対応 アプリケーションサーバからInterstage BPMを削除し、配備ツールを使用して再度配備してく

ださい。

データベースに関連するエラー

I 原因 データベースサーバが起動していません。

対応 データベースサーバを起動してから、Interstage BPMサーバを起動します。

II 原因 Symfowareを使用している場合、データベースユーザがロックされたため「JYP1011E 利用者

の認証ができません。」のエラーが出力される場合があります。

対応 データベースユーザのロックを解除するために、データベースサーバで以下のSQL文を実

行してください。詳細については、『Symfoware Server SQLリファレンス』を参照してください。

・ ALTER USER

データベースユーザのロックを解除したあとで、Interstage BPMサーバを再起動してくださ

い。

ホスト名変更に関連するエラー

I 原因 Interstage BPMサーバをインストールしたコンピュータのホスト名を変更しました。ホスト名が

Interstage BPMサーバのパラメタ名やパラメタ値に設定されている場合は、そのサーバにア

クセスすることができません。

対応 Interstage BPMデータベースユーザのIBPMPropertiesテーブルに以下の変更を行ってくだ

さい。

・ PROPERTYKEYカラムで、サフィックにホスト名があるすべてのパラメタ名を変更してく

ださい。

パラ メ タのフォーマッ トは 、 <PARAMETER_NAME>.<HOSTNAME> または、

<PARAMETER_NAME>.<HOSTNAME>.<SERVERNAME>です。

・ PROPERTYVALUEカラムで、ホスト名を含むすべてのパラメタ値を変更してください。

IBPMPropertiesを更新する場合は、適切なデータベースコマンドまたは、データベース

クライアントを使用してください。

C.5 問題が解決できない場合

問題を解決できない場合は、以下の手順に従ってください。

1. 以下の手順に従って、Interstage BPMサーバのDebugLevelパラメータに2を設定します。

a. 以下のURLを使用して、Interstage BPMサーバ設定ツールを起動します。

http://<ホスト名>:<ポート>/fujitsu-ibpm-config-webapp/IBPMConfigServlet

- 140 -

Page 150: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

b. Interstage BPM管理者としてログインします。

c. DebugLevelパラメータに2を設定します。

d. [Save and Reload properties]をクリックします。

2. エラーの原因となった操作を再度実行します。

3. 以下の情報を用意して、富士通技術員に連絡してください。

一般情報

- オペレーティングシステム

- ディレクトリサービス(種類とバージョン)

- データベースサーバ(種類とバージョン)

- JDKまたはJREのバージョン

- アプリケーションサーバ(種類とバージョン)

- Interstage BPM Edition、バージョンとビルド番号

- 主な問題領域

- 問題の優先度

- 問題が発生する環境

設定情報

- Interstage BPMサーバからエクスポートした設定ファイル

ログファイル

- <Interstage BPMサーバインストールディレクトリ>/server/instance/default/logsにあるすべてのログファイル

- Interstage Application Serverの使用時:<Interstageインストールディレクトリ>/J2EE/var/deployment/ijserver/<ユーザのワーク

ユニット>/logにあるすべてのログファイル

- WebLogicの使用時: <WebLogicインストールディレクトリ>/user_projects/domain/<お使いのドメイン>/servers/AdminServer/logsにあるすべてのログファイル

- WebSphereの使用時: <WebSphereインストールディレクトリ>/profiles/<お使いのアプリケーションサーバプロファイル>/logs/<お使いのサーバ>にあるすべてのログファイル

OSシステムログ

- イベントビューアから取得したWindowsイベントログ

- /var/adm/messagesに保存したUNIXシステムログ

- /var/log/messagesに保存したLinuxシステムログ

問題の説明

- 問題が発生する前に実行した手順の説明

- 問題が発生する頻度

問題の詳細

- エラーが発生するアプリケーションプログラムとそのソースコード

- エラーが発生するプロセス定義のXPDLファイル

- プロセス定義で定義されたJava Action、タイマー、エージェントに関する情報

- プロセスインスタンスがエラー状態になる場合、プロセスインスタンス履歴のスクリーンショット

- 例外が表示されたときのスタックトレース

Interstage BPMコンソールに表示されたエラーページの[詳細]をクリックすると、スタックトレースを取得できます。

- 141 -

Page 151: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

- 表示されたすべての例外のスクリーンショット

- プロセスインスタンスがエラー状態になった場合、または予期しない状態になった場合、そのプロセスインスタンスのスクリー

ンショット(グラフィカルビュー)

- タイマーを使用する場合は、カレンダーファイル(*.cal)

- エージェントを使用する場合は、agentsConfig.xmlファイル

- 142 -

Page 152: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

用語集

ACID特性

トランザクション処理システムに必須とされる4つの特性です(Atomicity(原子性)、Consistency(一貫性)、Isolation(隔離性)、

Durability(永続性))。

Activityノード

アクティビティをグラフィカルに表すノードです。

ANDノード

プロセス内の複数のブランチの同期をとるノードです。

API

Application Programming Interface (アプリケーションプログラミングインタフェース)の略です。開発者がユーザアプリケーションを

作成する際にサーバへアクセスするために使用するインタフェースやメソッドです。

ASAP

Asynchronous Service Access Protocol(非同期サービスアクセスプロトコル)の略です。ASAPはSOAPに基づく通信プロトコルであ

り、長時間実行されるサービスの開始、管理、およびモニタリングに使用されます。

BPR

Business Process Reengineeringの略です。プロセスの観点から、業務をどのように再定義するかを検討する研究分野のことです。

Chained-Processノード

親プロセス定義で定義されているタスクから独立して完了させることのできるサブプロセス実行を表すノードです。

Complex Conditionalノード

分岐条件がJavaScript式として指定されているConditionalノードです。

Conditionalノード

特定の条件に基づいて複数の選択肢から1つを選択し、プロセスフローを導くノードです。

DBノード

JDBCを使って、外部のデータベースにアクセスするノードです。

Delayノード

プロセスの実行を一定の時間一時停止するノードです。

EJB

Enterprise JavaBeansの略です。

Emailノード

あらかじめ定義された電子メールを送信するノードです。

Exitノード

プロセスの終了を示すノードです。1つのプロセス定義は複数のExitノードをもつことができます。

GUI

Graphical User Interface(グラフィカルユーザインタフェース)の略です。

- 143 -

Page 153: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

Interstage BPMコンソール

ユーザがプロセスインスタンス、プロセス定義を作成し、ワークアイテムにアクセスして反応するためのユーザインタフェ-スです。

Interstage BPM管理者が、Interstage BPMを管理するためにも使います。

Interstage BPMフォーム

HTMLファイルを生成する、XMLレイアウト定義とJavaアダプタクラスです。Interstage BPMフォームは、Interstage BPMフォームエ

ディタを使用して作成および設計します。

Java Action

繰り返し利用する機能をプログラム化したコンポーネントです。

LDAP

Lightweight Directory Access Protocol(軽量ディレクトリアクセスプロトコル)の略です。

OnAbortアクション

プロセスインスタンスが中断される前に実行されるJava Actionです。

OnResumeアクション

プロセスインスタンスが再開される前に実行されるJava Actionです。

OnSuspendアクション

プロセスインスタンスが一時停止される前に実行されるJava Actionです。

ORノード

プロセスフローを複数の平行ブランチに分けるノードです。

QuickForm

Interstage BPM Studioを使って作成する、フィールドベースの構造化HTMLファイルです。

Remote Subprocessノード

リモートワークフローサーバで実行されるサブプロセスを表すノードです。

SOAP

Simple Object Access Protocol(シンプルオブジェクトアクセスプロトコル)の略です。SOAPは、アプリケーション間でXMLメッセージ

を送信するための標準の通信プロトコルです。たとえば、Webサービスへのアクセスに使用されます。

SQL

Structured Query Language(構造化クエリ言語)の略です。

Startノード

プロセスの開始を示すノードです。1つのプロセスは1つのStartノードしかもつことができません。

Subprocessノード

サブプロセス実行を表すノードです。そのタスクの詳細は、別のプロセス定義で定義されます。

SWAP

Simple Workflow Access Protocol(シンプルワークフローアクセスプロトコル)の略です。SWAPは、ワークフローサーバ間で、HTTPを介してXMLメッセージをやり取りします。

Voting Activityノード

ユーザ同士が連携して1つのアクティビティを処理できるようにするノードです。

- 144 -

Page 154: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

Web Serviceノード

Webサービスからデータを取得し、そのデータを処理できるようにするノードです。

WSDL

Web Services Description Language(Webサービス記述言語)の略です。WSDLは、組織が提供するWebサービスを記述する、XMLベースの言語です。WSDLは、Webサービスへのアクセス方法についても記述します。

XMLアクション

たとえば、XMLの下部構造の追加、XMLのテキストまたは属性値の設定、XMLデータからのUDA値の抽出のような、XMLタイプの

UDAに対する特定の動作を行うJava Actionです。

XPath

XML Path Language(XMLパス言語)の略です。XPathは、XML文書内の情報を見つけるための言語であり、エレメントや属性をた

どってゆくために使用されます。

XPDL

XML Process Definition Language(XMLプロセス定義言語)の略です。

アクティビティ

アクティビティは、あるプロセスの中で実行される作業を記述したものです。アクティビティはワークアイテムで表されます。

アクティビティ時間

ある特定のアクティビティを処理するのにかかる時間です。

アノテーション

プロセス定義に説明やコメントを追加するために付加するものです。

エージェント

外部のシステムに非同期にアクセスするためのInterstage BPMのコンポーネントです。

エラーアクション

プロセス定義レベル、リモートサブプロセスレベル、およびJava Actionレベルでの特定のエラーに対処するために使われるJava Actionです。

関係者

あるプロセスに含まれている(関与している)の人です。

起案者

プロセスインスタンスを開始した人です。

期限

活性状態になったアクティビティが完了する期限を指定します。また、期限に到達したときにそのアクティビティがまだ完了していな

い場合の処理についても指定します。

業務プロセス

「プロセス」を参照してください。

グループ

同じカテゴリのアクティビティを視覚的にグループ化したものです。

グループウェア

ユーザ同士の連携を支援するソフトウェアです。

- 145 -

Page 155: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

サーバ

Interstage BPM においては、ワークフローエンジンがプロセスを実行するための実行環境を提供しているコンピュータ上の、ワーク

フロー管理システムのコンポーネントです。

サーバアクション

Interstage BPMサーバとの情報のやり取りを可能にするJava Actionです。

シミュレーションのシナリオ

プロセス定義で定義されたビジネスプロセスの実行をローカルコンピュータでシミュレートするための情報を定義したものです。

所有者

「プロセス定義所有者」および「プロセスインスタンス所有者」を参照してください。

スイムレーン

同じロールによって実行されるアクティビティを視覚的にグループ化するものです。

タイマー

指定された間隔が経過した後、または指定された日時になると期限が切れます。タイマーの期限が切れると、特定のアクションがト

リガされます。

タスク

プロセス内の1つのアクティビティです。通常、人間の関与が要求されます。

担当者

あるアクティビティを実行するために割り当てられた1人または複数の人です。

通知アクション

プロセス実行に関連するイベントをユーザに通知するJava Actionです。プロセスやアクティビティの開始などを、電子メールでユー

ザに通知することかできます。

ディレクトリサービス(DS)

全ネットワークの認証データや設定データを格納するリポジトリです。サービス、ファイルサーバ、データベース、およびその他のア

プリケーションへのアクセスを提供します。ユーザとアプリケーションによるこのリポジトリへのアクセスは制御されます。

データベースアクション

Interstage BPMから独立している外部のデータベースとの相互作用を実現するJava Actionです。

添付文書

アプリケーションによって生成された、プロセスインスタンスに関連付けられた文書ファイルです。

統合アクション

プロセス定義内から外部機能へのアクセスを可能にするJava Actionです。

動作無しアクション

動作を指定しない、組み込みのJava Actionです。

投票ルール

Voting Activityノードで定義される投票ルールです。

ネーミングサービス

クライアントに対して名前でオブジェクトを見つける機能を提供するサービスです。

- 146 -

Page 156: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

ノード

プロセスの各段階をグラフィカルに表します。Interstage BPMのノードのタイプには、Activityノード、ANDノード、Subprocessノード、

Conditionalノードなどがあります。

ビジネスカレンダー

営業日および営業時間を指定したカレンダーです。

フォーム

アクティビティ、プロセスインスタンス、またはプロセス定義に関連付けることができる、HTMLまたはXMLファイルです。フォームは

Interstage BPMを使用して作成できますが、その外観は任意のXML編集ツールまたはHTML編集ツールを使用して変更できま

す。

フレームワークアダプタ

デ ィ レ ク ト リ サ ー ビ ス ア ダ プ タ と DMS ア ダ プ タ を 統 合 し ま す 。 DD ア ダ プ タ と 呼 ば れ る こ と も あ り ま す

("DD"は、"Document"と"Directory"の頭文字を繋げた略語)。ディレクトリサービスと文書管理システム(DMS)に対して統合された

ユーザ認証を実現します。

プロジェクト

プロセス定義、フォーム、シミュレーションのシナリオ、添付ファイルなどのコンテナです。ファイルシステムレベルでは、1つのプロ

ジェクトが1つのフォルダになります。

プロセス

業務目標を達成するために実行される一連の手順です。プロセスはプロセス定義でモデル化されます。

プロセスインスタンス

プロセスインスタンスは、あるプロセス定義から生成された1つの実体です。プロセスインスタンスの構造は、基となるプロセス定義の

構造と同一です。

プロセスインスタンス所有者

デフォルトでは、プロセスインスタンスの所有者は、そのプロセスインスタンスが生成されたプロセス定義の所有者です。

プロセス関係者

「関係者」を参照してください。

プロセス起案者

「起案者」を参照してください。

プロセス定義

業務プロセスを表現するための記述で、操作の自動化をサポートします。プロセス定義は、プロセス内の制御のフローを含め、生

成されるプロセスインスタンスのふるまいやプロパティを定義します。

プロセス定義所有者

プロセス定義を作成(または 後に編集)した人です。

文書管理システム(DMS)

Document Management System(文書管理システム)の略です。Interstage BPMと連携して、添付文書やフォームなどを格納するた

めに使用されるシステムです。DMSアダプタはDMSとInterstage BPMを接続します。

補正アクション

例えば、システムをクリーンアップし、トランザクションに関与している外部システムの安定した状態を保障するような、通常のJava Actionに対する補強として定義できるJava Actionです。

- 147 -

Page 157: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

矢印

あるノードと別のノードを繋ぐものです。矢印は、ノードからノードへ、プロセスフローを導きます。

ユーザ定義属性(UDA)

顧客データや発注番号など、プロセス関係者がアクセスしたり、修正や追加する必要があるデータです。ユーザ定義属性は、プロ

セス定義の中で定義されます。

ユーザグループ

共通の特徴を持つユーザの集合です。グループは、Interstage BPMのローカルグループストア、ディレクトリサービス、またはその

両方のシステムで定義されます。

ユーザプロファイル

ユーザ固有の設定情報です。ユーザがメール通知を受信するかどうかの情報や、電子メールアドレス、デフォルトのディレクトリが

あります。

ルール

ルールが定義されたアクティビティにおいて選択肢を決定するための方法です。

ロール

プロセスに関連付けられたタスクを処理すべき責任がある、個人またはグループの総称です(「マネージャー」など)。すべてのプロ

セスの作業(アクティビティ)には、ロールが定義されています。ロールは、Interstage BPMのローカルグループストアやディレクトリ

サービスで定義されるグループに相当します。

ワークアイテム

ワークリストに表示されるアクティビティのことです。

ワークフロー

業務プロセス中に存在する一連のアクティビティの連なりです。

ワークフローアプリケーション

プロセス定義、フォーム、シミュレーションシナリオ、添付文書からなるプロセスソリューションです。Interstage BPMは、定義済みの

構造を持つワークフローアプリケーションプロジェクトの作成を実現します。このアプリケーションは、Interstage BPMクライアントがア

クセスできるInterstage BPMサーバ上に配備できます。

ワークフローサーバ

プロセスを実行するための実行環境を提供する、Interstage BPMのコンポーネントです。

ワークリスト

アクティビティのリストです。

- 148 -

Page 158: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

索 引[A]

ACID特性.........................................................................19,143Activityノード....................................................................13,143Activityノード:開始アクションを割当てる...............................59Activityノード:ロール..............................................................10ANDノード.........................................................................15,143ANDノード:addNote()..............................................................45API..........................................................................................143ASAP......................................................................................143

[B]BPR.........................................................................................143

[C]CentraSite:統合.........................................................................6Chained-Processノード.......................................................17,143Chained-Processノード:addNode()...........................................49Complex Conditionalノード....................................................143Conditionalノード..........................................................15,45,143

[D]DBノード.................................................................................143Delayノード........................................................................14,143Delayノード:addNode()............................................................48

[E]EJB..........................................................................................143Emailノード.............................................................................143Event Activityノード.................................................................15Event Activityノード:プログラム例..........................................85Exitノード...........................................................................13,143

[F]File Listener..............................................................................86FTPエージェント..................................................................89,91fujitsu-ibpm-engine-ejb_jar_client.jar.................................25,27

[G]GUI.........................................................................................143

[H]HTTPエージェント...............................................................92,93

[I]iFlow.jar....................................................................................25Interstage Analytics....................................................................5Interstage BPM...........................................................................1Interstage BPM:主な機能.........................................................2Interstage BPM:外部アプリケーションと統合する..................55Interstage BPM:概要.................................................................1Interstage BPM:基礎知識.........................................................7Interstage BPM:基本設計.........................................................2Interstage BPM:コンポーネントアーキテクチャ.....................2,3Interstage BPM:サブプロセス機能.........................................23Interstage BPM:マニュアル一覧...............................................iiInterstage BPM:利点.................................................................1Interstage BPMコンソール.....................................................144

Interstage BPMフォーム.........................................................144Interstage BPM連携ユーザ...................................................102

[J]Java Action...................................................................10,56,144Java Action:一時停止.............................................................68Java Action:開始.....................................................................59Java Action:組込み.................................................................61JavaAction:再開......................................................................68Java Action:サポートされるJavaScript関数...........................134Java Action:終了.....................................................................60Java Action:タイプ...................................................................57Java Action:中止.....................................................................68Java Action:プロセス所有者...................................................57Java Actions:assigning エラーアクション.................................65Java Actions:assigning 補償アクション....................................64Java Actions:エラー.................................................................62Java Actions:エラー処理.........................................................63Java Actions:構造....................................................................65JavaScript関数........................................................................131JavaScript関数:Java Actionでのサポート.............................134JavaScript関数:一般..............................................................131JavaScript関数:トリガでのサポート........................................136Javaアクション.............................................................................5JDBC..........................................................................................4JMSインタフェース.................................................................127

[L]LDAP...................................................................................4,144

[M]Model API..................................................................................5Model API:アプリケーションの実行........................................34Model API:アーキテクチャー..................................................35Model API:システム環境........................................................25Model API:トランザクション制御.............................................81

[O]OnAbortアクション..................................................................144OnResumeアクション..............................................................144OnSuspendアクション..............................................................144ORノード............................................................................15,144ORノード:addNote().................................................................45

[Q]QuickForm..............................................................................144

[R]Remote Subprocessノード..................................................16,144

[S]Server Enactment Context........................................................58SOAP......................................................................................144SQL.........................................................................................144Startノード..........................................................................12,144Subprocessノード...............................................................16,144Subprocessノード:addNode()...................................................47

- 149 -

Page 159: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

SWAP.....................................................................................144

[U]UDA:追加................................................................................43

[V]Voting Activityノード........................................................13,144Voting Activityノード:addNode()............................................44Voting Activityノード:閾値.....................................................44Voting Activityノード:ルール.................................................44Voting Activityノード:ロール..................................................10

[W]Web Serviceノード..................................................................145Webサービス..............................................................................5WSDL.....................................................................................145

[X]XMLアクション.......................................................................145XMLデータ..............................................................................73XPath......................................................................................145XPDL......................................................................................145

[あ]アクティビティ..........................................................................145アクティビティ時間..................................................................145アノテーション.........................................................................145アプリケーション開発:ストラテジ...............................................1アーキテクチャ........................................................................2,3一時停止時アクション.........................................................57,68一括処理..................................................................................71インタフェース:DataItemRef...............................................70,74インタフェース:WFAdminSession.........................................107インタフェース:WFObjectList..................................................51インタフェース:WorkItem........................................................53インタフェース:プロセスインスタンス.....................................113エラーアクション.................................................10,57,62,63,145エラー処理:Java Actions.........................................................65エラー処理:Java Actionsにおいて..........................................63エラー処理:リモートサブプロセス用.....................................102エージェント.......................................................................88,145

[か]開始アクション.....................................................................10,57開始アクション:割当て.............................................................59Activityノード:終了アクションを割当てる...............................60外部システム..............................................................................5拡張属性..................................................................................75拡張属性:値の取得................................................................76拡張属性:取得........................................................................77拡張属性:名前........................................................................78拡張属性:名前空間................................................................80拡張属性:割当て.....................................................................76カスタムEJB................................................................................4関係者....................................................................................145管理:ユーザとグループ.........................................................105管理者:ログアウト..................................................................104管理者:ログイン.....................................................................104完了アクション..........................................................................57

起案者....................................................................................145期限........................................................................................145キャッシュをクリア...................................................................108業務プロセス..........................................................................145組込みJava Action...................................................................61グループ.................................................................................145グループウェア.......................................................................145グループ管理......................................................................4,105グループキャッシュ:クリア......................................................108

[さ]再開時アクション.................................................................57,68再割当てモード........................................................................23サーバ....................................................................................146サーバアクション....................................................................146閾値..........................................................................................44実行エンジン..............................................................................4シミュレーションのシナリオ.....................................................146終了アクション.....................................................................10,57終了アクション:割当て.............................................................60初期化アクション......................................................................57所有者....................................................................................146所有者アクション......................................................................57スイムレーン............................................................................146セキュリティモード....................................................................23セッション:管理者..................................................................104セッション:ユーザ..................................................................104接続性........................................................................................4絶対時刻タイマー....................................................................11相対時刻タイマー....................................................................11ソート.........................................................................................68ソート順:追加...........................................................................70

[た]タイマー........................................................................11,94,146タイマーアクション....................................................................57タスク.......................................................................................146担当者....................................................................................146中止時アクション......................................................................57通知アクション........................................................................146定期タイマー............................................................................11ディレクトリサービス.........................................................105,146ディレクトリサービスへの接続性................................................4添付文書...........................................................................20,146添付文書の処理......................................................................53添付文書を処理する................................................................53データベースアクション..........................................................146データベースへの接続性..........................................................4統合アクション........................................................................146動作無しアクション.................................................................146投票ルール.......................................................................44,146トラブルシューティング...........................................................138トラブルシューティング:Interstage BPMサーバの起動........139トランザクションAPI...................................................................81トランザクション制御.................................................................81トリガ..........................................................................................82トリガ:サポートされるJavaScript関数.....................................136トリガ:定義................................................................................83

- 150 -

Page 160: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

[な]ネーミングサービス.................................................................146ノード....................................................................................9,147ノード:Conditionalノード..........................................................45ノード:リモートサブプロセスノード...........................................99ノードインスタンス.....................................................................20ノードタイプ...............................................................................12

[は]バッチ処理を行う......................................................................71ビジネスカレンダー...........................................................95,147ビジネス相対時刻タイマー......................................................11ビジネス定期タイマー..............................................................11フィルタ.....................................................................................22フィルタ:プロセスインスタンス...............................................112フィルタ:プロセス定義......................................................51,109フィルタ:ワークアイテム...........................................................52フィルター.................................................................................68フィルター:追加.......................................................................70フォーム.............................................................................10,147フレームワークアダプタ..........................................................147プログラミングサンプル..........................................................126プロジェクト.............................................................................147プロセス..................................................................................147プロセスインスタンス.......................................................7,18,147プロセスインスタンス:UDAの取得..........................................71プロセスインスタンス:アーカイブ...........................................113プロセスインスタンス:アーカイブ済の削除...........................115プロセスインスタンス:一時停止する.....................................114プロセスインスタンス:開始する...............................................51プロセスインスタンス:再開する.............................................114プロセスインスタンス:削除.....................................................115プロセスインスタンス:状態.......................................................19プロセスインスタンス:所有権...................................................20プロセスインスタンス:所有者を変更する..............................112プロセスインスタンス:中止.....................................................114プロセスインスタンス:フィルタの条件....................................112プロセスインスタンス:リストを作成する..................................112プロセスインスタンスEJB............................................................4プロセスインスタンス所有者...................................................147プロセスインスタンスの属性.....................................................18プロセス関係者......................................................................147プロセス起案者......................................................................147プロセス定義.......................................................................7,147プロセス定義:XPDLファイルからインポートする..................111プロセス定義:XPDLファイルにエクスポートする.................111プロセス定義:アーカイブ......................................................110プロセス定義:アーカイブ済の削除......................................110プロセス定義:検証..................................................................40プロセス定義:公開する.........................................................109プロセス定義: 新バージョンを取得する..............................50プロセス定義:削除................................................................110プロセス定義:作成..................................................................41プロセス定義:状態....................................................................8プロセス定義:所有権..............................................................11プロセス定義:属性....................................................................7プロセス定義:デザイン............................................................37

プロセス定義:フィルタ.............................................................51プロセス定義:フィルタの条件...............................................109プロセス定義:変更する...........................................................17プロセス定義:編集モード........................................................40プロセス定義:変数データ.......................................................12プロセス定義:リストを作成する..............................................109プロセス定義EJB........................................................................4プロセス定義識別子..................................................................9プロセス定義所有者..............................................................147プロセス定義の版数管理..........................................................9プロセス編集............................................................................22フローコントロール......................................................................9文書管理システム..................................................................147変数データ:ユーザ定義属性.................................................12補償アクション................................................................10,57,63補正アクション........................................................................147本書の目的.................................................................................i

[や]矢印................................................................................9,22,148矢印:addArrow().....................................................................40矢印:makeChoice()..................................................................53矢印インスタンス......................................................................20ユーザ:リストを作成する........................................................107ユーザ:ログアウト.....................................................................38ユーザ:ログイン.......................................................................38ユーザエージェントEJB.............................................................3ユーザ管理..........................................................................4,105ユーザキャッシュ:クリア.........................................................108ユーザグループ.....................................................................148ユーザ定義属性................................................................12,148ユーザ定義属性 (UDA):タイプXMLの..................................73ユーザ定義属性:追加.............................................................43ユーザプロファイル................................................................148

[ら]リスト:ワークアイテム................................................................51リストの更新通知......................................................................71リモートグループストア...........................................................105リモートサブプロセス................................................................98リモートサブプロセス:エラー処理.........................................102リモートサブプロセス:認証....................................................102リモートサブプロセスノード......................................................99リモートユーザストア...............................................................105履歴情報................................................................................118履歴テーブル.........................................................................123ルール...............................................................................44,148例外処理..................................................................................36ログアウト...........................................................................38,104ログイン..............................................................................38,104ローカルグループ管理..........................................................106ローカルグループストア.........................................................105ローカルユーザ管理..............................................................105ローカルユーザストア.............................................................105ロール................................................................................10,148ロールアクション..................................................................10,57

- 151 -

Page 161: Interstage Business Process Manager V10 - Fujitsusoftware.fujitsu.com/jp/manual/manualfiles/M090007/B1WD...略称 本マニュアルで説明される製品を次のように省略します。・「Microsoft®

[わ]ワークアイテム...................................................................20,148ワークアイテム:活性................................................................21ワークアイテム:完了................................................................22ワークアイテム:拒否................................................................22ワークアイテム:更新する.......................................................116ワークアイテム:再割当てする...............................................116ワークアイテム:実行する.........................................................53ワークアイテム:受理................................................................21ワークアイテム:状態................................................................21ワークアイテム:属性................................................................20ワークアイテム:外向き矢印の取得.........................................71ワークアイテム:非活性............................................................22ワークアイテム:フィルタ...........................................................52ワークアイテム:フィルタの条件...............................................52ワークアイテム:モード..............................................................21ワークアイテム:読取り..............................................................21ワークアイテム:リストを作成する..............................................51ワークフロー...........................................................................148ワークフロー:概要.....................................................................1ワークフローアプリケーション.................................................148ワークフローアプリケーションの操作.........................................7ワークフローエレメント................................................................9ワークフローサーバ................................................................148ワークリスト..............................................................................148ワークリストUDA..................................................................70,74

- 152 -