IBM Integration Bus Designing for Performance (IBM InterConnect 2015 - Session 1485)
IBM Integration Bus V9public.dhe.ibm.com/software/dw/jp/websphere/esb/ib9_ws/...IBM Integration Bus...
Transcript of IBM Integration Bus V9public.dhe.ibm.com/software/dw/jp/websphere/esb/ib9_ws/...IBM Integration Bus...
IBM Integration Bus V9
第第22章章 新機能の紹介新機能の紹介
2
内容
ワークロード・マネージメント
Web UIによる管理機能の強化
グローバル・キャッシュ機能の拡張
ビジネス・ルール
.NETサポートの拡張
BPMとの連携
サービス・ディスカバリー
XMLデータ分析
その他の機能強化
WAS管理コンソールからの管理機能
GUIマッピングの機能強化
Web関連機能の拡張
ODBC設定の検証機能
集約ノードの機能強化
CICSトランザクション・サポート
実行グループのユーザー指定(z/OS)
3
ワークロード・マネージメント
4
ワークロード・マネージメント
ワークロード・マネージメント機能の提供
大処理レートの制御
メッセージ処理件数が指定のレート内に収まるように制御することが可能
メッセージフローに対して 大レート(メッセージ処理件数/秒)を設定
通知処理リクエスト入力件数が閾値を超過/収束した場合に通知することが可能
MQ Pub/Subの仕組みを利用し通知メッセージをパブリッシュ
無応答フローに対するアクション
メッセージ処理時間が指定のタイムアウト時間を超過した場合のアクションを指定可能–実行グループの再起動(GA版時点)、もしくは、アクションなし
処理時間超過を通知可能
ワークロード・マネージメント・ポリシーにて動的に設定を変更可能
ブローカーブローカー ワークロード・マネージメント機能
メッセージフローA
メッセージフローB最⾼速度
処理が閾値内に収まるように制御
処理が閾値内に収まるように制御
入力リクエスト数が閾値を超えると通知
入力リクエスト数が閾値を超えると通知
メッセージフローCタイムアウト時にアクションを実施(再起動)
タイムアウト時にアクションを実施(再起動)
処理リクエスト
再起動
5
ワークロード・マネージメント
ワークロード・マネージメント活用シナリオ
大処理レートの制御を利用し、時間帯により優先させる処理を制御する
バッチ処理、オンラン処理のフローが混在する環境を想定
業務時間帯はオンライン処理を優先させるため、バッチ処理の処理速度を制限する
リソースに制限のあるバックエンド・サーバーに合わせて、フロントエンドからの処理速度を制限する
ブローカーブローカー
オンライン処理フロー
バッチ処理フロー 最⾼速度
オンライン処理
バッチ処理
業務時間帯
ブローカーブローカー
オンライン処理フロー
最⾼速度
フロント・エンド
バックエンドのパフォーマンスにあわせて、フロントからの処理速度を制限
バック・エンド
オンライン処理を優先させるため、バッチ処理の処理速度を制限
6
ワークロード・マネージメント– 大処理レートの制御
メッセージ処理件数が指定のレート内に収まるように制御することが可能
大処理レート(メッセージ処理件数/秒)をフロー単位で設定
フローのメッセージ処理件数が、 大レート内に収まるように制御 大処理レートを50 (メッセージ/秒)に設定した場合の例
10,000件のメッセージ処理にかかる処理速度を比較
入力ノードの種別に関係なく、フローへのリクエスト数をもとに速度が制御される
メッセージフロー内のすべての入力ノードおよびインスタンスへのリクエストの合計を制御に使用
リクエストがエラーとなる場合でも、1入力としてカウントされる
複数スレッドでフローを実行する場合、合計スレッド数と 大処理レートの設定をもとに、各スレッドにそれぞれ処理レートが割り当てられる
ノード単位で、処理レートを制御することはできない
各スレッドに割り当てられる処理レートの具体的な計算例は次ページ参照
0
20
40
60
80
100
0
20
40
60
80
100
0
20
40
60
80
100
0
20
40
60
80
100
最大レートを50件/秒に設定
処理件数/s
経過時間経過時間
処理件数/s
最⾼速度
7
(参考) ワークロード・マネージメント – 大処理レートの制御
複数スレッドで実行する場合の処理レートの割り当て
稼動中の各スレッドに( 大処理レート÷合計スレッド数)の処理レートが割り当てられる
合計スレッド数は以下の式で計算(メッセージフロー内の入力ノード数)+(各入力ノードの追加インスタンス数の合計)
稼動スレッドに割り当てられる処理レートの割り当て例( 大処理レート50に設定時)
1メッセージフロー、1入力ノード、追加インスタンス0 の場合
–(合計スレッド数) = 1
–(各スレッドの処理レート) = 50 ÷ 1
= 1
1メッセージフロー、1入力ノード、追加インスタンス2の場合
–(合計スレッド数) = 2
–(各スレッドの処理レート) = 50 ÷ 2
= 25
1フローに3入力ノードがあり、それぞれ以下のように追加インスタンスが設定されている場合
–InputノードA 追加インスタンス:4
–InputノードB 追加インスタンス:3
–InputノードC 追加インスタンス:0
–(合計スレッド数) = 5 + 4 + 1
= 10
–(各スレッドの処理レート) = 50 ÷ 10
= 5
最⾼速度
8
ワークロード・マネージメント – 通知
メッセージ入力件数が閾値を超過/収束した場合に通知することが可能
メッセージフローに対して通知閾値(処理リクエスト件数/秒)を設定
MQ Pub/Subの仕組みを利用し通知メッセージをパブリッシュ
処理リクエスト件数が通知閾値を越えると、メッセージがパブリッシュされる
–閾値を超えたままの状態の場合、パブリッシュされない
処理リクエスト件数が閾値内に収束すると、メッセージがパブリッシュされる
※通知を受け取るためのアプリケーションは別途必要(現時点ではブローカで通知を受け取る機能はない)
通知閾値を50(処理リクエスト件数/秒)設定した場合の例
処理件数/s
経過時間
通知閾値を50件/秒に設定
超過通知ポイント
0
50
100
75
25
超過通知ポイント
収束通知ポイント
9
(参考)ワークロード・マネージメント – 通知
通知メッセージのパブリッシュ先トピックと通知メッセージ
メッセージ・レートが閾値を超過した場合のパブリッシュ先トピック
通知対象のメッセージ・フローの構成により、トピックが異なる
フローがライブラリに含まれる場合
フローがアプリケーションに含まれる場合
フローが実行グループの直下にデプロイされる場合
$SYS/Broker/<brokerName>/WorkloadManagement/AboveThreshold/<executionGroupLabel>/<applicationName>/<libraryName>/<messageFlowLabel>
$SYS/Broker/<brokerName>/WorkloadManagement/AboveThreshold/<executionGroupLabel> /<applicationName>/<messageFlowLabel>
$SYS/Broker/<brokerName>/WorkloadManagement/AboveThreshold/<executionGroupLabel> /<messageFlowLabel>
10
(参考)ワークロード・マネージメント – 通知
メッセージ・レートが閾値内に収束した場合のパブリッシュ先トピック
通知対象のメッセージ・フローの構成により、トピックが異なる
フローがライブラリに含まれる場合
フローがアプリケーションに含まれる場合
フローが実行グループの直下にデプロイされる場合
$SYS/Broker/<brokerName>/WorkloadManagement/BelowThreshold/<executionGroupLabel>/<applicationName>/<libraryName>/<messageFlowLabel>
$SYS/Broker/<brokerName>/WorkloadManagement/BelowThresholdexecutionGroupLabel> /<applicationName>/<messageFlowLabel>
$SYS/Broker/<brokerName>/WorkloadManagement/BelowThreshold/<executionGroupLabel> /<messageFlowLabel>
11
(参考)ワークロード・マネージメント – 通知
通知メッセージ例通知閾値を5 (件/秒)に設定した場合の、入力件数が超過通知メッセージ
<wmb:eventxmlns:wmb="http://www.ibm.com/xmlns/prod/websphere/messagebroker/6.1.0/monitoring/event"><wmb:eventPointData><wmb:eventData wmb:productVersion="9000" wmb:eventSchemaVersion="6.1.0.3" wmb:eventSourceAddress="WLM"><wmb:eventIdentity wmb:eventName="AboveThreshold"/><wmb:eventSequence wmb:creationTime="2013-08-20T02:41:15.471Z" wmb:counter="1"/><wmb:eventCorrelation/>
</wmb:eventData><wmb:messageFlowData><wmb:broker wmb:name="BK9" wmb:UUID="15cd0878-4157-44cc-a402-123b8aa662af"/><wmb:executionGroup wmb:name="EG1" wmb:UUID="0eb1590f-4001-0000-0080-fb887e8428d5"/><wmb:messageFlow wmb:uniqueFlowName="BK9.EG1.SOAP.APP01.HelloServiceProvider"
wmb:name="HelloServiceProvider" wmb:UUID="e9f88b7a-4001-0000-0080-cffab21e4897"/></wmb:messageFlowData>
</wmb:eventPointData><wmb:applicationData xmlns=""><wmb:simpleContent wmb:name="NotificationThresholdMsgsPerSec" wmb:value="5" wmb:dataType="integer"/><wmb:simpleContent wmb:name="MessageRateMsgsPerSec" wmb:value="6" wmb:dataType="integer"/></wmb:applicationData>
</wmb:event>
設定した閾値設定した閾値
入力メッセージ件数入力メッセージ件数
イベント名イベント名
12
ワークロード・マネージメント – 無応答フローに対するアクション
メッセージ処理が指定時間を超過した場合のアクションを指定可能
メッセージフローに対して処理タイムアウト(秒)を設定
メッセージ処理時間が処理タイムアウトを超過した場合にアクションを実行実行グループの再起動、もしくは、アクションなし(GA版時点)
メッセージ処理が指定時間を超過したことを通知可能タイムアウトをMQ Pub/Subの仕組みで通知
処理アクションをなしに設定した場合、処理の完了も通知可能
mqsistopmsgflowコマンドに実行グループの強制停止オプションが追加
mqsistopmsgflowコマンドにて「-f restartExecutionGroup」オプションを指定
V8.0以前のバージョンでは、実行グループ・プロセスをkillのみが可能であった
メッセージフロー
処理タイムアウト発生時、
実行グループを自動的に再起動が可能タイムアウト発生をPub/Subで通知
処理タイムアウト発生時、
実行グループを自動的に再起動が可能タイムアウト発生をPub/Subで通知
長時間のループ・・ 外部システムの応答待ち・・・
入力ノード通過後の処理時間を計測
再起動
13
処理時間を超過した際に通知されるメッセージのパブリッシュ先トピック
フローがライブラリに含まれる場合
フローがアプリケーションに含まれる場合
フローが実行グループの直下にデプロイされる場合
$SYS/Broker/<brokerName>/WorkloadManagement/ProcessingTimeout/<executionGroupLabel>/<applicationName>/<libraryName>/<messageFlowLabel>
$SYS/Broker/<brokerName>/WorkloadManagement/ProcessingTimeout/<executionGroupLabel>/<applicationName>/<messageFlowLabel>
$SYS/Broker/<brokerName>/WorkloadManagement/ProcessingTimeout/<executionGroupLabel>/<messageFlowLabel>
(参考)ワークロード・マネージメント – 無応答フローに対するアクション
再起動
14
処理時間を超過後に処理が完了した場合のパブリッシュ先トピック処理アクションが「None」のときのみ
–フローがライブラリに含まれる場合
–フローがアプリケーションに含まれる場合
–フローが実行グループの直下にデプロイされる場合
$SYS/Broker/<brokerName>/WorkloadManagement/ProcessingFinished/<executionGroupLabel>/<applicationName>/<libraryName>/<messageFlowLabel>
$SYS/Broker/<brokerName>/WorkloadManagement/ProcessingFinished/<executionGroupLabel>/<applicationName>/<messageFlowLabel>
$SYS/Broker/<brokerName>/WorkloadManagement/ProcessingFinished/<executionGroupLabel>/<messageFlowLabel>
(参考)ワークロード・マネージメント – 無応答フローに対するアクション
再起動
15
タイムアウト時の通知メッセージ例処理タイムアウトを2(秒)、処理アクションをNoneに設定した場合
<wmb:eventxmlns:wmb="http://www.ibm.com/xmlns/prod/websphere/messagebroker/6.1.0/monitoring/event"><wmb:eventPointData><wmb:eventData wmb:productVersion="9000" wmb:eventSchemaVersion="6.1.0.3" wmb:eventSourceAddress="WLM"><wmb:eventIdentity wmb:eventName="ProcessingTimeout"/><wmb:eventSequence wmb:creationTime="2013-08-20T05:20:46.709999Z" wmb:counter="1"/><wmb:eventCorrelation/>
</wmb:eventData><wmb:messageFlowData><wmb:broker wmb:name="BK9" wmb:UUID="15cd0878-4157-44cc-a402-123b8aa662af"/><wmb:executionGroup wmb:name="EG1" wmb:UUID="0eb1590f-4001-0000-0080-fb887e8428d5"/><wmb:messageFlow wmb:uniqueFlowName="BK9.EG1.SimpleMQ.MsgPassThru"
wmb:name="MsgPassThru" wmb:UUID="513f0c72-4001-0000-0080-d5391be7ca04"/></wmb:messageFlowData>
</wmb:eventPointData><wmb:applicationData xmlns=""><wmb:simpleContent wmb:name="processingTimeout" wmb:value="2" wmb:dataType="integer"/><wmb:simpleContent wmb:name="processingTimeoutAction" wmb:value="none" wmb:dataType="string"/><wmb:simpleContent wmb:name="timeTaken" wmb:value="2" wmb:dataType="integer"/><wmb:simpleContent wmb:name="threadId" wmb:value="8356" wmb:dataType="string"/><wmb:simpleContent wmb:name="nodeTrail" wmb:value="[MQ Input]-out->in-[Compute]-out->in-[SLEEP]" wmb:dataType="string"/></wmb:applicationData></wmb:event>
(参考)ワークロード・マネージメント – 無応答フローに対するアクション
再起動
イベント名イベント名
フロー名フロー名
設定したタイムアウト時間とアクション設定したタイムアウト時間とアクション
処理時間、スレッドID処理時間、スレッドID
処理の流れ(タイムアウトしたノードが分かる)処理の流れ(タイムアウトしたノードが分かる)
16
ワークロード・マネージメント – 設定
ワークロード・マネージメント機能の設定方法
メッセージフロー単位で以下を設定
以下のいずれかで設定可能BARファイル(ビルド済みメッセージフローのプロパティ)
ワークロード・マネージメント・ポリシー
–フローの再起動や再デプロイなしに、動的に設定を変更可能
BARファイルとワークロード・マネージメント・ポリシーの両方で設定した場合、
ワークロード・マネージメント・ポリシーが優先されるポリシーで設定のない項目については、BARファイルの設定値が使用される
大処理レートの制御(メッセージ数/秒)
0の場合機能OFF(デフォルト)大速度
処理タイムアウト時のアクションを指定「なし」、もしくは「実行グループの再起動」を指定
処理アクション
処理タイムアウトの時間を指定(秒)
0の場合機能OFF(デフォルト)処理タイムアウト
通知の閾値の設定(メッセージ数/秒)
0の場合機能OFF(デフォルト)通知閾値
説明設定項目
最⾼速度
再起動
再起動
17
ワークロード・マネージメント – 設定
BARファイルでの設定
BARファイル・エディターでの設定
通知閾値の設定
処理アクションの指定
処理タイムアウトの指定
最大処理レートの設定
18
ワークロード・マネージメント – 設定
ワークロード・マネージメント・ポリシーの設定
以下のいずれかで、ポリシーを作成/適用
WebUIによる管理機能(作成/適用)
コマンド(作成/適用)
–以下のコマンドが新規に追加
–mqsicreatepolicy / mqsireportpolicy / mqsichangepolicy / mqsideletepolicymqsiattachpolicy / mqsidetachpolicy
BARファイルの「ポリシー」(適用)
ポリシーによるワークロード・マネージメント機能の設定の流れ
①ワークロード・マネージメント・ポリシーの作成
②作成したポリシーを、メッセージ・フローに適用
Toolkitにて利用可能なポリシーの一覧を表示可能
「ウィンドウ」→「ビューの表示」→「Integration Registries」
19
ワークロード・マネージメント – 設定
WebUIによる管理機能でのポリシー設定例
①ワークロード・マネージメント・ポリシーの作成
「ポリシー」を展開
「作成」をクリック
ポリシー名
通知閾値
最大レート
タイムアウト時のアクション
タイムアウト時間
20
ワークロード・マネージメント – 設定
②作成したポリシーを、メッセージ・フローに適用
「ポリシー」を選択
メッセージフローを選択
ポリシーを適用するメッセージフローを選択
「適用」をクリック
作成したポリシーを選択
21
ワークロード・マネージメント – 設定
コマンドによるポリシーの設定
以下のコマンドが新規に追加
ポリシー設定を記述したXMLファイルを使用して、ポリシーを作成/変更する
–ポリシー設定用サンプルXMLファイルを以下に提供
ポリシーの設定変更mqsichangepolicy
ポリシー情報の表示mqsireportpolicy
ポリシーの削除mqsideletepolicy
メッセージフローへのポリシーの適用mqsiattachpolicy
メッセージフローからポリシーを除外mqsidetachpolicy
ポリシーの作成mqsicreatepolicy
説明コマンド
Windows の場合:<導入ディレクトリ>¥sample¥Policy¥WorkloadManagement_Policy.xml
Linux、UNIXの場合:<導入ディレクトリ>/sample/Policy/WorkloadManagement_Policy.xml
22
ワークロード・マネージメント – 設定
①ワークロード・マネージメント・ポリシーの作成
ポリシー設定用XMLファイル作成
– 大処理レートを1000に設定する例
mqsicreatepolicyコマンドにて、ポリシー設定用XMLファイルをもとにポリシーを作成
– -tで「WorkloadManagement」を指定
– -lでポリシー名を指定(例ではWLM_Policy01)
– -fでポリシー設定XML用ファイル名を指定(例ではpolicy_config.xml)
<wsp:Policy xmlns:wsp="http://www.w3.org/ns/ws-policy"><iwlm:workloadManagementxmlns:iwlm="http://www.ibm.com/xmlns/prod/websphere/iib/9.0.0/policy/wlm"><iwlm:notificationThresholdMsgsPerSec></iwlm:notificationThresholdMsgsPerSec><iwlm:maximumRateMsgsPerSec>1000</iwlm:maximumRateMsgsPerSec><iwlm:processingTimeoutSec></iwlm:processingTimeoutSec><iwlm:processingTimeoutAction></iwlm:processingTimeoutAction><iwlm:additionalInstances></iwlm:additionalInstances><iwlm:startInstancesWhenFlowStarts></iwlm:startInstancesWhenFlowStarts><iwlm:commitCount></iwlm:commitCount><iwlm:commitInterval></iwlm:commitInterval><iwlm:startMode></iwlm:startMode>
</iwlm:workloadManagement></wsp:Policy>
mqsicreatepolicy BK9 -t WorkloadManagement -l WLM_Policy01 -f policy_config.xml
23
ワークロード・マネージメント – 設定
②作成したポリシーを、メッセージ・フローに適用
mqsireportpolicyコマンドにて作成したポリシーの確認
– -tで「WorkloadManagement」を指定
– -lでポリシー名を指定(例ではWLM_Policy01)
mqsiattachpolicyコマンドにてポリシーをメッセージフローに適用
– -tで「WorkloadManagement」を指定
– -lでポリシー名を指定(例ではWLM_Policy01)
– -e, -m, -k, -l で実行グループ、メッセージフロー、アプリケーション(オプション)、ライブラリ(オプション)を指定
$mqsireportpolicy BK9 -t WorkloadManagement -l WLM_Policy01BIP1895I: Policy type 'WorkloadManagement' Policy name 'WLM_Policy01' Policy URI'http://AHA032671:4414/isr/oslc/resource/isr_core/f7090dfe-a759-43aa-a39c-2baa7
bbc7740'Policy content'<wsp:Policy xmlns:wsp="http://www.w3.org/ns/ws-policy"> <iwlm:workloadManageme
nt xmlns:iwlm="http://www.ibm.com/xmlns/prod/websphere/iib/9.0.0/policy/wlm"> <iwlm:notificationThresholdMsgsPerSec></iwlm:notificationThresholdMsgsPerSec> <iwlm:maximumRateMsgsPerSec>1000</iwlm:maximumRateMsgsPerSec> <iwlm:processingTimeoutSec></iwlm:processingTimeoutSec> <iwlm:processingTimeoutAction></iwlm:processingTimeoutAction> <iwlm:additionalInstances></iwlm:additionalInstances> <iwlm:startInstancesWhenFlowStarts></iwlm:startInstancesWhenFlowStarts> <iwlm:commitCount></iwlm:commitCount> <iwlm:commitInterval></iwlm:commitInterval> <iwlm:startMode></iwlm:startMode> </iwlm:workloadManagement></wsp:Policy>‘
mqsiattachpolicy BK9 -e EG1 -m HelloServiceProvider -t WorkloadManagement -l WLM_Policy01 -k SOAP.APP01
24
ワークロード・マネージメント – 設定
BARファイルによるポリシーの適用
「ポリシー」に作成済みのポリシーを設定
デプロイ時に指定のポリシーが適用される
※WebUIによる管理機能/コマンドにて動的に適用したポリシーは、BARファイルの再デプロイ時にリセットされるBARファイルにあらかじめポリシーを指定しておくことで、デプロイ直後からポリシーを適用可能
作成済みポリシー名を設定
25
(補足)mqsicreatepolicyコマンド
mqsicreatepolicyコマンドの文法
mqsicreatepolicy brokerSpec -t policyType -l policyName -f policyDocument
コマンド・オプション:
'brokerSpec' は以下のいずれかの値
'brokerName' : ローカルに定義されているブローカーの名前
'-n brokerFileName' : リモート・ブローカー接続パラメーターが含まれているファイル (*.broker)
'-i ipAddress -p port -q qMgr' : リモート・ブローカーのホスト名、ポート、およびキューマネージャー
‘-t policyType’: ポリシーのタイプを指定(例: ‘WorkloadManagement’)
‘-l policyName’: ポリシー名を指定
‘-f policyDocument’ : ポリシー設定用XML文書を指定
以下は必要に応じて指定
'-w timeoutSecs' : ブローカーの応答を待機する最大秒数 (デフォルトは 60)
'-v traceFileName' : 指定されたファイルに詳細内部トレースを送信
26
(補足)mqsichangepolicyコマンド
mqsichangepolicyコマンドの文法
mqsichangepolicy brokerSpec -t policyType -l policyName -f policyDocument
コマンド・オプション:
'brokerSpec' は以下のいずれかの値
'brokerName' : ローカルに定義されているブローカーの名前
'-n brokerFileName' : リモート・ブローカー接続パラメーターが含まれているファイル (*.broker)
'-i ipAddress -p port -q qMgr' : リモート・ブローカーのホスト名、ポート、およびキューマネージャー
‘-t policyType’: ポリシーのタイプを指定(例: ‘WorkloadManagement’)
‘-l policyName’: ポリシー名を指定
‘-f policyDocument’ : ポリシー設定用XML文書を指定
以下は必要に応じて指定
'-w timeoutSecs' : ブローカーの応答を待機する最大秒数 (デフォルトは 60)
'-v traceFileName' : 指定されたファイルに詳細内部トレースを送信
27
(補足)mqsideletepolicyコマンド
mqsideletepolicyコマンドの文法
mqsideletepolicy brokerSpec -t policyType -l policyName
コマンド・オプション:
'brokerSpec' は以下のいずれかの値
'brokerName' : ローカルに定義されているブローカーの名前
'-n brokerFileName' : リモート・ブローカー接続パラメーターが含まれているファイル (*.broker)
'-i ipAddress -p port -q qMgr' : リモート・ブローカーのホスト名、ポート、およびキューマネージャー
‘-t policyType’: ポリシーのタイプを指定(例: ‘WorkloadManagement’)
‘-l policyName’: ポリシー名を指定
以下は必要に応じて指定
'-w timeoutSecs' : ブローカーの応答を待機する最大秒数 (デフォルトは 60)
'-v traceFileName' : 指定されたファイルに詳細内部トレースを送信
28
(補足)mqsireportpolicyコマンド
mqsireportpolicyコマンドの文法
Syntax 1: mqsireportpolicy BrokerName -t policyType -l policyNameSyntax 2: mqsireportpolicy BrokerName -t policyType (-a | -r) Syntax 3: mqsireportpolicy BrokerName -e egName -m flowName [-k application] [-y library]
コマンド・オプション:
'brokerSpec' は以下のいずれかの値
'brokerName' : ローカルに定義されているブローカーの名前
'-n brokerFileName' : リモート・ブローカー接続パラメーターが含まれているファイル (*.broker)
'-i ipAddress -p port -q qMgr' : リモート・ブローカーのホスト名、ポート、およびキューマネージャー
‘-t policyType’: ポリシーのタイプを指定(例: ‘WorkloadManagement’)
‘-l policyName’: ポリシー名を指定
‘-f policyDocument’ : ポリシー設定用XML文書を指定
‘-m messageFlow’: メッセージフロー名を指定
‘-a’: すべてのポリシーのシングルレベルを表示
‘-r’: すべてのポリシーとコンテンツを表示
以下は必要に応じて指定
‘-k application’: アプリケーション名を指定
‘-y library’: ライブラリ名を指定
'-w timeoutSecs' : ブローカーの応答を待機する最大秒数 (デフォルトは 60)
'-v traceFileName' : 指定されたファイルに詳細内部トレースを送信
29
(補足)mqsiattachpolicyコマンド
mqsiattachpolicyコマンドの文法
コマンド・オプション:
'brokerSpec' は以下のいずれかの値
'brokerName' : ローカルに定義されているブローカーの名前
'-n brokerFileName' : リモート・ブローカー接続パラメーターが含まれているファイル (*.broker)
'-i ipAddress -p port -q qMgr' : リモート・ブローカーのホスト名、ポート、およびキューマネージャー
‘-e egName’: 実行グループ名を指定
‘-m messageFlow’: メッセージフロー名を指定
‘-t policyType’: ポリシーのタイプを指定(例: ‘WorkloadManagement’)
‘-l policyName’: ポリシー名を指定
以下は必要に応じて指定
‘-k application’: アプリケーション名を指定
‘-y library’: ライブラリ名を指定
'-w timeoutSecs' : ブローカーの応答を待機する最大秒数 (デフォルトは 60)
'-v traceFileName' : 指定されたファイルに詳細内部トレースを送信
mqsiattachpolicy brokerSpec -e egName -m messageFlow -t policyType -l policyName [-k application] [-y library]
30
(補足)mqsidetachpolicyコマンド
mqsidetachpolicyコマンドの文法
コマンド・オプション:
'brokerSpec' は以下のいずれかの値
'brokerName' : ローカルに定義されているブローカーの名前
'-n brokerFileName' : リモート・ブローカー接続パラメーターが含まれているファイル (*.broker)
'-i ipAddress -p port -q qMgr' : リモート・ブローカーのホスト名、ポート、およびキューマネージャー
‘-e egName’: 実行グループ名を指定
‘-m messageFlow’: メッセージフロー名を指定
以下は必要に応じて指定
‘-k application’: アプリケーション名を指定
‘-y library’: ライブラリ名を指定
'-w timeoutSecs' : ブローカーの応答を待機する最大秒数 (デフォルトは 60)
'-v traceFileName' : 指定されたファイルに詳細内部トレースを送信
mqsidetachpolicy brokerSpec -e egName -m messageFlow [-k application] [-y library]
31
WebUIによる管理機能の強化
32
WebUIによる管理機能
Webブラウザからブローカー実行環境の運用管理が可能
MQ Explorer やWASの管理コンソールの機能を補完
WMB V8.0.0.1にて追加された機能
Webユーザー・インターフェース・サーバーを提供
HTTP/HTTPSリクエストを受け付け、要求された管理操作を実行する
デフォルトで有効化されている
主な機能(V8.0.0.1)
ブローカーのステータス表示
起動停止、プロパティ設定は不可
実行グループのステータス表示、起動、停止
アプリケーション/メッセージフローのステータス表示、起動、停止
構成可能サービスの表示
データ・キャプチャ・ストアの表示
Webユーザー・アカウントの表示
管理ログの表示ブローカーブローカー
実行グループ
メッセージフロー
メッセージフロー
HTTP(S)
ブラウザ
WebユーザI/F Server
33
WebUIによる管理機能の強化
WebUIによる管理機能の強化
メッセージフロー統計(スナップショット統計)の表示が可能
リアルタイムでフローの各種指標を参照可能–メッセージ処理のスループット、平均CPU時間など
統計情報をグラフで表示
メッセージフロー・レベル/ノード・レベルで統計情報の比較が可能
メッセージフロー統計の開始/停止が可能
ワークロード・マネージメント・ポリシーの設定が可能
ポリシーの作成、編集、削除、メッセージフローへの適用
34
WebUIによる管理機能の強化
WebUI追加機能
メッセージフロー統計の開始/停止
デフォルトでは、統計情報の収集はオフ
「ブローカー名」⇒「実行グループ」⇒「アプリケーション」⇒アプリケーション名の右三角形をクリック
統計情報のオン/オフを選択
35
WebUIによる管理機能の強化
統計情報の表示
統合サーバー(実行グループ)、アプリケーション、メッセージフローにて統計を確認※メッセージ・フロー統計がオン時
「統合サーバー」⇒「統計」タブをクリック
メッセージフローごとに統計情報が表示される
36
WebUIによる管理機能の強化
「メッセージフロー」⇒統計をクリック
統計情報がグラフで表示される
37
WebUIによる管理機能の強化
グラフ右プルダウン・メニューをクリック
グラフで表示する項目を選択可能
グラフに表示する統計情報を選択可能
38
WebUIによる管理機能の強化
ノードごとの統計情報を表示
メッセージフローに含まれるノードと、統計情報を表示
「メッセージフロー」⇒統計をクリック
39
WebUIによる管理機能の強化
WebUIによる管理機能の変更点
統計情報フォーマットの追加Web管理ツールから統計情報をオンにした場合、統計情報はJSONフォーマットで出力される
出力先トピック
Web管理ユーザーに必要な権限が追加
SYSTEM.BROKER.WEBADMIN.SUBSCRIPTIONキューへのput/get権限
SYSTEM.BROKER.MB.TOPICトピックへのpub/sub権限
$SYS/Broker/brokerName/Statistics/JSON/SnapShot/executionGroupName/applications/applicationName/libraries/libraryName/messageflows/messageFlowName
40
グローバル・キャッシュ拡張
41
グローバル・キャッシュとは
複数プロセス間でデータを共有可能な機能としてグローバル・キャッシュを提供(V8.0.0.1)
異なる実行グループや異なるブローカー上のメッセージ・フロー間でデータの共有/再利用が可能
WebSphere eXtreme Scaleから、キャッシングの一部機能を移植
データ共有のためのデーターベースなどの代替ソリューションが不要
複数ブローカーでのリクエスト/リプライ処理や、参照データのキャッシュなどに活用可能
キャッシュされたデータを実行グループに複製して保持することで、障害時のデータロスを防止
JavaComputeノードを使用して、グローバル・キャッシュへアクセス
キーと値を関連付けるマップ形式でデータを保持
mqsicacheadminコマンド、リソース統計、アクティビティー・ログにてキャッシュ情報を確認可能
グローバル・キャッシュ
ブローカーB
ブローカーAメッセージフローB
異なる実行グループ間でデータを共有
異なるブローカー間でデータを共有マップ形式でデータを保存
Value2Key2
Value3Key3
Value1Key1
値キー
メッセージフローA
メッセージフローA
42
(参考)グローバル・キャッシュ
グローバル・キャッシュを利用するために必要なキャッシュ・コンポーネント
キャッシュ・コンポーネントは実行グループ上で動作
コンテナ・サーバーのロケーション情報を管理するコンポーネント
コンテナ・サーバーをモニターし、データの配置を制御
メッセージフローは、カタログ・サーバーからキャッシュ配置情報を取得し、キャッシュにアクセス
グローバル・キャッシュのデータを保持するコンポーネント
説明
カタログ・サーバー
コンテナ・サーバー
コンポーネント
実行グループ1 実行グループ2 実行グループ3
コンテナ・サーバー
カタログ・サーバー
コンテナ・サーバー
メッセージフローメッセージフローメッセージフロー
実行グループ4
メッセージフロー
カタログ・サーバー
コンテナ・サーバー
キャッシュ・データは複製され、コンテナ・サーバーに分散して格納される
グローバル・キャッシュ
43
グローバルキャッシュ拡張
V8.0.0.2での機能拡張
外部 WebSphere eXtreme Scale グリッドとの連携
ブローカー内部のカタログ・サーバー/コンテナ・サーバーはWXSのグリッドと連携
外部WXSへのSSL接続が可能
キャッシュの残存時間設定
V9.0での機能拡張
マルチインスタンス・ブローカーのサポート
44
外部 WebSphere eXtreme Scale グリッドとの連携
外部 WebSphere eXtreme Scale グリッドとの連携をサポート(V8.0.0.2)
外部WXSで提供されるキャッシュを利用可能
ブローカー内部のカタログ・サーバー/コンテナ・サーバーはWXSのグリッドと連携
外部WXSへのSSL接続が可能
グリッドを識別するためにドメイン・ネームを使用WXSクライアントは、ドメイン・ネームを使用してグリッドを識別
同じドメイン・ネームを持つWXSのみがグリッドに参加できる
使用可能なWXS環境の例
DataPower XC10
WAS NDの組み込みWXSサーバー
スタンドアロンWXS
外部WebSphere eXtreme Scale グリッド
実行グループ1 実行グループ2 実行グループ3
コンテナ・サーバー
カタログ・サーバー
コンテナ・サーバー
メッセージフローメッセージフローメッセージフロー
カタログ・サーバー
コンテナ・サーバーグローバル・キャッシュ
連携
45
外部 WebSphere eXtreme Scale グリッドとの連携
外部グリッドへの接続設定
WXSServer 構成可能サービスを作成
設定プロパティ一覧
mqsicreateconfigurableserviceコマンドもしくはIIB Explorerで設定
mqsicreateconfigurableserviceコマンドでの設定
-c でサービスタイプ「WXSServer」を指定
-o でオブジェクトタイプ「xc10」を指定
-n, -vで上記パラメータを設定
セキュア・グリッドへの接続時に使用するセキュリティー ID 名
mqsisetdbparms コマンドにて指定したID名から”wxs::” を省いたIDを指定
オプションsecurityIdentity
オプション
必須
必須
WXS接続プロパティーを定義用XMLファイルへの絶対パス特定のプロパティー(numberOfBuckets や timeToLive など) を変更可能
overrideObjectGridFile
接続先WXSグリッドのカタログ・サーバーのホスト名カタログ・サーバーをコンマ区切りでリストhostname:port 型式で指定
catalogServiceEndPoints
接続先グリッド名gridName
説明プロパティ
46
外部 WebSphere eXtreme Scale グリッドとの連携
コマンド実行例グリッド名「myGrid」、WXSグリッドのカタログ・サーバーのホスト名「Server.ibm.com」、ポート「 2809」、接続定義ファイル(後述) 「xc10Client.xml」、セキュリティID(後述)「xc10」 を設定する場合
接続にユーザーIDとパスワードを必要とするセキュア・グリッドに接続する場合は、あらかじめmqsisetdbparms コマンドを使用してセキュリティー ID を作成
-n でセキュリティーID名を指定
-u でユーザー名指定
-p でパスワードを指定
mqsicreateconfigurableservice BK9 -c WXSServer -o xc10 -n catalogServiceEndPoints,gridName,overrideObjectGridFile,securityIdentity-v "server.ibm.com:2809","myGrid","C:¥Brokers¥WebSphere_eXtreme_Scale¥xc10¥xc10Client.xml","xc10"
mqsisetdbparms BK9 -n wxs::id1 -u userId -p password
47
外部 WebSphere eXtreme Scale グリッドとの連携
IB Explorerでの設定
構成可能サービス名
構成可能サービスタイプ
設定プロパティ
48
外部 WebSphere eXtreme Scale グリッドとの連携
WXS接続プロパティーを定義用XMLファイル
サンプル定義XMLファイルを以下に提供
特定のプロパティー(numberOfBuckets や timeToLive など) を変更可能
–詳細な設定項目については、WXSのInformationCenterを参照http://publib.boulder.ibm.com/infocenter/wxsinfo/v7r1m1/index.jsp
設定例–外部WXSキャッシュのデータをブローカー内部にコピーしないよう設定する例
numberOfBuckets=“0” を設定
–構成可能サービスにて、objectgrid.xmlへの絶対パスを設定
<backingMap name=".*¥.LUT" template="true" readOnly="false" lockStrategy="NONE" ttlEvictorType="LAST_UPDATE_TIME" timeToLive="3600" copyMode="COPY_TO_BYTES“ numberOfBuckets=“0” />
Windows の場合:<導入ディレクトリ>¥cachesupport¥config¥objectgrid.xml
Linux、UNIXの場合:<導入ディレクトリ>/cachesupport/config/objectgrid.xml
49
外部 WebSphere eXtreme Scale グリッドとの連携
外部グリッドへの接続
JavaComputeを使用して外部グリッド内のマップへのアクセス
MbGlobalMap オブジェクトを追加し、外部グリッド上のマップの名前を指定
グリッドへの接続に使用する構成可能サービスの名前を指定
DataPower XC10上のマップ「MyMap.LUT」に接続する例
構成可能サービスは「xc10Connection」
MbGlobalMap xc10Map = MbGlobalMap.getGlobalMap("MyMap.LUT","xc10Connection");...String val = (String)xc10Map.get(key);
構成可能サービス名を指定構成可能サービス名を指定
50
外部 WebSphere eXtreme Scale グリッドとの連携
グリッドを識別するためのドメイン・ネームの使用
複数ブローカーにまたがるグローバル・キャッシュを使用する場合、ドメイン・ネームの設定が必要
同じドメイン・ネームを持つサーバーのみが、同じキャッシュ(グリッド)に参加可能
外部WXSに接続する場合は、WXSサーバーと実行グループでドメイン・ネームをあわせる
実行グループのプロパティまたはポリシー・ファイルにて、ドメイン・ネームを設定mqsichangepropertiesコマンドでの設定
–-n で「domainName」 を指定, -vで値を指定
以下の構成の場合の設定例
ブローカー BK1EG1
コンテナ・サーバー
カタログ・サーバー
ホスト名: server1
EG1でのプロパティ設定
・enableCatalogService: true・enableContainerService: true・listenerPort: 2809 ・listenerHost: server1・haManagerPort: 2810・catalogClusterEndPoints:
BK1_server1_2809:server1:2811:2810・connectionEndPoint: server1:2809・domainName: myDomain
mqsichangeproperties BK1 -e EG1 -o ComIbmCacheManager -n enableCatalogService,enableContainerService,listenerPort,listenerHost,haManagerPort,catalogClusterEndPoints,connectionEndPoints,domainName -v true,true,2809,server1,2810, BK1_server1_2809:server1:2811:2810,server1:2809,myDomain
実行グループEG1にプロパティを設定するコマンドの例
51
外部 WebSphere eXtreme Scale グリッドとの連携
ポリシー・ファイルでの設定–domainName タグを指定
<?xml version="1.0" encoding="UTF-8"?><cachePolicyxmlns="http://www.ibm.com/xmlns/prod/websphere/messagebroker/globalcache/policy-1.0"><domainName>myDomain</domainName>
<broker name="BK1" listenerHost=“server1"><catalogs>1</catalogs><portRange> <startPort>3000</startPort>
<endPort>3019</endPort></portRange>
</broker></cachePolicy>
52
(参考)グローバル・キャッシュ
実行グループでのプロパティ設定
mqsichangepropertiesにて実行グループのプロパティーを設定
-bでcachemanagerを指定、-oでComIbmCacheManager を指定
-n -v で関連プロパティーを設定
カタログ・サーバー/コンテナ・サーバーを配置する実行グループに以下を指定
コンテナ・サーバー/カタログ・サーバーを配置する実行グループにて、以下のホスト/ポートを設定
コンテナ・サーバーを配置する場合 true を指定(デフォルト: false)enableContainerService
カタログ・サーバーを配置する場合 true を指定(デフォルト: false)enableCatalogService
説明プロパティ
カタログ・サーバーが使用するエンドポイントを指定
複数のカタログ・サーバーが存在する場合は、コンマ区切りでリスト
※エンドポイントの指定方法は次頁
カタログ・サーバーcatalogClusterEndPoints
カタログ・サーバー/コンテナサーバー
カタログ・サーバー/コンテナサーバー
カタログ・サーバー/コンテナサーバー
設定が必要なコンポーネント
カタログ・サーバーおよびコンテナサーバーが使用するポートを指定
haManagerPort
カタログ・サーバーおよびコンテナサーバーが使用するポートを指定
listenerPort
ローカル・コンピューターのホスト名を指定2つ以上ホスト名を持つ場合に指定
listenerHost
説明プロパティ
※各ポートはそれぞれ固有の番号を指定
53
(参考)グローバル・キャッシュ
※カタログ・サーバーが使用するエンドポイントの指定方法
–以下の形式で指定
catalogClusterEndPointsの設定例
–他プロパティにて以下を設定した場合
ブローカー名: MBV8BK、listenerHost: localhost、listenerPort: 2809、haManagerPort: 2810
–CatalogPeerPortの指定:2811
catalogClusterEndPointsの指定 ⇒ MBV8BK_localhost_2809:localhost:2811:2810
ServerName:listenerHost:CatalogPeerPort:haManagerPort
BrokerName_listenerHost_listenerPort 形式で指定
・BrokerName: ブローカー名
・listenerHost: listenerHostプロパティで設定したホスト名を指定
・listenerPort: listenerPortプロパティで設定したポート番号を指定
listenerHostプロパティで設定したホスト名を指定
新たにポート番号を指定
haManagerPortプロパティ設定したポート番号を指定
54
(参考)グローバル・キャッシュ
カタログ・サーバーへの接続情報を設定
グローバル・キャッシュにアクセスするすべての実行グループで設定が必要
mqsicacheadmin コマンドでグローバル・キャッシュ情報を取得する場合、以下を設定
connectionEndPoints
プロパティ
接続先カタログ・サーバーホスト名、ポート番号を指定
複数のカタログ・サーバーが存在する場合は、コンマ区切りでリスト
設定形式: listenerHost:listenerPort, listenerHost2:listenerPort2
説明
enableJMX パラメーターが true に設定される場合、使用されるポートjmxServicePort
実行グループがグローバル・キャッシュの管理情報を提供するどうかを指定enableJMX
説明プロパティ
55
(参考)グローバル・キャッシュ
ポリシー・ファイルによるプロパティ設定
mqsichangebroker もしくはmqsichangepropertiesにてブローカー・プロパティを設定
mqsichagebrokerでの設定 (ブローカー停止後コマンドを実行)-b で「ポリシーファイルの絶対パス」を指定
mqsichangepropertiesコマンドでの設定
-b で「cachemanager 」を指定、-oで「CacheManager」 を指定
-nで「policy」 -v で「ポリシー・ファイルの絶対パス」を設定
コマンド実行後、ブローカーを再起動
mqsichangebroker broker_name -b /path/policy.xml
mqsichangeproperties broker_name -b cachemanager -o CacheManager -n policy -v /path/policy.xml
56
キャッシュの残存時間設定
キャッシュの残存時間設定をサポート(V8.0.0.2)
MbGlobalMapオブジェクト取得時に残存時間(秒)を指定
残存時間を指定したMbGlobalMap オブジェクトを使用して作成されたマップに適用される
マップ内の既存データや別MbGlobalMap オブジェクトのマップは影響を受けない
残存時間はマップ項目の 終更新日時からカウントされる
デフォルトでは無制限
キャッシュによりメモリ消費量が増大することをさけることができるV8.0GA版では、不要なデータは、アプリケーションの中でremoveするか、mqsicacheadminコマンドで
定期的に削除する必要があった
指定方法
MbGlobalMapSessionPolicyクラスに残存時間(秒)を設定
MbGlobalMapオブジェクト取得時に、 MbGlobalMapSessionPolicyオブジェクトを設定
MbGlobalMap myMap = MbGlobalMap.getGlobalMap("myMap", new MbGlobalMapSessionPolicy(60))
Expiryを設定デフォルトは0 (Expiryなし)
Expiryを設定デフォルトは0 (Expiryなし)
57
キャッシュの残存時間設定
キャッシュの残存時間設定の注意点
残存時間は、MbGlobalMapSessionPolicyオブジェクトにstaticに設定される
異なる存続時間値を設定する場合は、データをキャッシュするごとに値を設定
※以下の場合、残存時間はm1, m2, m3とも20(秒)が設定される
MbGlobalMap m1 = MbGlobalMap.getGlobalMap("myMap", new MbGlobalMapSessionPolicy(60));MbGlobalMap m2 = MbGlobalMap.getGlobalMap("myMap", new MbGlobalMapSessionPolicy(40));MbGlobalMap m3 = MbGlobalMap.getGlobalMap("myMap", new MbGlobalMapSessionPolicy(20));m1.put("k1","v1");m2.put("k2","v2");m3.put("k3","v3");
MbGlobalMap m1 = MbGlobalMap.getGlobalMap("myMap", new MbGlobalMapSessionPolicy(60));m1.put("k1","v1");m1 = MbGlobalMap.getGlobalMap("myMap", new MbGlobalMapSessionPolicy(40));m1.put("k2","v2");m1 = MbGlobalMap.getGlobalMap("myMap", new MbGlobalMapSessionPolicy(20));m1.put("k3","v3");
58
マルチインスタンス・ブローカーのサポート
コンテナサーバーをマルチインスタンス・ブローカーとして構成可能(V9.0.0.0)
自動的にテイクオーバー先でコンテナサーバーが起動しキャッシュが共有される4コンテナサーバーまで設定可能
カタログ・サーバーのマルチインスタンス構成は不可
マルチインスタンスの対象のコンテナサーバーに接続する実行グループでの設定ポリシー・ファイルにてActive/Standbyインスタンスのホスト名を構成
サンプルポリシーファイルを以下に提供
リスナー・ホストにActive/Standbyインスタンスのホスト名を指定
Windows の場合:<導入ディレクトリ>¥sample¥globalcache¥policy_multi_instance.xml
Linux、UNIXの場合:<導入ディレクトリ>/sample/globalcache/policy_multi_instance.xml
<?xml version="1.0" encoding="UTF-8"?><cachePolicy xmlns="http://www.ibm.com/xmlns/prod/websphere/messagebroker/globalcache/policy-1.0"><broker name="MIBRK">
<listenerHost>host1.ibm.com</listenerHost><listenerHost>host2.ibm.com</listenerHost><catalogs>0</catalogs><portRange>
<startPort>3020</startPort><endPort>3039</endPort>
</portRange></broker></cachePolicy>
59
ビジネス・ルール
60
ビジネス・ルール
自然言語を使用したビジネス・ルールの開発
ツールキットで自然言語 Business Action Language (BAL) を利用してルールを作成可能
ブローカー上でのビジネス・ルールの実行
ODMと同等のルール・エンジンをブローカー内部のJVMで稼動
業務レベルの判断ロジックをESBで実行
データに対するメディエーション処理の集約 ⇒ パフォーマンス向上、レイテンシー縮小
Portal
Rule-basedBusiness Decisions
BPMSystem
EnterpriseApplication
DestinationBusiness
Application
DestinationBusiness
Application
ESB
61
ビジネス・ルール
IBM Operational Decision Manager(ODM)との連携機能の提供
ODMの開発ツール(Rule Designer)で作成したルールをツールキットにインポート可能
インポートしたルールの編集は不可
インポートしたルールを使用してフローを開発し、ブローカーにルールとともにデプロイ可
ブローカー(実行グループ)内部のルール・エンジンでインポートしたルールを実行
ルールはローカルのリポジトリ(ファイルシステム)に格納
ブローカーから外部のODM repository(RES DB)にアクセスし、ルールを取得することも可
Rule Designer からインポートしたルールでフローを実装していることが前提
ODM v8.5 をサポート
WMB v7/v8では、サポートパックIAM9(カテゴリ2)を利用することでODM v7/v7.5/v8と連携可
Broker Rule Engine
DecisionRepository
(File System)デプロイ
(BARファイル)
Toolkit
フロー開発
Rule Designer
インポート
ビジネスルール デプロイ
Rule ExecutionServer
ODMRepository(Database)
ODM 取出
IIB
実行
62
(補足) IBM Operational Decision Manager
“今、この瞬間”をビジネスに活用! 情報収集から意思決定までを自動化
意思決定および変更検出ツールを組み合わせて、進化、追跡、監査、 およびテストが
容易なビジネス・ルール管理システムを提供
ビジネス・ルール管理システム (BRMS)
・ルールの定義・ルールの分析・ルールの保守※業務用語
ユーザー・ツール
・ルールを保存・ルールの一元
管理・ルールの共有
ルール・リポジトリー
ルールを展開、実行、およびモニター
ルール・エンジン
ビジネス・ルールが存在する典型的な場所
アプリケーションコードに埋め込まれたロジック
If xxxxThen xxxxxElse xxxxx・・・・・・・・・・・・・・
人の頭の中にノウハウとしてあるロジック
プロセスの中に定義されたロジック
各種ドキュメントの中にあるロジック
From : Honmoku To : Smyrna Today : 2005/04/16Order No. RAN No.Part Number : 24011 CJ000Tracking Point StatusInvoice No. B/L No.
…
Plan Revised Actual Plan Revised Actual …SA00001 24011 CJ000 200 200 60 060415 060415 060415 060415 060415 060415SA00002 24011 CJ000 100 100 60 060415 060415 060415 060415 060415 060415SA00003 24011 CJ000 200 200 40 060415 060415 060415 060415 060417SA00004 24011 CJ000 200 200 00 060415 060418 060415 060418SA00005 24011 CJ000 100 100 00 060415 060418 060415 060418
(60)B/L(40)Vanning CompletionRAN# PART#
ActualQTY
CurrentStatus
PlanQTY
ルールの一元管理による
透明性・保守性の確保
結果として変更への対応柔軟性を実
現
ルールの可視化ビジネスユーザ自らルールの変更が可能
63
(補足) IBM Operational Decision Manager
Decision Server
Decision Center
デプロイデプロイ デプロイデプロイ
デプロイデプロイ デプロイデプロイ
Event ExecutionRuntime
Event Designer
Decision Center Console
Decision Center Repository
Decision Center for Business Space
Rule Execution Server
Rule Designer
管理管理Rule Solutions
for Office
ルール・アプリ開発
ルール・アプリ開発実行実行 実行実行
ガバナンスガバナンス
ルール開発ルール開発
ODM基本コンポーネント
イベント・アプリ開発
イベント・アプリ開発
ODM Repository/RES DB
64
ビジネス・ルール
ビジネス・ルール実行のための構成パターン
①IIBコンポーネントのみの構成
IIBコンポーネントのみによるビジネスルールの開発と実行が可能
ルールの変更を適用するためにフローのデプロイが必要
②IIBとODMとの連携構成
ODMの利用により、高度なビジネスルールの開発とルールのガバナンスが可能
ビジネスルールとITインフラ・ロジックの実装の分離
開発ユーザーの分離
デプロイ・タイミングの分離
BrokerToolkit
デプロイ
(BARファイル)ルール&フロー開発 実行
Rule Designer
ルール開発
Rule ExecutionServer DS
Repository
BrokerToolkit
デプロイ
(BARファイル)フロー開発 実行
インポート 更新
Decision Center
ガバナンス
65
Decision Service (決定サービス)
ツールキット上では、ビジネス・ルールをDecision Service (決定サービス)として定義
Decision Service は、アプリケーション/ライブラリに格納する1コンポーネント(.rules ファイル)
Decision Service 内にルールを定義(複数のルールを定義可)
Decision Service エディターを利用
ルールは、IF-THEN-ELSE の構文で記述
日本語では、「仮定条件」-「その場合」-「それ以外の場合」
アプリケーション/ライブラリー
フロー
スキーマ定義
Decision Service(決定サービス)
決定サービス xxxxx01.rules
xxxxx01.rules
(ルールセットxxxxx01)
ルール 1
ルール 2
決定サービス xxxxx02.rules
ルール1
仮定条件(IF)
xxxxxxxxxxxxxxxxxx
その場合(THEN)
yyyyyyyyyyyyyyyyyy
それ以外の場合(ELSE)
zzzzzzzzzzzzzzzzzz
66
Decision Service (決定サービス)
Decision Service の作成
ツールキット上で「新規」→「Decision Service」を指定
67
Decision Service (決定サービス)
Decision Service の作成(つづき)
格納するアプリケーション/ライブラリ、Decision Serviceの名前を指定
Decision Serviceで使用するデータの指定後続の手順でも選択可
68
Decision Service (決定サービス)
Decision Service の作成(つづき)
空のDecision Serviceが作成され、Decision Service エディターで開かれる
Decision Service エディター
タブで設定項目を切り替え
69
Decision Service (決定サービス)
Decision Service の作成(つづき) →データ(パラメータ)の選択
「Parameters」タブでルールの定義に使用するデータ(パラメータ)を指定
※ルールに使用するデータは事前にDFDL/XMLスキーマで定義しておく必要がある
データの選択
ルール内で使用するデータの言語化
70
Decision Service (決定サービス)
Decision Service の作成(つづき) →ルールの定義
「Rule sequence」タブでビジネスルールを定義
「Ctrl+Space」でコンテント・アシストを利用
71
Decision Service (決定サービス)
Decision Service の作成(つづき) →ルールの定義
コンテント・アシストを利用してルールを組み立てていく
先に指定したデータの構造を展開していくことができる
72
Decision Service (決定サービス)
Decision Service の作成(つづき) →ルールの追加(オプション)
「Add Rule」ボタンでルールを追加できる
73
Decision Service (決定サービス)
Decision Service ノードの設定
Decision Service をドラッグ&ドロップでメッセージフローに移動⇒Decision Service ノードが配置される
作成したDecision Service
Decision Service ノード
74
Decision Service (決定サービス)
Decision Service ノードの設定 →ロケーションのXPath指定
ドラッグ&ドロップでXPathを生成
XPath 式ビルダーを利用してXPathを生成する
ルールに定義したデータ(パラメータ)に対するフロー内におけるロケーションをXPathで指定
75
Decision Service (決定サービス)
Decision Service ノードの設定 →プロパティの完成
プロパティの完成
76
Decision Service (決定サービス)
Decision Service ノードが使用するLocalEnvironmentノード通過後、LocalEnvironment.DecisionServices下に以下のエレメントがセットされる
ノード通過後のLocalEnvironment ツリーの出力例
Integer
String
String
データタイプ
ノードによって使用されたルール・セット名ruleSet
条件に合致して実行されたルールの数rulesMatched
ノードによって使用されたDecision Service 名
アプリケーション/ライブラリ内に格納されている場合は、その名前がPrefix に付くdecisionService
説明エレメント名
(0x01000000:Name):DecisionServices = (
(0x03000000:NameValue):decisionService = 'BookOrder2/bookorder2' (CHARACTER)
(0x03000000:NameValue):ruleSet = 'bookorder2' (CHARACTER)
(0x03000000:NameValue):rulesMatched = 1 (INTEGER)
)
77
Decision Service (決定サービス)
Decision Service を利用するフローの処理イメージ
DecisionService ノード・プロパティ
ルール・エンジン
Root
XMLNSC
BookOrder
e1 e2=0
仮定条件
‘BookOrder’の e1 が X より大きい
その場合
‘BookOrder’の e2 を Y とする。
ルール定義
ノード・プロパティのXPathで
BookOrder の位置を指定
Root
XMLNSC
BookOrder
e1 e2=Y
BookOrder
e1 e2=Y
ルールに基づいてデータを変換
入力ツリー 出力ツリー
78
Decision Service (決定サービス)
ブローカーのセットアップ
DecisionServices を含むフローをブローカーにデプロイする場合、ブローカーの稼動モードを拡
張する必要がある
モード拡張
モード拡張解除
>mqsimode -x DecisionServicesBIP1831I: ブローカー '' にはモード拡張機能 'DecisionServices' があります。BIP8071I: コマンドが完了しました。
mqsimode (BrokerName) -x DecisionServices
※分散環境では、ブローカー名の指定は不要。z/OS環境では、ブローカー名を指定※ブローカー稼動時に動的に反映可※モード拡張を解除にする場合も同じコマンドを実行
>mqsimode -x DecisionServicesBIP1831I: ブローカー '' にはモード拡張機能 '' があります。BIP8071I: コマンドが完了しました。
BIP1835E: You attempted to deploy a broker archive (bar) file to execution group 'ex01' on broker '9BK', but a flow within the bar file contains a node of type 'ComIbmDecisionServiceNode' that requires extension 'DecisionServices' to be enabled in the broker. The bar file cannot be deployed. The bar file cannot be deployed because it contains a flow that is not valid for the target broker. Rework your message flow to use nodes that are valid in the current mode. Alternatively, contact your IBM representative to upgrade your license.
※モード拡張せずにDecisionServiceノードを含むフローをデプロイすると以下のエラーで失敗する
79
ODM連携
ODM Rule Designer で作成したルールをツールキットにインポート
インポートするファイルには以下の制約がある
インポートするファイルはルール・アプリケーション・アーカイブ・ファイル(.jar)であること
ルール・アプリケーション・アーカイブのルールセットにはアクション・ルールが含まれること
ルールセットはスキーマXOM(XSD)を持つこと(Java XOM は不可)
ルールセットはスキーマ・タイプのパラメータを持つこと
ODM Rule Designer
ルール・アプリケーションルールを配布可能な形にパッケージしたもの
スキーマXOMルール実行の対象となるデータのモデル
80
ODM連携
インポート手順
ツールキットから「ファイル」→「インポート」→「Decision Services」
→「Rule Application archive file」
ルールを格納するプロジェクトとインポートするルール・アプリケーション・アーカイブ・ファイルを指定
81
ODM連携
インポート手順(続き)
インポートされるルールセットを確認
インポートしたルールはDecision Service(.rules)として格納
82
ODM連携
インポート手順(続き)
インポートしたルール(Decision Service)はエディターで開けるが編集は不可ドラッグ&ドロップでフローへ配置可能
83
ODM連携
インポートしたルールからXMLスキーマの抽出も可能
入出力メッセージのメッセージモデルに利用
決定サービスを右クリック→「Extract XML Schema file…」
84
ODM連携
ODM Repository との連携
ODM RES のRepository(RES DB)にブローカー・ランタイムからアクセスし、
ルールを取得可能
RES(管理サーバー)に接続することでルールの変更通知を受信可能
Rule Designer で開発したルールをインポートして作成したフローでのみ設定可能
実行グループ
J2SE Rule Engine
変更通知 最新版
取得
RES DB
ビジネス・ルール
RES(管理サーバー)
85
ODM連携
ブローカー設定
JDBCProviders 構成可能サービスの作成
RES DBに接続するための情報(データベース名、サーバー名、ポート番号、セキュリティIDなど)をJDBCProviders 構成可能サービスに設定する
mqsicreateconfigurableservice / mqsichangeproperties コマンドを利用
–主な設定パラメータ:databaseName、serverName、portNumber、securityIdentity、connectionUrlFormat、type4DatasourceClassName
RES DBにアクセスするユーザーIDとパスワードの設定
JDBCProviders 構成可能サービスのsecurityIdentityプロパティに指定した値をリソース名としてアクセス・ユーザーID / パスワードを設定する
mqsisetdbparms コマンドを利用
DecisionServiceRepository 構成可能サービスの編集
デフォルトで定義されているDecisionServiceRepository 構成可能サービスを利用する
–複数のDecisionServiceRepository 構成可能サービスを定義することは不可
JDBCProviderNameプロパティに先に定義したJDBCProviders 構成可能サービス名を指定
RES(管理サーバー)する場合は、以下のプロパティを指定
–resManagementHost :ルール実行サーバーが稼動するホスト名
–resManagementPort :ルール実行サーバーの管理コンソール用ポート番号(ルール実行サーバーのmanagement.tcpip.port と同じ値)
86
ODM連携
フロー設定
DecisionServiceノードの以下のプロパティをチェック
ノード・プロパティ「Use DecisionServiceRepository configurable service」
87
.NET サポートの拡張
88
.NETサポートの拡張
.NETInput ノードの提供
ユーザーが任意のデータ受信処理を.NETコードで実装可能
CLR(Common Language Runtime)準拠の言語で実装
–C#、Visual Basic、F#、C++/CLI、など
.NETやCOM(Component Object Model)インターフェースでアクセス可能なリソースから
データを受信できるWebSphere MQ、MSMQ、ファイル、データベースなど
Microsoft Visual Studio との連携
ツールキットから.NETInputノードのダブルクリックでVisual Studio を起動可能
Microsoft Visual Studio用の.NETコードのテンプレートを提供
A polling-based .NETInput node
An event-driven .NETInput node
Windows版でのみサポート
WMB V8から、.NETComputeノードを提供
フローの途中で.NETコードによるメディエーション処理の実装が可能
89
.NETサポートの拡張
.NETInput ノードの設定
「基本」タブの「アセンブリー名」と「クラス名」で使用するアセンブリー/クラスを指定
.NETのアセンブリーはツールキットにインポートし、BARファイルにパッケージしてランタイムにデプロイ可能
ランタイム上のアセンブリーを直接参照する場合は絶対パスで指定
主なタブ/プロパティ
受信メッセージの解析(パース)に使用するドメイン、メッセージ・モデル等を指定入力メッセージの構文解析
妥当性検査の有無、失敗時の処置を指定妥当性検査
Visual Studioのソリューション(*.sln)を指定Visual Studio
モニター・イベントの構成を設定モニター
AppDomain名やアセンブリーID(バージョン、国/地域別環境、公開鍵トークン)を指定拡張
使用するアセンブリー(dll)とクラスを指定基本
説明タブ
90
.NETサポートの拡張
.NETInput ノードの設定
「Visual Studio」タブでVisual Studioのソリューション・ファイル(*.sln)を指定しておくと、.NETInputノードのダブルクリックで指定したソリューションを開くことができる
ダブルクリックで起動
Visual Studio
91
.NETサポートの拡張
.NETInput ノードのサンプル・コードの提供
A polling-based .NETInput nodeMSMQのキューをポーリングし、受信したメッセージを後続ノードに渡す処理を実装
An event-driven .NETInput nodeイベント・ベースでMSMQからメッセージを受信し、後続ノードの渡す処理を実装
Visual Studio のソリューション形式で提供
<IIBv9InstDir>¥sample¥DotNet¥DotNetInput¥VS2010¥SampleDotNetInputSolution¥DotNetInputSolution.sln
92
.NETサポートの拡張
MSMQと連携する.NET サンプル・フローの提供
ツールキットから「ヘルプ」→「サンプルおよびチュートリアル」のビューを開き、「トランスポートおよび接続」→「.NETInput Node for MSMQ sample」
MQから固定長メッセージを受信し、XMLに変換してMSMQに送信するフロー
MSMQからメッセージを受信し、メッセージ処理を行い、MSMQに返信するフロー
MSMQからXMLメッセージを受信し、固定長メッセージに変換してMQに送信するフロー
93
.NETサポートの拡張
.NET アプリケーションと連携するパターン(メッセージフローの雛形)の提供
同期RFCが受信する AP BAPI を処理し、Microsoft Dynamics CRM Account Entity に対する「作成」、「取得」、「更新」、「削除」の操作にマップ
ユーザー定義の MQ、ファイル、または HTTP の入力メッセージを処理し、Microsoft Dynamics CRM Account Entity に対する「作成」、「取得」、「更新」、および「削除」の操作にマップ
「Microsoft Dynamics CRM Account Entity 出力: 動的トランスポート入力」 パターン
「Microsoft Dynamics CRM Account Entity 出力: 静的 SAP 入力」 パターン
94
BPMとの連携
95
BPMとの連携
IIBとIBM Business Process Manager (BPM) と連携
BPMからIIBへのWebサービス呼び出しの連携開発が可能
BPMからIIBの統合サービス(SOAP/HTTPのWebサービス)を呼び出す連携
BPMの開発ツールProcess DesignerとIIBのツールキット間で、開発構成物の交換が可能
Process DesignerとIIBツールキット間で構成物を交換するときには、BPMのエクスポート・ファイル(.twx)を使用
Webサービス呼び出しに制約があるBPMとの連携開発が容易
ProcessDesigner
IIBツールキット
BPM
IIB
Process Server
IIB
開発 ランタイム
.twx
.twx1. Webサービスの入力、出力パラメータ定義をエクスポート
4. プロセスをデプロイ
5. WebサービスSOAP/HTTP呼び出し3. Webサービスの実装(オペ
レーション名やエンドポイント情報)定義をエクスポート
2. フロー(統合サービス)をデプロイ
96
IBM Business Process Manager
ビジネス・プロセスの管理、可視化を行って、業務の改善を実施していくためのIT基盤
BPMNベースの人のタスクのワークフロー開発に向いたLombardiの機能と、BPELベースのシステム間の複雑な連携に向いたWebSphere Process Serverの機能を含むバージョンがある
開発ツールProcess DesignerIntegration Designer (Advancedのみ)
開発物レポジトリーProcess Center開発物のバージョン管理(スナップショットなど)作成物のテストが可能
実行環境Process Server
IBM BPM
Versioned Assets
Process Center
Process Designer
Process Server
BPM Repository
BPM Standard
BPM Advanced
BPMNのフロー
BPELのフロー
97
BPM開発ツール Process Designer
Process DesignerBPMNベースでプロセス定義を開発するツール プロセス定義
ヒューマン・タスクのアクティビティ
使用するビジネス・オブジェクトやUIの定義を含む
システム・タスクのアクティビティ
Webサービスを呼び出す統合サービスなどを含む
TOOLKIT
プロセス作成に使用する部品箱
ProcessApp
プロセス定義を含むプロジェクト
システム・タスクのレーン
ヒューマン・タスクのレーン
98
BPMの開発の用語
Webサービスなど外部システムと統合するためのサービス定義
システムタスクのアクティビティーで使用される
統合サービス
BPMNベースで定義するビジネスプロセスの定義
複数のレーン上のアクティビティのフローとして定義される
プロセス
BPMの構成物をやり取りするファイル (.twx)
IIBとの連携では、TOOLKITのスナップショットをエクスポート、インポートするのに使用する
BPMエクスポートファイル
Process AppやTOOLKITをある時点でキャプチャーしたもの
バージョン管理の単位
スナップショット
複数のProcess Appから共用される部品をまとめた部品箱(ライブラリー)
Process Appと同様に、Process Centerに格納され、バージョン管理される
Process AppからどのTOOLKITのどのバージョンを使用するかの依存関係を関連
づけて使用される
TOOLKIT
プロセスのアクティビティ間を流れるデータの型の定義体
XSDの複合タイプ定義に相当
ビジネス・オブジェクト
1つ以上のプロセスや、その他の構成物(UI定義、ビジネス・オブジェクトなど)を含むコンテナー (プロジェクトに相当する)
Process Centerに格納され、バージョン管理される
Process App
99
BPMとの連携
BPMとIIBの連携を開発するときの方法
BPMからIIBに統合を開始する
トップダウンのみ可能
制約事項
IIBに新規の統合サービスを作成することのみが可能、既存の統合サービスにオペレーションを
追加することは不可
BPMからエクスポートするときのBPMの統合サービスは、 TOOLKITとしてエクスポートし、入力、出力パラメータだけを設定する(他の設定を加えるとIIBにインポートできない)
WSDLへの制約
document, literal, wrappedタイプでなければいけない
スキーマには、ターゲット名前空間と接頭部が指定されていること
スキーマでは「要素の接頭部」が「qualified」に設定されていること
インターフェースごとに 一つのoperationの使用を推奨
XMLスキーマのサブセットがサポートされている(すべてのタイプがサポートされているわけではない)
IIBで実装したいBPMの統合サービスとビジネス・オブジェクトは、それだけを収めた専用のTOOLKITに含める
UI部品などを含むTOOLKITとは分離して作成し、IIBとの交換用のTOOLKITにする
IIBの統合サービス:SOAP Webサービスのプロバイダーを専用に実装するプロジェクトWMB V8.0.0.1より導入
100
BPMとの連携
BPMからの統合の開始
Process Designer上の操作
1. IIBで実装したい統合サービスを格納するTOOLKITを作成
2. TOOLKIT内にビジネス・オブジェクトを定義
3. TOOLKIT内に統合サービスを定義
– 統合サービスの入力、出力となるビジネス・オブジェクトだけを指定
4. TOOLKITのスナップショットをエクスポート.twxファイルとして作成
IIB開発者にエクスポートファイルを渡す
IIBツールキット上の操作
i. 「統合サービスの作成から開始」から新しい統合サービスを作成
– 統合サービス名を指定
– インポートする.twxファイルを指定
– 実装するBPM統合サービスを選択
ii. サービスを実装し、デプロイ
iii. 統合サービスをエクスポート(.twxファイルの更新版ができる)
BPM開発者にエクスポートファイルを渡す
Process Designerの操作
5. .twxファイルをインポート (新しいスナップショットが作成される)
6. Precess AppからTOOLKITへの依存関係を設定し、
プロセスを実装
ProcessDesigner
IIBツールキット
.twx
.twx
ProcessDesigner
IIBツールキット
.twx
101
Process Designerの操作1
TOOLKITの作成
Process DesignerのProcess Center画面からTOOLKITを新規に作成
TOOLKITの名前と接頭辞を指定
TOOLKITが作成される
Designerで開く
新規作成
102
Process Designerの操作2
TOOLKITにパラメータのビジネス・オブジェクトを作成
ビジネス・オブジェクトの新規作成
ビジネス・オブジェクトの名前を指定
ビジネス・オブジェクトのパラメータ(フィールド)を設定して、完成
103
Process Designerの操作3
TOOLKITに統合サービスを作成
変数の入力と出力だけを設定
統合サービスの新規作成
統合サービスの名前を指定
入力、出力の変数を指定
ビジネス・オブジェクトを選択
104
Process Designerの操作4
TOOLKITのスナップショットを作成して、エクスポート
ブラウザが起動して、ファイルのダウンロードからファイルを保存
スナップショットの作成
スナップショットの名前を指定
IBM BPMエクスポートを選択
105
IIBツールキットの操作ⅰ
エクスポートされたファイルを使用して統合サービスを作成
名前を指定
統合サービスを新規に作成
BPM統合サービスから作成を選択
.twxファイルを選択
106
IIBツールキットの操作ⅱ
統合サービスを実装して、デプロイ
フローを実装する
サービスタブを表示
107
IIBツールキットの操作ⅲ
統合サービスをエスポート
BPMエクスポートを選択
ホスト名とポートを指定
108
Process Designerの操作5
IIBツールキットでエクスポートしたファイルをProcess Designerでインポート
インポート
新しいスナップショットとしてインポートされる
インポートするファイルを指定
109
インポートしたBPMの統合サービス
インポートしたスナップショットのTOOLKITの統合サービス
統合サービスにWebサービスの統合コンポーネントが、IIBのサービスを呼び出すように構成され
ている
Webサービスの統合コンポーネントが構成されて、IIBのWebサービスのエンドポイントが設定されている
エクスポート時のスナップショットではコンポーネントの設定は空
110
Process Designerの操作6
TOOLKITをProcessAppの依存関係に追加して、プロセスから使用
プロセスからTOOLKITの依存関係追加で、IIBのサービスを含むTOOLKITを追加する
追加された統合サービスをドラッグ & ドロップしてシステムタスクとして使用してプロセスを作成
111
BPMとIIBのデータタイプのマッピング
BPMとIIBのデータタイプのマップ
BPMでサポートされているデータタイプと互換性のあるタイプを使用
タイプマップ表
* BPMでは、DateもTimeも内部的にはdatetimeとして取り扱われている
*
*
+ BPMで定義されている型
+
+
+
++
112
BPMとの連携
BPMの統合サービスの変数定義時の注意点BPMの統合サービスの直接の入力、出力のパラメータのタイプにDate、Timeを使用しない
BPMのProcess DesignerからIIBへの開発連携
メリットBPMで使用できるデータタイプでインターフェースが作成されるので、連携が容易
–タイプマッピング可能なデータのみが使用される
デメリットIIBで作成される統合サービスは、1つのオペレーションだけを持つサービスとなってしまう。複数の操作(オペレーション)を提供するまとまったサービスをIIBで実装したい場合は、この開発連携方法は向かない。
–これを実装するには、BPMで使用できるタイプのみのWSDLで定義されたWebサービスをIIBで実装し、Process Designerの従来の方法でWebサービスをディスカバーして開発する。(ボトムアップ開発)
BPMの統合サービスの入力、出力につけたパラメータのタイプをDateとTimeにすると、BPMからのWebサービス呼び出し時に、これらのタイプはxsd:datetimeとなる。一方、IIBにインポートしたWebサービスのパラメータのタイプはxsd:dateとxsd:timeにため、タイプが一致せずにエラーと
なる。
ビジネス・オブジェクトの中のパラメータでは、IIB側もxsd:datetimeになるので、Date、Timeを使用可能
GA版での挙動
113
サービス・ディスカバリー
114
サービス・ディスカバリー
DBやMQに接続して構成情報を取得し、DBやMQへの操作のサービス定義を作成するサービス・エディターを提供
サービス定義の目的DBやMQへの操作をサービスとして捉えて、論理的なインターフェースや物理的な接続情報を共通の形式(WSDL)で記述して、開発者間で交換したり、カタログ化できるようにする
DBサービスIIBとDBテーブル間で行われる操作をサービスとして捉えてそのインターフェースを定義したものテーブルに格納されているビジネス・オブジェクトへのCRUD操作をサービスのオペレーションとして定義これまでComputeノードで直接SQL文を記述していたものを、オペレーションを実装したESQLのプロシージャー呼び出しで実装が可能
MQサービスMQのキュー経由で実装されているサービスのインターフェースを定義したもの要求や応答のメッセージ定義や要求や応答のキュー名、キューマネージャー名のエンドポイント情報を含むこのサービスを使用するときにMQInputやMQOutputのノードが作成される
統合レジストリー作成したMQサービスをブローカーの統合レジストリーに登録して、他の開発者がMQサービス定義を自分のワークスペースにインポートして利用が可能
DB
サービスエディター
WSDL
テーブル情報の取得
キュー情報の取得
WSDL
MQサービス DBサービスQMgr
DBやMQへの操作をサービスとして定義
統合レジストリー
登録
115
サービス・ディスカバリー
DBサービスとMQのサービスの詳細
DBサービス
DBのテーブルに対するSelect、Insert、Update、Deleteを実行するオペレーションのサービス定義をWSDLとして作成可能
DBのオペレーションの入出力パラメータのデータ型をXSDとして生成
DBサービスの内容は、.serviceファイルに保存され、 DBサービス・エディターを用いてディスカバーを繰り返
し行い、サービス定義を更新することが可能
作成されたサービス定義をComputeノードに、ドラッグ&ドロップして、ESQLからサービス呼び出しを実装
IIB V9 では、DB2のみサポート
MQサービス
MQのキューに接続するサービス定義をWSDLとして作成可能
–このWSDLの形式は、サポートパックMA93のIBM MQ Service specificationに準拠
MQサービスエディターでサービス定義を作成するときに、メッセージの形式を指定すると、その入出力パラメータのXSDファイルを生成
MQサービスの内容は、.serviceファイルに保存され、 MQサービス・エディターを用いてディスカバーを繰り
返し行い、サービス定義を更新することが可能
このサービス定義をフローエディターにドラッグ&ドロップして、MQメッセージの一方向または要求応答のリクエストを行うフロー、MQメッセージの一方向または要求応答のサービスを実装するフローを作成
–リクエストでは、要求を送信するMQOutputや応答受信のMQGetノードなどが配置される
–実装では、要求を受信するMQInputノード、応答送信のMQOutputノードなどが配置される
116
DBサービスのディスカバリー手順
データベース・サービスを新規に作成
「ファイル」→「新規」→「データベース・サービス」
サービスを作成するライブラリー名とサービス名を指定
117
DBサービスのディスカバリー手順
データベース・サービス エディターで、データベース定義、リソースを選択
既存のデータベース定義を選択するか、ここで新規に作成
テーブルを1つ選択
(複数テーブルは選択できない)
サービス操作の定義へ進む
118
DBサービスのディスカバリー手順
サービスの操作を追加
DB操作をサービスのオペレーション化するステップ
出力列を選択する
操作タイプと操作名を指定
条件タブで、検索条件を指定する
SQLが表示される
119
DBサービスのディスカバリー手順
インターフェースの内容を確認して、保存
作成されたDBサービス
レスポンスのデータタイプ
ここで、サービス定義を保存
120
DBサービスの使用
DBサービスは、フローのComputeノードから使用
作成されたDBサービスをComputeノードにドラッグ&ドロップ
使用するオペレーションを選択
121
DBサービスの使用
生成されたDatabaseService.esqlComputeノードのESQLで使用するプロシージャーが定義されている
retrieveCustomerのESQLプロシージャー定義
122
DBサービスの使用
Computeノード内のDBサービスの使用例(開発者がコーディングする)ComputeノードのESQLから生成されたサービスのオペレーションを呼び出して使用
作成されたDBサービスの呼び出し
DBサービスの戻り用の変数定義
出力ツリーへのマップ
123
MQサービスの作成手順
MQサービスの作成
「ファイル」→「新規」→「MQサービス」
サービスを作成するライブラリー名とサービス名を指定
124
MQサービスの作成手順
キューマネージャーに接続して、キューを選択
要求・応答タイプか一方向タイプかを選択
キューマネージャーへの接続パラメータを指定して、接続のテスト
キューを選択
125
MQサービスの作成手順
MQヘッダーの値、メッセージのタイプを指定
すでに定義してあるタイプを選択
MQヘッダーの値を指定
メッセージの定義のタイプを選択
確認して、保存
メッセージのタイプを選択
126
MQサービスの使用
作成されたMQサービスをフローエディターのドラッグ&ドロップする
MQサービスをドラッグ&ドロップする
サービスの実装か呼び出しを選択する
呼び出しの場合、MQヘッダーノードとMQ Outputノードが作られる
設定されるプロパティー:MQOutput-キュー・マネージャー名-キュー名
実装の場合、MQ Inputノードが作られる
設定されるプロパティー:-入力キュー名-メッセージ・ドメイン
MQヘッダー構成で指定したMQMDの設定
127
MQサービスの公開
MQサービスをブローカーの統合レジストリーに公開
MQのサービスを他の開発者が利用できるようにする
MQサービスが登録される
公開するブローカーを選択
統合レジストリー・ビューが表示される
128
公開されたMQサービスのインポート
ブローカーに公開されているMQサービスをインポートする
他の開発者が、MQサービスをブローカーからインポートして使用できる
右クリックで、Importを選択
MQサービスと関連したスキーマがインポートされる
ライブラリーを選択
129
XMLデータ分析
130
XMLデータ分析
大規模で複雑なデータ・モデルから簡潔なモデルを作成するための機能
実データで使用されているフィールドを元に、必要なフィールドを選択してモデル化する
業界標準モデルから、社内標準モデルへ抜粋するケースなど
XMLデータを分析しモデル化するための機能を提供
既存XMLデータから、より扱いやすいスキーマまたはリレーショナル・モデルを生成することが可能
XMLデータ構造の解析ツールを提供
複数XMLデータを解析しデータ分析モデルを生成
XMLデータの構造や、エレメントの出現頻度などを把握することができる
エメント名によるフィルタリングが可能
解析ツールにより生成されたモデルから、新規に作成するモデル(ターゲット・モデル)を定義ドラッグ & ドロップで構造を定義
XMLデータをターゲット・モデルの形式にマッピングするフローを生成可能
ターゲット・モデルからマッピング・ノードを含むフローやスキーマをライブラリに生成
データ分析パースペクティブを新規に提供
XMLデータを分析、フィルターするためのビューやツールを提供
モデルを生成するためのエディターを提供
131
XMLデータ分析 利用例
背景
HL7 v3などの業界標準のドキュメント・スキーマは、さまざまなドキュメント形式に
対応できるよう柔軟性を持って設計されている
しかし、それらの柔軟性と引き換えに、構造が非常に複雑
実際のデータで必要となる部分は、一部のフィールドのみであるので、軽いモデルで扱いたい
診療ドキュメントの実データ(XMLデータ)の理解のための解析
どのフィールドが使用されているか、目的の情報はどのフィールドにあるか?
Clinical Document Architecture (CDA)は再帰的な構造があるため、
スキーマからの解読は大変
解析をサポートするツールを用いて実データを解析
目的の情報を抽出したターゲット・モデルの作成
必要な診療情報を識別して、抜き出すことが目的
一般的には、診療データの大部分は不要なもの
ターゲット・モデル作成をサポートするツールを使用ターゲットモデルのXMLスキーマを生成
データをターゲットモデルの形式に変換するフローを生成
XMLファイル
分析モデル
データ分析
ターゲット・モデル作成
ターゲット・モデル
132
XMLデータ分析
ブローカー・データ分析パースペクティブ
XMLデータを分析、フィルターするためのモデル、ビュー、ツールを提供
アプリケーション・ビュー
データ分析モデル・ビュー
アプリケーション・ビュー
データ分析モデル・ビュー
データ分析モデルのプロパティビュー
データ分析モデルのプロパティビュー
データ分析プロジェクト・ビューデータ分析プロジェクト・ビュー
データ・フィルター・ビューデータ・フィルター・ビュー
データ・パス・ビューデータ・パス・ビュー
サンプル文書ビューサンプル文書ビュー
133
XMLデータ分析
XMLデータの分析から変換ツール作成までの流れ
①データ分析プロジェクトの作成
既存スキーマファイルを指定
②既存XMLデータからデータ分析モデルを生成
データ分析モデルは、XMLデータに含まれるエレメントから生成される
③データ分析モデルからエレメントを精査
④新規に作成するモデル(ターゲット・モデル)を作成・編集
リレーショナル・モデルの生成も可能
⑤ターゲット・モデルからデータ分析ツールを生成データ分析ツールは入力XMLをターゲットモデルに変換するフローを含むライブラリー
XMLファイル データ分析モデル エレメントの精査 ターゲット・モデル データ分析ツール
①
② ③ ④ ⑤
スキーマ・ファイル
ターゲット・モデルのスキーマ
134
XMLデータ分析
①データ・分析プロジェクトの作成
データ分析プロジェクトの作成「ファイル」→「新規」→「データ分析プロジェクト」
プロジェクト名を指定
「参照」→スキーマ・ファイルを指定
データー分析プロファイルの作成分析対象XMLデータのスキーマ・ファイルを指定
サンプル・データ分析プロファイル(サンプル・スキーマ・ファイル)を提供
135
XMLデータ分析
.dapファイルが作成され、データ分析プロジェクトに関連付けられる
136
XMLデータ分析
②既存XMLデータからデータ分析モデルを生成
分析対象のXMLデータを指定
XMLが格納されているディレクトリを指定
ディレクトリ中のXMLが分析の対象となる
ディレクトリを指定
分析の要約が表示される
137
XMLデータ分析
③データ分析モデルからエレメントを精査
データ分析モデル・ビューに、分析したXMLデータから導出されたモデルが表示される
分析した文書インスタンスに含まれるエレメントが表示される
分析した文書インスタンスに含まれるエレメントが表示される
サンプル文書ビューに選択したエレメントがXMLデータのどの部分に該当するか
表示
サンプル文書ビューに選択したエレメントがXMLデータのどの部分に該当するか
表示
サンプル文書ビューのエレメントをダブル・クリックすると、分析したXMLデータの
構造に該当する箇所が表示される
サンプル文書ビューのエレメントをダブル・クリックすると、分析したXMLデータの
構造に該当する箇所が表示される
138
XMLデータ分析
エレメントのフィルタリング
データ・フィルタービューにて、
エレメント名を入力
データ・フィルタービューにて、
エレメント名を入力
フィルタリング結果が表示されるフィルタリング結果が表示される
データ・パス・ビューにフィルタリングされたエレメントが表示される
データ・パス・ビューにフィルタリングされたエレメントが表示される
139
XMLデータ分析
エレメントのハイライト
フォーカスしたエレメントに対する各エレメントの出現の割合が表示される
フォーカスしたエレメントに対する各エレメントの出現の割合が表示される
右クリック→「すべての共存エレメントを強調表示を選択」
140
XMLデータ分析
エレメントのハイライト
サンプル文書を基準にしての強調表示や、時刻を基準にしての強調表示も可能
サンプル文書を基準にしての強調表示や、時刻を基準にしての強調表示も可能
141
XMLデータ分析
④ターゲットモデルの作成、編集
「データ分析プロジェクト・ビュー」→「新規ターゲット・モデルの作成」をクリック
ターゲット・モデルのファイル名を入力
ルート・オブジェクト名とターゲット・ネームスペースを入力
142
XMLデータ分析
ターゲット・モデルの作成データ分析ビュー/モデルビュー、フィルタービューからドラッグアンドドロップ
ターゲット・モデルを編集ターゲット・モデルを編集
143
XMLデータ分析
⑤ターゲット・モデルからデータ分析ツールを生成ターゲット・モデル → 「生成」をクリック
144
XMLデータ分析
データ分析ツール
入力データをターゲットモデルに変換するためのライブラリが生成される
メイン・フロー
サンプルに含まれるメイン・フロー例(MQInput –サブフロー – MQOutput)
サンプルに含まれるメイン・フロー例(MQInput –サブフロー – MQOutput)
ライブラリにサブフローやスキーマが生成される
ライブラリにサブフローやスキーマが生成される
145
XMLデータ分析
生成されたデータ変換用マップ
データ分析モデルからターゲット・スキーマへの変換データ分析モデルからターゲット・スキーマへの変換
146
XMLデータ分析
(参考)サンプルの提供書籍データのXMLファイルとスキーマを提供
「ヘルプ」→「ようこそ」→「サンプル」→「メッセージ変換」→「DataAnalytics」
147
その他の機能強化
148
WAS管理コンソールからの管理
WASの管理コンソールから、IIBの統合ノード・リソースを管理可能
統合ノードや統合サーバーの状況の表示だけでなく、開始、停止などの操作が可能
可能な管理操作既存の統合ノードへの接続 、接続のテスト
統合サーバーおよびそのプロパティーと状況 (実行中または停止中) の表示 、開始、停止
統合サービスの状況、プロパティーの表示 、開始、停止
統合サーバー毎にデプロイされている–アプリケーションおよびそのプロパティーと状況の表示 、開始、停止
–統合サービスおよびそのプロパティーと状況の表示 、開始、停止
–ライブラリーおよびそのプロパティーの表示
–メッセージ・フローおよびその状況の表示 、開始、停止
サポート対象のWASWindows, Linux, UNIXV7.0 (7.0.0.9 – 7.0.0.29 and future fix packs), V8, V8.5
Express、Network Deploymentを含む
z/OSV7.0 (7.0.0.9 – 7.0.0.27 and future fix packs), V8, V8.5
IIB V9の用語統合ノード: V8までのブローカー統合サーバー: V8までの実行グループ統合サービス: V8のサービス
(Webサービス専用のフローやそのプロジェクト)
149
WAS管理コンソールからの管理
必要な構成
WASにIBM Integration フィーチャーを導入
InstallationManagerを使用して、以下のレポジトリーファイルからフィーチャーを導入
–wmb.admin.repository.zip
–wmb.admin.repository_update.zip (更新用のレポジトリーで、GA版には含まれていない)
WASのプロファイルをmanageprofilesコマンドを使用して拡張
デフォルト・プロファイルの例
デプロイメント・マネージャー・プロファイルの例
IIBのWebユーザー・インターフェース・サーバーを構成
新規のブローカーを作成すると、デフォルト4414のポートで構成されている
WASの管理コンソールから、IIBの統合ノードに接続
統合ノードのエントリーを新規作成して、統合ノードのリストに追加
manageprofiles -augment -profileName AppSrv01 -templatePath "C:¥IBM¥WebSphere¥AppServer¥profileTemplates¥default.broker"
manageprofiles -augment -profileName DMgr01-templatePath "C:¥IBM¥WebSphere¥AppServer¥profileTemplates¥dmgr.broker"
150
WAS管理コンソールからの管理
WAS管理コンソールからの管理 (統合ノード、統合サーバー、統合サービス)
初めに、統合ノードを新規に追加
開始、停止が可能
151
WAS管理コンソールからの管理
統合サーバー毎のアプリケーションやアプリケーション内のフローの管理
アプリケーションのプロパティ画面
統合サーバーのプロパティ画面
152
GUIマッピングの機能強化
マップからデータベース・ルーチン変換を使用して、ストアード・プロシージャーの呼び出しが可能
マップの入力データをもとにプロシージャーを呼び出して、結果を出力データにマップ可能
ネストされたマップにおいて、–ソースツリーからプロシージャーのIN, INOUTパラメータにマップ
–プロシージャーのOUT, INOUT, ResultSet, 戻り値から、デスティネーションツリーにマップ
呼び出すプロシージャーは、マップに変換追加時にデータベース定義から選択
データベース定義は、ルーチンを含めて事前に作成しておく
V9では、DB2のみをサポート
Group変換が追加された
複数の入力レコードを指定したキーでグルーピングして、構造を変更
153
GUIマッピングの機能強化
マップからストアード・プロシージャー呼び出しの設定
マップ・エディターで、データベース・ルーチンの呼び出しをクリック
CREATE PROCEDURE APPL01.ADD_CUSTOMER (IN ID INTEGER,IN NAME VARCHAR(20),IN CTYPE CHAR(4),IN ADDRESS VARCHAR(50),OUT LASTUPDT TIMESTAMP)
LANGUAGE SQL
BEGIN
SET ADD_CUSTOMER.LASTUPDT = (select LASTUPDT from new table (insert into APPL01.CUSTOMER (ID, NAME, CTYPE, ADDRESS, LASTUPDT)values (ADD_CUSTOMER.ID, ADD_CUSTOMER.NAME, ADD_CUSTOMER.CTYPE,
ADD_CUSTOMER.ADDRESS, CURRENT TIMESTAMP))
);
END
ストアードプロシージャー
154
GUIマッピングの機能強化
ストアード・プロシージャーを選択
プロシージャーを選択
選択したプロシージャーのパラメータを確認
155
GUIマッピングの機能強化
プロシージャーの入力パラメータへのマップと出力からのマップを設定
データベース・ルーチン変換が追加される
呼び出しと戻りの接続を追加する
呼び出しのマップ IN, INOUTパラメータへデータをマップ
戻りのマップ INOUT, OUTパラメータからデータをマップ
156
GUIマッピングの機能強化
Result Setを戻すプロシージャーの場合
CREATE OR REPLACE PROCEDURE APPL01.GET_CUSTOMER (IN CTYPE CHAR(4))
LANGUAGE SQLDYNAMIC RESULT SETS 1
BEGIN
DECLARE cursor1 CURSOR WITH RETURN FOR select ID, NAME, CTYPE, ADDRESS, LASTUPDTfrom APPL01.CUSTOMERwhere CTYPE = GET_CUSTOMER.CTYPEorder by ID;
open cursor1;
END
ストアードプロシージャー
Result Setあり
157
GUIマッピングの機能強化
Result Setを戻すプロシージャーの場合の設定
ResultSetにふくまれる列を選択
プロシージャーを選択
戻されるResultSet
158
GUIマッピングの機能強化
Result Setを戻すプロシージャーの戻りマップ
ResultSet
戻りのマップ
For eachのネストされたマップ
159
GUIマッピングの機能強化
Group変換
複数の入力レコードを、指定したキーでグルーピングすることが可能
itemをitemTypeでグルーピングして構造を変えたい
Group変換を使用
160
GUIマッピングの機能強化
Group変換の設定
itemのitemTypeをキーにしてグルーピング
itemとitemType間をGroup変換
itemとitemTypeの子の要素のマッピング
Group変換のプロパティー設定
161
Web関連機能の拡張
国際化ドメイン名(IDN:Internationalized Domain Name)のサポート
非英語ホスト名の利用をサポート
SSLクライアント認証鍵別名(Key alias)の指定
SSLクライアント認証時に使用する証明書を指定できる
複数のSSLサーバーと接続するためキーストア内に複数の証明書がある場合に有効
SOAPRequest / HTTPRequest ノードの「SSLクライアント認証識別名」に指定
LocalEnvironment で動的に設定も可
SOAPRequestノードの場合
HTTPRequestノードの場合
LocalEnvironment.Destination.SOAP.Request.Transport.HTTP.KeyAlias
LocalEnvironment.Destination.HTTP.KeyAlias
162
Web関連機能の拡張
HTTPリスナーの Certificate Revocation Lists (CRLs) サポート
HTTPリスナーがSSLサーバーとして証明書を受け取った際にCRLチェックが可能に
V8では、フローがSSLクライアントとして証明書を受け取った際のCRLチェックは可能
設定ブローカー・レベルのHTTPリスナーの場合
実行グループ・レベルのHTTPリスナーの場合
mqsichangeproperties IB9NODE -b httplistener -o HTTPSConnector -n crlFile -v file_path
mqsichangeproperties IB9NODE -e exgroup1 -n crlFile -v file_path
163
Web関連機能の拡張
複数 Kerberos Service Principals のサポート
IIBでは、ブローカーをケルベロス認証のクライアントとして構成し、メッセージの完全性、機密性、
認証を保証できる前提として、Key Distribution Center(KDC)およびKerberos secured serviceが稼動するサーバーへ
アクセスできる必要がある
V8まではブローカーに1つのKerberos Service Principals のみ定義
V9では、ブローカーもしくは実行グループ毎にケルベロス構成ファイルを指定可能
設定
ブローカーの場合
実行グループの場合
mqsichangeproperties Broker -o BrokerRegistry -n kerberosConfigFile -v kerberosConfigLocation
mqsichangeproperties Broker -e EGName -o ComIbmJVMManager-n kerberosConfigFile -v kerberosConfigLocation
164
ODBC設定の検証機能
統合ノード(ブローカー)開始時に、ODBC環境が正しく設定されていることを確認
対象OS: Linux、UNIX
統合ノード(ブローカー)をmqsistartで起動したときに、mqsicvpコマンドを自動的に実行
mqsicvpコマンドが、ODBC環境設定を確認
ODBC環境設定の確認項目
ODBCINI環境変数が設定されている場合、以下の問題状況を検出して、syslogに警告メッ
セージを出力ODBCINI 環境変数が指すファイルが存在しないか、そのファイルに対する読み取りまたは書き込み権限
がブローカーにない場合
ODBCSYSINI が設定されていない場合
ODBCSYSINI が設定されているがこの変数が指すディレクトリーに odbcinst.ini という名前のファイルが含まれていないか、そのファイルに対する読み取りまたは書き込み権限がブローカーにない場合
IE02_PATH 環境変数が設定されていない場合
ODBC 環境検査が正常に完了すると、コマンドは、mqsisetdbparms コマンドを使用してブローカーに関連付けられた、odbc.ini ファイルにリストされたすべてのデータ・ソースに接続を確認
165
集約ノードの機能強化
AggregationControlノードのタイムアウト設定を、これまでの秒単位から、0.1秒単位
で設定することが可能
1 秒未満のタイムアウト間隔を設定する場合
ノード専用のAggregation構成可能サービスを構成し、以下のプロパティーの設定を推奨
queuePrefix -集約ノードで使用するキュー接頭辞を指定する
–SYSTEM.BROKER.AGGR.Prefix.CONTROL などの5つのストレージ・キューを作成する
timeoutThreads -有効期限が切れたメッセージを処理するスレッド数 2以上に設定
コマンド例集約名: AGG01
キュー接頭辞: AGG01
タイムアウト: 0.5
スレッド数: 2
mqsicreateconfigurableservice IB9NODE -c Aggregation -o AGG01 -n queuePrefix,timeoutSeconds,timeoutThreads -v "AGG01","0.5","2"
166
CICSノードのトランザクション・サポート
CICSRequest ノードでトランザクション・モードのサポート
CICSRequest ノードで1フェーズ・コミットのローカル・トランザクション管理が可能
CICSに対する複数のリクエストを同じトランザクション下で制御(コミット or ロールバック)可能
V8 まではトランザクション・モードの指定なし
ノード・プロパティの「拡張」タブ⇒「トランザクション・モード」プロパティで指定「自動」(デフォルト) ⇒ Input ノードのトランザクション・モードに依存
「はい」 ⇒ トランザクション管理あり
「いいえ」 ⇒ トランザクション管理なし
–V8からマイグレーションした場合は「いいえ」
CICS TS / z/OS
CICSトランザクション
167
CICSノードのアクティビティ・ログ・サポート
CICS アクティビティ・ログ
以下のようなCICSとの処理状況をアクティビティ・ログとして取得可能
アクティビティ・ログ
V8 から追加された、メッセージ・フローの処理状況や外部リソースへのアクセス状況が簡潔にわかるロギングの機能
IB エクスプローラーからログの表示、CSV ファイルへの書き出しが可能
CICS プログラムが正常に呼び出された
CICS プログラムの呼び出しが失敗した
メッセージ内のセキュリティIDがCICS にプロパゲートされた
CICS プログラム呼び出しでセキュリティ・エラーが起きた
CICS サーバーへの接続で通信エラーが発生した
フロー処理中に新しいトランザクションが開始された
CICS リソース処理がコミットされた
CICS リソース処理がロールバックされた
CICS がアベンドした
CICS 呼び出しがタイムアウトした
CICS サーバーへの接続でSSLエラーが発生した
168
実行グループのユーザー指定(z/OS)
実行グループに対し、ユーザーIDを指定可能
ブローカーの起動ユーザーとは異なるユーザー(権限)でリソースにアクセスできる
デフォルトではブローカーの起動ユーザーが実行グループにも適用される
指定するユーザーIDはブローカー起動ユーザーと同じプライマリー・グループに所属している必要
がある(共通のリソースにもアクセスするため)
ブローカー用のファイル・システムやデータセットに対してもブローカー起動ユーザーと同等の権限を持つ必要がある