最終的に作成されるアプリケーションは以下のような動作になります。
従業員による経費精算の申請
申請済みの経費精算の一覧を表示するレポートと、経費精算の申請を行なうフォームのページを作成します。アプリケーション・ビルダーにて、すでに作成済みの経費精算のアプリケーションを開き、ページの作成を実行します。
ページ作成ウィザードが実行されます。
対話モード・レポートを選択します。
ページ定義のページ番号は2、名前は従業員、ページ・モードは標準を選択し、フォーム・ページを含めるはONにします。
フォーム・ページ番号はフロー・モデルで使用しているため必ず3、フォーム・ページ名は経費精算の申請、フォーム・ページ・モードはモーダル・ダイアログとします。
データ・ソースのソース・タイプとしてSQL問合せを選択し、SQL SELECT文を入力に以下を記述します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
select | |
expe.expe_id | |
,expe.expe_justification | |
,expe.expe_amount | |
,expe.expe_status | |
,expe.expe_submitted_on | |
,expe.expe_invoice_dd | |
,expe.expe_purpose | |
,inst.prcs_id | |
,tibx.sbfl_id | |
,tibx.sbfl_step_key | |
from tuto_expenses expe | |
join flow_instances_vw inst on expe.expe_id = inst.prcs_business_ref | |
left join flow_task_inbox_vw tibx on expe.expe_id = tibx.sbfl_business_ref | |
where inst.dgrm_name = :APP_NAME | |
and (tibx.sbfl_dgrm_name = :APP_NAME or tibx.sbfl_dgrm_name is null) | |
and expe.expe_submitted_by = :APP_USER |
申請済みの全ての経費精算(表TUTO_EXPENSES)とそれに紐づいたプロセス・インスタンスの情報(ビューFLOW_INSTANCES_VW)、および現在処理中のプロセス・インスタンスの状態(ビューFLOW_TASK_INBOX_VW)をジョインして一覧しています。
ナビゲーションは、標準ページのデフォルトであるブレッドクラムの使用、ナビゲーションの使用ともにONから変更しません。
次へ進みます。
以上で、経費精算の一覧を表示するレポートと、経費精算を申請するフォームのページが作成されます。
ページ作成ウィザードに与えたSQLは経費精算の申請を一覧するためのもので、フォームのソースとしては適切ではありません。また、フォームのページはワークフローと連携させる必要があります。
ページ・デザイナにて、ページ経費精算の申請(ページ番号3)を開きます。
フォーム・リージョン経費精算の申請を選択します。
ソースのタイプを表/ビューに変更し、表名にTUTO_EXPENSESを指定します。
ページ・アイテムP3_EXPE_SUBMITTED_ON、P3_EXPE_ACCOUNT、P3_EXPE_SUBMITTED_BYは経費精算の申請では使用しないため、ビルド・オプションでコメント・アウトします。
ページ・アイテムP3_EXPE_COMMENT_MGRを選択します。識別のタイプを表示のみに変更し、サーバー側の条件としてタイプをアイテムはNULLではない、アイテムとしてP3_EXPE_COMMENT_MGRを選択します。
この経費申請のフォームは、上司や部門長に経費の申請が却下された際の再申請にも使われます。上司や部門長が申請を却下する際に入力するコメントは、従業員は参照するだけなのでページ・アイテムのタイプは表示のみになります。また、最初の申請時は、上司や部門長のコメントは存在しないので、ページ・アイテムが表示される必要はありません。
ページ・アイテムP3_EXPE_COMMENT_VPについても同様の設定を行います。識別のタイプを表示のみに変更し、サーバー側の条件としてタイプをアイテムはNULLではない、アイテムとしてP3_EXPE_COMMENT_VPを選択します。
このフォームから経費精算の申請および再申請を行なう際に、ページ・アイテムP3_EXPE_STATUSの値が必ずsubmittedとなるようするため、このページ・アイテムに計算を作成します。
ページ・アイテムP3_EXPE_STATUSを選択し、識別のタイプを非表示に変更します。
ページ・アイテムP3_EXPE_STATUS上でコンテキスト・メニューを表示させ、計算の作成を実行します。
実行のポイントを送信後に変更します。計算のタイプを静的値、静的値にsubmittedを指定します。結果として、このフォームが送信されるときは常に、ページ・アイテムP3_EXPE_STATUSの値はsubmittedになります。
右ペインにてプロセス・ビューを開き、ワークフローと連携するためのプロセスを作成します。
最初にワークフローを開始するプロセスを作成します。プロセスの作成を実行し、プロセス・フォーム経費精算の申請とダイアログを閉じるの間に配置します。
識別の名前をF4A:ワークフローの開始、タイプとしてFlows for APEX - Manage Flow Instance[プラグイン]を選択します。
以下の設定を行います。
Action:Create and Start
Flow Instance Name:&APP_NAME. - &APP_USER. - &P3_EXPE_AMOUNT. 米ドル
Select flow using:Component Setting
Flow (Diagram) selection based on:Name
Set Business Reference:P3_EXPE_ID
Return Instance ID into:PROCESS_ID
Set Process Variables?:Using JSON
JSONとして以下を記述します。申請した費用であるページ・アイテムP3_EXPE_AMOUNTの値が、ワークフローのプロセス変数EXPE_AMOUNTに設定されます。
[
{
"name": "EXPE_AMOUNT",
"type": "number",
"value": &P3_EXPE_AMOUNT.
}
]
フォーム上のボタン作成をクリックしたときに実行されるよう、サーバー側の条件のボタン押下時にCREATEを指定します。
開始されたワークフローのSUBFLOW_IDとSTEP_KEYを取得するプロセスを作成します。
プロセスの作成を実行し、プロセスワークフローの開始の下に配置します。
識別の名前をSUBFLOW_IDとSTEP_KEYの取得とし、タイプとしてコードの実行を選択します。ソースの位置はローカル・データベース、言語はPL/SQL、PL/SQLコードとして以下を記述します。
select sbfl_id, sbfl_step_key into :SUBFLOW_ID, :STEP_KEY
from flow_subflows_vw
where sbfl_prcs_id = :PROCESS_ID;
サーバー側の条件として、ボタン押下時にCREATEを指定します。
フロー・モデルのタスク経費精算の申請を完了するプロセスを作成します。
プロセスの作成を実行し、プロセスSUBFLOW_IDの取得の下に配置します。
識別の名前をF4A:経費精算の申請とし、タイプとしてFlows for APEX - Manage Flow Instance Step [プラグイン]を選択します。
以下の設定を行います。
Action:Complete Step
Flow Instance Info:In Page Items
Process ID Item:PROCESS_ID
Subflow ID item:SUBFLOW_ID
Step Key: STEP_KEY
Set Gateway Routing?:OFF
Auto-Branching:OFF
Auto-Branching:OFF
サーバー側の条件のボタン押下時にCREATEを指定します。
経費精算の再申請(タスク申請の修正を完了する)を行なうプロセスを作成します。
プロセスの作成を実行し、プロセス経費精算の申請の下に配置します。
識別の名前をF4A:申請の修正とします。タイプとしてFlows for APEX - Manage Flow Instance Step [プラグイン]を選択します。
設定のActionはComplete Step、Flow Instance Infoとしてfrom SQL Queryを選択し、以下をSQL Queryとして記述します。
select
sbfl_prcs_id
,sbfl_id
,sbfl_step_key
from flow_task_inbox_vw
where sbfl_business_ref = :P3_EXPE_ID;
サーバー側の条件のボタン押下時にSAVEを選択します。
経費精算の再申請の際に変更した費用で、プロセス変数EXPE_AMOUNTを更新するプロセスを作成します。
プロセスの作成を実行し、プロセス経費精算の再申請の下に配置します。
識別の名前はF4A:経費の更新、タイプとしてFlows for APEX - Manage Flow Instance Variables [プラグイン]を選択します。
以下の設定を行います。
Action : Set
Flows Instance info : In Page Items
Process ID Item : PROCESS_ID
Subflow ID Item : SUBFLOW_ID
Manage Variable(s) using : APEX item(s)
Process Variable(s) Name(s) : EXPE_AMOUNT
APEX item(s) : P3_EXPE_AMOUNT
サーバー側の条件のボタン押下時にSAVEを選択します。
最後に申請済みの経費精算を表TUTO_EXPENSESから削除する際に、その申請に紐づけて作成されているワークフロー(正確にはプロセス・インスタンス)を削除するプロセスを作成します。
プロセスの作成を実行し、プロセス経費の更新の下に配置します。
識別の名前をF4A:ワークフローの削除とし、タイプとしてFlows for APEX - Manage Flow Instance [プラグイン]を選択します。
以下の設定を行います。
Action:Delete
Select Flow using:SQL Query
SQL Queryとして以下を記述します。
select prcs_id
from flow_instances_vw
where prcs_business_ref = :P3_EXPE_ID;
サーバー側の条件として、ボタン押下時にDELETEを選択します。フォームで削除ボタンを押したときに、申請された経費精算のIDであるP3_EXPE_IDに紐づけられているワークフロー(プロセス・インスタンス)が削除されます。
一旦申請した経費精算(ステータスがsubmittedのもの)および支払い済みの経費(ステータスがpaidのもの)を再度申請するパスは定義されていないので、ボタンSAVE(変更の適用)が表示されないようにサーバー側の条件を設定します。
ボタンSAVEを選択し、サーバー側の条件のタイプは式、言語はPL/SQLを選択し、PL/SQL式に以下を記述します。
:P3_EXPE_ID is not null
and
:P3_EXPE_STATUS <> 'submitted'
and
:P3_EXPE_STATUS <> 'paid'
以上で従業員によって、経費精算の申請を行なう画面が出来ました。
ワークフローの進捗を表示
ワークフローの進捗を表示する画面を作成し、経費精算の申請のレポート画面より開けるようにします。
ページの作成を実行します。
空白ページを選択します。
ページ番号として9、ページの名前は進捗の表示とします。ページ・モードとしてモーダル・ダイアログを選択します。モーダル・ダイアログのページなので、ナビゲーションのブレッドクラムの使用、ナビゲーションの使用ともにOFFがデフォルトです。
ページの作成をクリックします。
作成されたページのContent Body上でコンテキスト・メニューを表示させ、リージョンの作成を実行します。
作成したリージョンの識別のタイトルとして進捗の表示、タイプとしてFlows for APEX - Viewer [プラグイン]を選択します。ソースの位置はローカル・データベース、タイプは表/ビュー、表の所有者をParsing Schemaとし、表名としてFLOW_INSTANCE_DETAILS_VW(これはビューです)を指定します。WHERE句として以下を記述します。
prcs_id = :P9_PRCS_ID
外観のテンプレートとしてBlank with Attributes (No Grid)を選択します。
リージョン進捗の表示で、プロセスIDを保持するアイテムの作成をします。
識別の名前はP9_PRCS_ID、タイプは非表示とします。
リージョン進捗の表示を選択し、右ペインにて属性を開きます。
設定のDiagram XMLとしてDGRM_CONTENTを選択します。列DGRM_CONTENTにはフロー・ダイアグラムがXML形式で保存されています。Add HighlightingをONに変更すると、Current NodesとしてALL_CURRENT、Completed NodesとしてALL_COMPLETED、Error NodesとしてALL_ERRORSが指定されます。その他もデフォルトのままとします。
ページ進捗の表示を選択し、ダイアログの幅として900、高さとして550を指定します。ダイアログの幅と高さを指定しないと、フロー・ダイアグラムが小さく表示されます。今のところダイアグラムの表示は、画面サイズに自動的にフィットしないようです。
経費精算の申請のレポートの列EXPE_STATUSに、進捗を表示するページをリンクします。
ページ番号2の従業員のページを開き、対話モード・レポートの列からEXPE_STATUSを選択します。
識別のタイプをリンクに変更し、リンクのターゲットを設定します。リンク・テキストとして#EXPE_STATUS#を指定します。
ターゲットのタイプはこのアプリケーションのページ、ページは9になります。アイテムの設定の名前としてP9_PRCS_ID、値として#PRCS_ID#を指定します。OKをクリックします。
以上で、経費精算のワークフローの進捗を表示することができるようになりました。
上司による申請のレビュー
上司による承認が必要な経費精算の申請をレポートするページと、上司が申請の承認または却下を行なうフォームを作成します。
ページの作成を実行し、ページ作成ウィザードを起動します。対話モード・レポートを選択するまでは、従業員による経費精算の申請のページを作成する手順と同じです。
ページ定義のページ番号は4、名前は上司、ページ・モードは標準を選択し、フォーム・ページを含めるはONにします。
フォーム・ページ番号はフロー・モデルで使用しているため必ず5、フォーム・ページ名は申請のレビュー、フォーム・ページ・モードはモーダル・ダイアログとします。
データ・ソースのソース・タイプとしてSQL問合せを選択し、SQL SELECT文を入力に以下を記述します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
select | |
expe.expe_id | |
,expe.expe_justification | |
,expe.expe_amount | |
,expe.expe_status | |
,expe.expe_submitted_by | |
,expe.expe_submitted_on | |
,expe.expe_invoice_dd | |
,expe.expe_purpose | |
,tibx.link_text | |
,tibx.sbfl_prcs_id | |
,tibx.sbfl_step_key | |
from tuto_expenses expe | |
join flow_task_inbox_vw tibx on expe.expe_id = tibx.sbfl_business_ref | |
where tibx.sbfl_dgrm_name = :APP_NAME | |
and expe.expe_status = 'submitted' -- 状態はF4Aが管理しているため、この条件は必須ではない | |
and tibx.sbfl_current = 'review_expense_mgr' |
ナビゲーションは、デフォルトでブレッドクラムの使用、ナビゲーションの使用ともにONになっています。
次へ進みます。
主キー列1としてEXPE_ID (Number)を選択します。ページの作成をクリックします。
対話モード・レポートとフォームのページが作成されます。
ページ・デザイナにて対話モード・レポートのページ(ページ番号4)を開きます。対話モード・レポートのリージョンを選択して、右ペインにて属性を開きます。
リンクのリンク列をカスタム・ターゲットへのリンク、ターゲットを#LINK_TEXT#へ変更します。
ターゲットの変更は、ターゲットをクリックして、リンク・ビルダー・ターゲットのダイアログを開いて行います。
ターゲットのタイプをURLとし、URLには#LINK_TEXT#を記述します。OKをクリックして、変更を確定します。
上司がこの画面より経費精算の申請をすることはないため、リージョンにあるボタンCREATEは不要です。
ボタンCREATE上でコンテキスト・メニューを表示させ、削除を実行します。
レポートのページの変更を保存し、ページ番号5の申請のレビューのページを開きます。
ページの別名をフロー・モデルで使用しているreview-mgrに変更します。
フォーム・リージョン申請のレビューを選択します。
ソースのタイプを表/ビューに変更し、表名にTUTO_EXPENSESを指定します。
ページ・アイテムP3_SUBMITTED_ON、P3_EXPE_ACCOUNTは上司による申請のレビューでは使用しないため、ビルド・オプションでコメント・アウトします。
上司が経費精算の申請の承認または却下を行なう際に入力する項目は、上司としてのコメントであるページ・アイテムP5_EXPE_COMMENT_MGRのみです。そのため、主キー項目であるページ・アイテムP5_EXPE_ID、この後に自動的に値を設定するページ・アイテムP5_EXPE_STATUSおよびP5_EXPE_COMMENT_MGR(とコメント・アウト済みのページ・アイテム)を除いた全てのページ・アイテムを選択し、識別のタイプを表示のみへ変更します。
部門長によるコメントについてはコメントがある場合にのみ表示されるよう、サーバー側の条件のタイプをアイテムはNULLではないとし、アイテムとしてP5_EXPE_COMMENT_VPを指定します。
最初にボタンDELETEを削除します。ボタンDELETE上でコンテキスト・メニューを表示させ、削除を実行します。
ボタンCREATEを選択し、このボタンを却下を行なうボタンDECLINEに変更します。
識別のボタン名をDECLINE、ラベルを却下とします。外観のホットはOFFに変更します。動作のデータベース・アクションはSQL UPDATE操作とし、サーバー側の条件のタイプを- 選択 -に戻し、条件を外します。
ボタンSAVEは承認の動作を行なうボタンAPPROVEに変更します。
識別のボタン名はAPPROVE、ラベルは承認とします。それ以外はボタンDECLINEと同じ変更を適用します。
ボタンAPPROVEまたはDECLINEが押された時に、ページ・アイテムP5_EXPE_STATUSにそれぞれapproved_by_mgr、declined_by_mgrが設定されるように、計算を作成します。
ユーザーからの入力を抑止するため、ページ・アイテムP5_EXPE_STATUSを選択し、識別のタイプを非表示に変更します。
ページ・アイテムP5_EXPE_STATUS上でコンテキスト・メニューを表示させ、計算の作成を実行します。
作成された計算の実行のポイントとして送信後を選択します。計算のタイプは静的値、静的値としてapproved_by_mgrを指定します。サーバー側の条件のタイプにリクエスト = 値を選択し、値はAPPROVEとします。
これでボタンAPPROVEを押した時に、ページ・アイテムP5_EXPE_STATUSの値としてapproved_by_mgrが送信されます。
同様に計算を作成し、却下のボタンを押したときの設定を行います。
ボタンAPPROVEと同様の設定ですが、計算の静的値はdeclined_by_mgr、サーバー側の条件の値はDECLINEとします。
ワークフローと連携を定義します。左ペインにてプロセス・ビューを開きます。
ページ・アイテムP5_EXPE_STATUSの値をプロセス変数EXPE_STATUSに設定するプロセスを作成します。
作成したプロセスをプロセス・フォーム申請のレビューの下に配置します。
識別の名前をF4A:EXPE_STATUSの設定とし、タイプとしてFlows for APEX - Manage Flow Instance Variables [プラグイン]を選択します。
以下の設定を行います。
Action : Set
Flow Instance info : In Page Items
Process ID Item : PROCESS_ID
Subflow ID Item : SUBFLOW_ID
Manage Variable(s) using : APEX item(s)
Process Variable(s) Name(s) : EXPE_STATUS
APEX item(s) : P5_EXPE_STATUS
ワークフローのユーザタスク申請のレビューを完了するプロセスを作成します。
識別の名前はF4A:申請のレビューとします。タイプとしてFlows for APEX - Manage Flow Instance Step [プラグイン]を選択します。
以下の設定を行います。
Action:Complete Step
Flow Instance Info:In Page Items
Process ID item:PROCESS_ID
Subflow ID item:SUBFLOW_ID
Step Key : STEP_KEY
Set Gateway Routing?:OFF
Auto-Branching?:OFF
プロセスダイアログを閉じるを選択し、サーバー側の条件のタイプを- 選択 -に戻します。承認または却下のいずれのボタンが押された場合でも、ダイアログが閉じられます。
以上で上司による承認または却下を行なう画面が実装できました。
部門長による申請のレビュー
上司のレビューで承認されても金額が50米ドルを超えるときは、部門長の承認が必要なフローになっています。そのため、部門長向けに経費精算の申請をレポートする画面と、承認または却下を行うフォームを作成します。
部門長向けのレポートとフォームのページの作成手順は、上司の際に実施した手順とほぼ同じです。設定内容に言及がない場合は、上司のページを作成したときと同じ値を設定します。
ページの作成を実行し、対話モード・レポートのページを作成するところから始めます。
ページ定義のページ番号は7、名前は部門長、フォーム・ページ番号は8、フォーム・ページ名は申請のレビューとします。フロー・モデルの定義に影響があるため、これらの設定はそのまま変更せずに指定します。
データ・ソースとしてローカル・データベース、ソース・タイプとしてSQL問合せを選択します。SQL SELECT文を入力に以下を記述します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
select | |
expe.expe_id | |
,expe.expe_justification | |
,expe.expe_amount | |
,expe.expe_status | |
,expe.expe_submitted_by | |
,expe.expe_submitted_on | |
,expe.expe_invoice_dd | |
,expe.expe_purpose | |
,tibx.link_text | |
,tibx.sbfl_prcs_id | |
,tibx.sbfl_step_key | |
from tuto_expenses expe | |
join flow_task_inbox_vw tibx on expe.expe_id = tibx.sbfl_business_ref | |
where tibx.sbfl_dgrm_name = :APP_NAME | |
and expe.expe_status = 'approved_by_mgr' -- 状態はF4Aで管理しているので、必須ではない。 | |
and tibx.sbfl_current = 'review_expense_vp' |
expe_statusの条件が上司のときはsubmittedだったのが部門長ではapproved_by_mgr、sbfl_currentの条件が上司のときはreview_expense_mgrだったのが部門長ではreview_expense_vpとなっているところに違いがあります。
次へ進みます。
主キー列1としてEXPE_ID (Number)を選択します。ページの作成をクリックします。
対話モード・レポートとフォームのページが作成されます。
対話モード・レポートのページ(ページ番号7)を開き、対話モード・レポートのリージョンを選択します。右ペインで属性を開き、リンクのターゲットをタイプがURL、URLとして#LINK_TEXT#を指定します。
レポートのページの変更を保存し、ページ番号8の申請のレビューのページを開きます。
ページの別名をフロー・モデルで使用しているreview-vpに変更します。
フォーム・リージョン申請のレビューを選択します。
ソースのタイプを表/ビューに変更し、表名にTUTO_EXPENSESを指定します。
ページ・アイテムP3_SUBMITTED_ON、P3_EXPE_AMOUNTは部門長による申請のレビューでは使用しないため、ビルド・オプションでコメント・アウトします。
部門長がコメントを入力するページ・アイテムはP8_EXPE_COMMENT_VPです。ページ・アイテムP8_EXPE_ID、P8_EXPE_STATUS、P8_EXPE_COMMENT_VP(とコメント・アウト済みのページ・アイテム)以外は識別のタイプを表示のみへ変更します。
上司によるコメントについてはコメントがある場合にのみ表示されるよう、サーバー側の条件のタイプをアイテムはNULLではないとし、アイテムとしてP8_EXPE_COMMENT_MGRを指定します。
ボタンDELETEを削除します。
ボタンCREATEを選択し、申請を却下するボタンDECLINEに変更します。
識別のボタン名はDECLINE、ラベルは却下とします。外観のホットをOFFにします。動作のデータベース・アクションはSQL UPDATE操作を選択し、サーバー側の条件はタイプを- 選択 -に戻し、条件を外します。
ボタンSAVEを選択し、申請を承認するボタンAPPROVEに変更します。
識別のボタン名はAPPROVE、ラベルは承認とします。それ以外はボタンDECLINEと同じ変更を適用します。
ボタンAPPROVEまたはDECLINEが押された時に、ページ・アイテムP8_EXPE_STATUSにそれぞれapproved_by_vp、declined_by_vpが設定されるように、計算を作成します。
ページ・アイテムP8_EXPE_STATUSを選択し、識別のタイプを非表示にします。
ページ・アイテムP8_EXPE_STATUSに計算を作成します。
実行のポイントは送信後、計算のタイプは静的値、静的値としてapproved_by_vpを指定します。サーバー側の条件のタイプにリクエスト = 値を選択し、値をAPPROVEとします。
もうひとつ、ページ・アイテムP8_EXPE_STATUSに計算を作成します。
ボタンAPPROVEと同様の設定ですが、計算の静的値はdeclined_by_vp、サーバー側の条件の値はDECLINEとします。
ワークフローと連携を定義します。左ペインにてプロセス・ビューを開きます。
ページ・アイテムP8_EXPE_STATUSの値をプロセス変数EXPE_STATUSに設定するプロセスを作成します。
作成したプロセスをプロセス・フォーム申請のレビューの下に配置します。
識別の名前をF4A:EXPE_STATUSの設定とし、タイプとしてFlows for APEX - Manage Flow Instance Variables [プラグイン]を選択します。
以下の設定を行います。
Action : Set
Flow Instance info : In Page Items
Process ID Item : PROCESS_ID
Subflow ID Item : SUBFLOW_ID
Manage Variable(s) using : APEX item(s)
Process Variable(s) Name(s) : EXPE_STATUS
APEX item(s) : P8_EXPE_STATUS
ワークフローのユーザタスク申請のレビューを完了するプロセスを作成します。
識別の名前はF4A:申請のレビューとします。タイプとしてFlows for APEX - Manage Flow Instance Step [プラグイン]を選択します。
以下の設定を行います。
Action:Complete Step
Flow Instance Info:In Page Items
Process ID item:PROCESS_ID
Subflow ID item:SUBFLOW_ID
Step Key : STEP_KEY
Set Gateway Routing?:OFF
Auto-Branching?:OFF
経理による支払い処理
上司と部門長のレビューにより承認された経費精算の申請は、経理担当者により支払い処理が行われます。
経理担当者が支払い処理を行うためのページを作成します。
ページの作成を実行します。
対話グリッドを選択します。
ページ定義のページ番号は6、名前は経理、ページ・モードは標準、フォーム・ページを含めるはOFFです。データ・ソースとしてローカル・データベース、ソース・タイプとしてSQL問合せを選択します。SQL SELECT文を入力に以下を記述します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
select | |
expe.expe_id | |
,expe.expe_purpose | |
,expe.expe_amount | |
,expe.expe_submitted_by | |
,expe.expe_submitted_on | |
,expe.expe_invoice_dd | |
,expe.expe_account | |
,tibx.sbfl_prcs_id | |
,tibx.sbfl_id | |
,tibx.sbfl_step_key | |
from tuto_expenses expe | |
join flow_task_inbox_vw tibx on expe.expe_id = tibx.sbfl_business_ref | |
where tibx.sbfl_dgrm_name = :APP_NAME | |
and tibx.sbfl_current = 'prepare_payment' |
編集が有効をONにします。ナビゲーションはデフォルトのブレッドクラムの使用、ナビゲーションの使用ともにONから変更しません。。
次へ進みます。
主キー列1としてEXPE_ID (Number)を選択します。ページの作成を実行します。
対話グリッドのページが作成されます。
最初にページの別名としてprepare-paymentを設定します。
リージョン経理の列を開き、列の設定を調整します。
経理担当者が入力するのは列EXPE_ACCOUNTのみで、それ以外は主に申請者が入力し経理担当者が変更することはありません。列EXPE_IDとEXPE_ACCOUNT(APEX$ROW_SELECTOR、APEX$ROW_ACTIONはデータの列ではないので、これらも除外)以外の識別のタイプを表示のみに変更します。
対話グリッドの属性を開き、編集の実行可能な操作より行の追加と行の削除を除きます(チェックを外す)。経理担当者が実行するのは、EXPE_ACCOUNTの更新のみです。
左ペインでプロセス・ビューを開き、対話グリッドを処理するプロセス経理 - 対話グリッド・データの保存を選択します。
設定のターゲット・タイプをPL/SQL Codeに変更し、挿入/更新/削除するPL/SQLコードとして以下を記述します。
失われた更新の防止はOFF、行のロックはNoに変更します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
declare | |
l_business_ref flow_process_variables.prov_var_vc2%type; | |
l_expe_id tuto_expenses.expe_id%type; | |
begin | |
-- ワークフローのBUSINESS_REFから、EXPE_IDを取り出す。 | |
l_business_ref := flow_process_vars.get_business_ref( | |
pi_prcs_id => :SBFL_PRCS_ID | |
,pi_sbfl_id => :SBFL_ID | |
); | |
l_expe_id := to_number(l_business_ref); | |
-- 取り出したEXPE_IDの行のexpe_accountを更新する。 | |
update tuto_expenses set expe_account = :EXPE_ACCOUNT | |
where expe_id = l_expe_id; | |
-- 経理による支払いタスクを完了する。 | |
flow_api_pkg.flow_complete_step | |
( | |
p_process_id => :SBFL_PRCS_ID | |
,p_subflow_id => :SBFL_ID | |
,p_step_key => :SBFL_STEP_KEY | |
); | |
end; |
対話グリッドには、未払いの経費精算の申請が一覧されていてます。支払いが済むと行が無くなります。
支払い済みの経費も確認できるように、対話モード・レポートをページに追加します。
左ペインでレンダリング・ビューを開き、リージョンの作成を実行します。
識別のタイトルを支払い済み、タイプを対話モード・レポートとします。ソースの位置はローカル・データベース、タイプをSQL問合せとして、SQL問合せに以下を記述します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
select | |
expe_id | |
,expe_purpose | |
,expe_amount | |
,expe_submitted_by | |
,expe_submitted_on | |
,expe_invoice_dd | |
,expe_account | |
from tuto_expenses | |
where expe_status = 'paid' |
対話グリッドで変更作業があった後に、対話モード・レポートがリフレッシュされるように動的アクションを作成します。
リージョン経理上でコンテキスト・メニューを開き、動的アクションの作成を実行します。
作成された動的アクションの識別の名前は支払い済みの更新とします。タイミングのイベントは保存[対話グリッド]、選択タイプはリージョン、リージョンは経理になります。
以上で経理担当者が支払い処理を行なう画面ができました。
対話グリッドにある未払いの申請について、列EXPE_ACCOUNTに何かの数値を指定し(今回のサンプル・アプリケーションでは数値自体に意味はありません)保存すると、ワークフローが完了し、行が支払い済みに移動します。
以上でFlows for APEXを使った経費精算のワークフローが実装できました。
これまでに作成した経費精算のアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/expenseclaim-v0.zip