...

Oracle BPM 11g Complex Gateway アプリケーション作成ハンズオン

by user

on
Category: Documents
7

views

Report

Comments

Transcript

Oracle BPM 11g Complex Gateway アプリケーション作成ハンズオン
<Insert Picture Here>
Oracle BPM 11g Complex Gateway
アプリケーション作成ハンズオン
日本オラクル株式会社
Agenda
• ハンズオンの目的
• 環境準備
• Complex Gateway アプリケーションの作成
(以下のプロジェクトを作成する)
ComplexGateway
複合ゲートウェイをパラレルゲートウェイのマージ・ゲートウェイ
として利用して、すべてのトークンが到着しない場合でもインス
タンスを続行できる条件を設定
• 補足情報
• リファレンス
Copyright© 2012, Oracle. All rights reserved.
2
ハンズオンの目的
• Oracle BPMアプリケーション開発ライフサイクルの理解
• 複合ゲートウェイをパラレルゲートウェイのマージ・ゲートウェイ
として利用して、すべてのトークンが到着しない場合でもインス
タンスを続行する方法を理解
Copyright© 2012, Oracle. All rights reserved.
3
環境準備 (1/2)
•
•
•
•
WebLogic Server 10.3.5 のインストール
SOA Suite 11gPS4 Feature Pack のインストール
BPM 11gPS4 Feature Pack のインストール
Oracle JDeveloper 11gR1 のインストール
Copyright© 2012, Oracle. All rights reserved.
4
環境準備 (2/2)
• Demo Community Seed Application の実行
右側のzipファイルをローカルに解凍してインストール
インストール方法:
http://otn.oracle.co.jp/obe/fmw/obpm/11g/r1/install/installing_obpm11g.
htm#t4
Copyright© 2012, Oracle. All rights reserved.
5
ComplexGateway アプリケーションの作成
ImmigrationClearanceプロセス
テスト
モデリ
ング
実装と
デプロイ
Copyright© 2012, Oracle. All rights reserved.
6
プロセスのモデリング
作成するプロセスの全体像
入国審査をおこなうサンプル
です。
3種類のチェックが、それぞれ
違う部門で平行で実施されま
す。
3種類のチェックのうち、2つの
チェックが「承認」されれば、残
りのチェックが取り消しされ、
処理が完了します。
Copyright© 2012, Oracle. All rights reserved.
7
プロセスのモデリング (1/18)
• Oracle JDeveloper を開き、「新規アプリケーション」をクリック
2
1
Copyright© 2012, Oracle. All rights reserved.
8
プロセスのモデリング (2/18)
• アプリケーション名を入力し、「BPMアプリケーション」を選択し
て「次へ」をクリック
1
アプリケーション名:
ComplexGateway
2
Copyright© 2012, Oracle. All rights reserved.
9
プロセスのモデリング (3/18)
• プロジェクト名を入力して「次へ」をクリック
プロジェクト名:
ComplexGateway
Copyright© 2012, Oracle. All rights reserved.
10
プロセスのモデリング (4/18)
• 「次のものを使用するコンポジット BPMN Process」を選択し、
「終了」をクリック
1
2
Copyright© 2012, Oracle. All rights reserved.
11
プロセスのモデリング (5/18)
• BPMNプロセスの名前を入力し、タイプとして「非同期サービス」
を選択して「終了」をクリック
名称:
1
ImmigrationClearance
2
3
Copyright© 2012, Oracle. All rights reserved.
12
プロセスのモデリング (6/18)
• 「End」 イベントを右クリックし、プロパティを開き、「実装タイプ」
を「なし」に変更して「OK」をクリック
1
2
3
Copyright© 2012, Oracle. All rights reserved.
13
プロセスのモデリング (7/18)
• 「Start」 イベントの名前「Start」をダブルクリックし、名前を「Start
Immigration Clearance」に変更
• 「End」 イベントをクリックし、右側にドラッグしてデザイン・パネル
の右側にドロップ
Copyright© 2012, Oracle. All rights reserved.
14
プロセスのモデリング (8/18)
• 「ゲートウェイ > 複合」を選択
• 「Start Immigration Clearance」と「End」イベントの間の
シーケンス・フロー上にドロップ
1
注意:
アクティビティを接続するため
には、 オブジェクトをドロップす
る時に遷移線が 青くなってい
る必要があります。
2
Copyright© 2012, Oracle. All rights reserved.
15
プロセスのモデリング (9/18)
• 名前に「Complete Checks」を設定して、「OK」をクリック
1
2
• 複合ゲートウェイ「Complete Checks」を右クリックし、「ゲートウ
ェイ構成を次のように変更 > パラレルと複合」を選択して、表示さ
れるダイアログで「OK」をクリック
3
4
Copyright© 2012, Oracle. All rights reserved.
16
プロセスのモデリング (10/18)
• 複合ゲートウェイの「InclusiveGateway」スプリット・パラレル・
ゲートウェイを左側へ移動し、名前を「Start Checks」に変更
• 複合ゲートウェイの「Complete Checks」マージ複合ゲートウ
ェイは右側へ移動
Copyright© 2012, Oracle. All rights reserved.
17
プロセスのモデリング (11/18)
• 「対話型 > ユーザー」を選択し、「Start Checks」ゲートウェイと
「Complete Checks」ゲートウェイの間のシーケンス・フロー上
にドロップし、「名前」に「Check Criminal Record」を入力
3
1
4
2
Copyright© 2012, Oracle. All rights reserved.
18
プロセスのモデリング (12/18)
• 「ロールのプロパティ」が表示されるので、「新規」をクリックし、
「Police」ロールを新規追加する
1
4
2
3
Copyright© 2012, Oracle. All rights reserved.
19
プロセスのモデリング (13/18)
• 同様に「対話型 > ユーザー」を選択し、ロール「Police」のレーンの
下の空白にドロップし、表示されるプロパティ・ダイアログで「名前」
に「Check Credit Record」を入力して、「OK」をクリック
1
2
Copyright© 2012, Oracle. All rights reserved.
20
プロセスのモデリング (14/18)
• 「ロールのプロパティ」が表示されるので、「新規」をクリックし、
「CreditAgency」ロールを新規追加する
1
4
2
3
Copyright© 2012, Oracle. All rights reserved.
21
プロセスのモデリング (15/18)
• 同じ方法で、ユーザー・タスク「Check Drivers license」を新規
作成した「DMV」ロール・レーンにドロップ
Copyright© 2012, Oracle. All rights reserved.
22
プロセスのモデリング (16/18)
• 以下の「シーケンス・フロー」を追加
Copyright© 2012, Oracle. All rights reserved.
23
プロセスのモデリング (17/18)
• 「アーティファクト > テキスト注釈」を選択し、以下のメモを追加
メモ内容:
3つのチェックの中に2つ
のチェックさえ完成すれば
処理続行します。
Copyright© 2012, Oracle. All rights reserved.
24
プロセスのモデリング (18/18)
• 「すべて保存」をし、「ComplexGateway」タブと
「composite.xml」タブを閉じる
1
2
Copyright© 2012, Oracle. All rights reserved.
3
25
ComplexGateway アプリケーションの作成
ImmigrationClearanceプロセス
データ・オブジェクトの作成
テスト
モデリ
ング
実装と
デプロイ
各要素の実装
BPMプロセス・ロールの
メンバーのセット
プロセスのデプロイ
Copyright© 2012, Oracle. All rights reserved.
26
データ・オブジェクトの作成 (1/4)
• プロセス・データ・オブジェクトの定義
• passportID
(String型、入力データ)
• CriminalCheckOutcome
(String型、「Check Criminal Record」ユーザー・タスクの出力結果)
• CreditCheckOutcome
(String型、「Check Credit Record」ユーザー・タスクの出力結果)
• DriversLicenseCheckOutcome
(String型、「Check Drivers license」ユーザー・タスクの出力結果)
Copyright© 2012, Oracle. All rights reserved.
27
データ・オブジェクトの作成 (2/4)
• BPMプロジェクト・ナビゲータで、「ImmigrationClearance」プロセ
スを選択し、左下に表示される構造情報の「プロセス・データ・オブ
ジェクト」を右クリックし、「新規」よりデータ・オブジェクトを新規作成
1
2
Copyright© 2012, Oracle. All rights reserved.
28
データ・オブジェクトの作成 (3/4)
• 以下の4つのデータ・オブジェクトを作成
1
1
2
2
1
2
1
2
Copyright© 2012, Oracle. All rights reserved.
29
データ・オブジェクトの作成 (4/4)
• 「すべて保存」をする
1
Copyright© 2012, Oracle. All rights reserved.
30
ComplexGateway アプリケーションの作成
ImmigrationClearanceプロセス
データ・オブジェクトの作成
テスト
モデリ
ング
実装と
デプロイ
各要素の実装
BPMプロセス・ロールの
メンバーのセット
プロセスのデプロイ
Copyright© 2012, Oracle. All rights reserved.
31
各要素の実装
Startイベントの実装 (1/4)
• プロセス・エディタで、「Start Immigration Clearance」イベント
をダブル・クリックし、プロパティを開き、「実装」タブで引数
「passportID」を追加
1
3
2
Copyright© 2012, Oracle. All rights reserved.
4
32
各要素の実装
Startイベントの実装 (2/4)
• 「操作名」に「startImmigrationClearance」を設定し、データ・
アソシエーション・リンクをクリック
1
2
Copyright© 2012, Oracle. All rights reserved.
33
各要素の実装
Startイベントの実装 (3/4)
• 「出力」タブで、左の引数から「passportID」をドラッグし、右側の
プロセスのデータ・オブジェクトの「passportID」にドロップし、マッ
ピングを追加して、「OK」をクリック
Copyright© 2012, Oracle. All rights reserved.
34
各要素の実装
Startイベントの実装 (4/4)
• 「OK」をクリックして、「すべて保存」をし、「Start Immigration
Clearance」イベントの実装が完了
Copyright© 2012, Oracle. All rights reserved.
35
各要素の実装
各ユーザー・タスクの実装 (1/8)
• プロセス・エディタで「Check Criminal Record」のユーザー・タス
クをダブル・クリックし、「プロパティ」を開く
1
• 「実装」タブでヒューマン・タスクの右側のプラス・アイコンをクリック
2
Copyright© 2012, Oracle. All rights reserved.
36
各要素の実装
各ユーザー・タスクの実装 (2/8)
• 「実装」タブでタスクの「名前」、「タイトル」を設定し、緑色のプラス・
アイコンでパラメータと結果ターゲットを追加して「OK」をクリック
1
項目
値
名前
CheckCriminalRecord
タイトル
Check Criminal Record
パラメータ
passportID
結果ターゲット
CriminalCheckOutcome
2
3
4
Copyright© 2012, Oracle. All rights reserved.
37
各要素の実装
各ユーザー・タスクの実装 (3/8)
• 「OK」をクリックし、「Check Criminal Record」ユーザー・タスク
の実装が完了
Copyright© 2012, Oracle. All rights reserved.
38
各要素の実装
各ユーザー・タスクの実装 (3/8)
• プロセス・エディタで「Check Credit Record」のユーザー・タスク
をダブル・クリックし、「プロパティ」を開く
1
• 「実装」タブでヒューマン・タスクの右側のプラス・アイコンをクリック
2
Copyright© 2012, Oracle. All rights reserved.
39
各要素の実装
各ユーザー・タスクの実装 (4/8)
• 「実装」タブでタスクの「名前」、「タイトル」を設定し、緑色のプラス・
アイコンでパラメータと結果ターゲットを追加して「OK」をクリック
1
項目
値
名前
CheckCredit
タイトル
Check Credit
パラメータ
passportID
結果ターゲット
CreditCheckOutcome
2
3
4
Copyright© 2012, Oracle. All rights reserved.
40
各要素の実装
各ユーザー・タスクの実装 (5/8)
• 「OK」をクリックし、「Check Credit Record」ユーザー・タスクの
実装が完了
Copyright© 2012, Oracle. All rights reserved.
41
各要素の実装
各ユーザー・タスクの実装 (6/8)
• プロセス・エディタで「Check Drivers license」のユーザー・タスク
をダブル・クリックし、「プロパティ」を開く
1
• 「実装」タブでヒューマン・タスクの右側のプラス・アイコンをクリック
2
Copyright© 2012, Oracle. All rights reserved.
42
各要素の実装
各ユーザー・タスクの実装 (7/8)
• 「実装」タブでタスクの「名前」、「タイトル」を設定し、緑色のプラス・
アイコンでパラメータと結果ターゲットを追加して「OK」をクリック
1
項目
値
名前
CheckDriverLicense
タイトル
Check Driver License
パラメータ
passportID
結果ターゲット
DriversLicenseCheckOutcome
2
3
4
Copyright© 2012, Oracle. All rights reserved.
43
各要素の実装
各ユーザー・タスクの実装 (8/8)
• 「OK」をクリックし、「Check Drivers license」ユーザー・タスクの
実装が完了
Copyright© 2012, Oracle. All rights reserved.
44
各要素の実装
複合ゲートウェイの実装 (1/3)
• プロセス・エディタで「Complete Checks」のユーザー・タスクを
ダブル・クリックし、「プロパティ」を開く
1
Copyright© 2012, Oracle. All rights reserved.
45
各要素の実装
複合ゲートウェイの実装 (2/3)
• 「実装」タブで評価時にブール値となる条件式を入力し、「保留中
のフローを中止」をチェックして「OK」をクリック
式:
activationCount >=2 and
((CriminalCheckOutcome == “APPROVE” and
CreditCheckOutcome == “APPROVE”) or
(CriminalCheckOutcome == “APPROVE” and
DriversLicenseCheckOutcome == "APPROVE") or
(CreditCheckOutcome == "APPROVE" and
DriversLicenseCheckOutcome == "APPROVE"))
activationCount:
上記の条件を満たす場合、未処理のタスクを取消して
プロセスを完了させるために、「保留中のフローを中
止」をチェックする必要があります。
既に複合ゲートウェイに到着したシーケンス・フロー数を
表す事前定義済みの変数です。
Copyright© 2012, Oracle. All rights reserved.
46
各要素の実装
複合ゲートウェイの実装 (3/3)
• 「すべて保存」をする
Copyright© 2012, Oracle. All rights reserved.
47
ComplexGateway アプリケーションの作成
ImmigrationClearanceプロセス
データ・オブジェクトの作成
テスト
モデリ
ング
実装と
デプロイ
各要素の実装
BPMプロセス・ロールの
メンバーのセット
プロセスのデプロイ
Copyright© 2012, Oracle. All rights reserved.
48
BPMプロセス・ロールのメンバーのセット (1/4)
• BPMプロジェクト・ナビゲータから「組織」をダブル・クリック
• 「組織」タブのロールの「CreditAgency」を選択し、メンバー欄
の追加アイコンをクリックしてユーザー「cdoyle」を追加
2
1
3
4
Copyright© 2012, Oracle. All rights reserved.
49
BPMプロセス・ロールのメンバーのセット (2/4)
• 同じようにロール「DMV」を選択し、メンバーにユーザー
「jcooper」を追加
1
2
3
Copyright© 2012, Oracle. All rights reserved.
50
BPMプロセス・ロールのメンバーのセット (3/4)
• ロール「Police」を選択し、メンバーにユーザー「cdickens」を
追加
1
2
3
Copyright© 2012, Oracle. All rights reserved.
51
BPMプロセス・ロールのメンバーのセット (4/4)
• 「すべて保存」をし、「組織」タブを閉じる
1
2
Copyright© 2012, Oracle. All rights reserved.
52
ComplexGateway アプリケーションの作成
ImmigrationClearanceプロセス
データ・オブジェクトの作成
テスト
モデリ
ング
実装と
デプロイ
各要素の実装
BPMプロセス・ロールの
メンバーのセット
プロセスのデプロイ
Copyright© 2012, Oracle. All rights reserved.
53
プロジェクトのデプロイ (1/8)
• 「アプリケーション・ナビゲータ」で、
プロジェクト「ComplexGateway」を右クリックし、
「デプロイ > ComplexGateway」を選択
Copyright© 2012, Oracle. All rights reserved.
54
プロジェクトのデプロイ (2/8)
• 「アプリケーション・サーバーにデプロイ」を選択して「次へ」を
クリック
1
2
Copyright© 2012, Oracle. All rights reserved.
55
プロジェクトのデプロイ (3/8)
• 「同じビジョンIDで既存のコンポジットを上書きします。」を
チェックして「次へ」をクリック
1
2
Copyright© 2012, Oracle. All rights reserved.
56
プロジェクトのデプロイ (4/8)
• プロジェクトのチェックボックスをチェックして、「既存のアプリケー
ションを上書き」をチェックして、「OK」をクリック
2
1
3
Copyright© 2012, Oracle. All rights reserved.
57
プロジェクトのデプロイ (5/8)
• 「WLS_Remote」を選択して、「次へ」をクリック
1
注意:
「WLS_Remote」の作成方法は、最後の補足情報「[補足]
アプリケーション・サーバ接続の作成」を参照してください。
事前に接続する管理サーバーとSOAサーバーを起動して
おく必要があります。
2
Copyright© 2012, Oracle. All rights reserved.
58
プロジェクトのデプロイ (6/8)
• 検出されたSOAサーバーを選択されたまま「次へ」をクリック
Copyright© 2012, Oracle. All rights reserved.
59
プロジェクトのデプロイ (7/8)
• 「終了」をクリックし、デプロイを開始する
Copyright© 2012, Oracle. All rights reserved.
60
プロジェクトのデプロイ (8/8)
• デプロイ完了した後のログは、以下となる
Copyright© 2012, Oracle. All rights reserved.
61
ComplexGateway アプリケーションの作成
ImmigrationClearanceプロセス
連続2回承認 のケース
手順
テスト
モデリ
ング
ユーザー
処理
1
weblogic
passportIDを入力してプロ
セス起動
2
cdickens
承認する
3
jcooper
承認する
承認 > 却下 > 承認のケース
手順
実装と
デプロイ
ユーザー
処理
1
weblogic
passportIDを入力してプロ
セス起動
2
cdickens
承認する
3
cdoyle
却下する
3
jcooper
承認する
Copyright© 2012, Oracle. All rights reserved.
62
プロセスのテスト
連続2回承認 のケース (1/7)
• 「weblogic」ユーザーでEMにログインし、左側のパネルから
「SOA > soa-infra > default > ComplexGateway」を選択し、
右側の「テスト」をクリック
2
1
Copyright© 2012, Oracle. All rights reserved.
63
プロセスのテスト
連続2回承認 のケース (2/7)
• 引数「passportID」に任意値を入力して「Webサービスのテスト」
をクリック
2
1
Copyright© 2012, Oracle. All rights reserved.
64
プロセスのテスト
連続2回承認 のケース (3/7)
• フロー・トレースを起動
注意:
3つのチェック・タスクが全部実行中
の状態です。
Copyright© 2012, Oracle. All rights reserved.
65
プロセスのテスト
連続2回承認 のケース (4/7)
• ユーザー「cdickens」でBPM Workspaceにログインし、アクション
の「Approve」をクリックしてアサインされたタスクを処理する
1
2
Copyright© 2012, Oracle. All rights reserved.
3
66
プロセスのテスト
連続2回承認 のケース (5/7)
• ユーザー「jcooper」でBPM Workspaceにログインし、アクション
の「Approve」をクリックしてアサインされたタスクを処理する
2
Copyright© 2012, Oracle. All rights reserved.
3
67
プロセスのテスト
連続2回承認 のケース (6/7)
• 再度「フローのトレース」ページで「リフレッシュ」をし、プロセスと
タスクの状態を確認して、「ImmigrationClearance」をクリック
注意:
未処理のタスク「CheckCredit」は、
取消しされたため状態も「完了」とな
っており、プロセスも「完了」です。
Copyright© 2012, Oracle. All rights reserved.
68
プロセスのテスト
連続2回承認 のケース (7/7)
• 表示される監査証跡ページで「フロー」を確認
Copyright© 2012, Oracle. All rights reserved.
69
プロセスのテスト
承認 > 却下 > 承認のケース (1/8)
• 「weblogic」ユーザーでEMにログインし、左側のパネルから
「SOA > soa-infra > default > ComplexGateway」を選択し、
右側の「テスト」をクリック
2
1
Copyright© 2012, Oracle. All rights reserved.
70
プロセスのテスト
連続2回承認 のケース (2/8)
• 引数「passportID」に任意値を入力して「Webサービスのテスト」
をクリック
2
1
Copyright© 2012, Oracle. All rights reserved.
71
プロセスのテスト
連続2回承認 のケース (3/8)
• フロー・トレースを起動
注意:
3つのチェック・タスクが全部実行中
の状態です。
Copyright© 2012, Oracle. All rights reserved.
72
プロセスのテスト
連続2回承認 のケース (4/8)
• ユーザー「cdickens」でBPM Workspaceにログインし、アクション
の「Approve」をクリックしてアサインされたタスクを処理する
1
2
Copyright© 2012, Oracle. All rights reserved.
3
73
プロセスのテスト
連続2回承認 のケース (4/8)
• ユーザー「cdoyle」でBPM Workspaceにログインし、アクション
の「Reject」をクリックしてアサインされたタスクを処理する
1
2
Copyright© 2012, Oracle. All rights reserved.
3
74
プロセスのテスト
連続2回承認 のケース (6/8)
• 再度「フローのトレース」ページで「リフレッシュ」をし、プロセスと
タスクの状態を確認
注意:
複合ゲートウェイの条件式を満たしていないため、
未処理のタスク「CheckDriverLicense」は、まだ
「実行中」の状態であることを確認
Copyright© 2012, Oracle. All rights reserved.
75
プロセスのテスト
連続2回承認 のケース (5/8)
• ユーザー「jcooper」でBPM Workspaceにログインし、アクション
の「Approve」をクリックしてアサインされたタスクを処理する
2
Copyright© 2012, Oracle. All rights reserved.
3
76
プロセスのテスト
連続2回承認 のケース (6/8)
• 再度「フローのトレース」ページで、「リフレッシュ」をしてプロセス
とタスクの状態が全て完了であることを確認し、
「ImmigrationClearance」をクリックして監査証跡を確認
Copyright© 2012, Oracle. All rights reserved.
77
プロセスのテスト
連続2回承認 のケース (8/8)
• 表示される監査証跡ページで「フロー」を確認
Copyright© 2012, Oracle. All rights reserved.
78
[補足] アプリケーション・サーバ接続の作成 (1/7)
• メニューから「表示 > アプリケーション・サーバー・ナビゲータ」
を選択して、アプリケーション・サーバー・ナビゲータを表示さ
せる
Copyright© 2012, Oracle. All rights reserved.
79
[補足] アプリケーション・サーバ接続の作成 (2/7)
• アプリケーション・サーバー・ナビゲータで、ルートの「アプリケ
ーション・サーバー」を右クリックし、「新規アプリケーション・サ
ーバー」をクリック
Copyright© 2012, Oracle. All rights reserved.
80
[補足] アプリケーション・サーバ接続の作成 (3/7)
• 作成ウィザードが表示され、「スタンドアロン・サーバー」を選択
し、「次へ」をクリック
Copyright© 2012, Oracle. All rights reserved.
81
[補足] アプリケーション・サーバ接続の作成 (4/7)
• 「接続名」に「WLS_Remote」を入力し、「次へ」をクリック
Copyright© 2012, Oracle. All rights reserved.
82
[補足] アプリケーション・サーバ接続の作成 (5/7)
• 管理ユーザーの「weblogic」とパスワードを入力し、「次へ」をク
リック
Copyright© 2012, Oracle. All rights reserved.
83
[補足] アプリケーション・サーバ接続の作成 (6/7)
• 接続するWeblogicホスト名(管理サーバー)の情報を入力し、
「次へ」をクリック
項目
値
Weblogic
ホスト名
soa11gps4
環境に合わせ
て変更必要
ポート
7001
環境に合わせ
て変更必要
Weblogic
ドメイン
base_domain
環境に合わせ
て変更必要
Copyright© 2012, Oracle. All rights reserved.
84
[補足] アプリケーション・サーバ接続の作成 (7/7)
• 接続テストをおこない、正常の場合、「終了」をクリック
Copyright© 2012, Oracle. All rights reserved.
85
リファレンス
• 英語版のComplex Gatewayサンプル・アプリケーション・ガイド
http://java.net/projects/oraclebpmsuite11g/downloads/download/Samples/
bpm-106ComplexGateway/BPM%2011g%20Sample_Complexgateway.pdf
• 複合ゲートウェイの概要について
http://docs.oracle.com/cd/E24001_01/doc.1111/b61409/model_bus_proc
s_bpmpd.htm#sthref230
• 複合ゲートウェイでの式の記述について
http://docs.oracle.com/cd/E24001_01/doc.1111/b61409/exps_conds_bpm
pd.htm#CHDIFADH
Copyright© 2012, Oracle. All rights reserved.
86
Copyright© 2012, Oracle. All rights reserved.
Copyright© 2012, Oracle. All rights reserved.
88
Fly UP