19.5.3 自動化の作成
「自動化」ページで共有コンポーネントとして自動化を作成します。
次の例では、2時間ごとに実行される自動化を作成する方法を示します。この自動化では、営業担当の給与(SAL
)が増額されます。歩合(COMM
)が500を超えるそれぞれの営業担当(SALESMAN
)について、給与(SAL
)が1.5%増額されます。他のすべての営業担当については、給与(SAL
)が1%増額されます。
ヒント:
この項の例は、サンプル・データセットEMP/DEPTで使用可能なEMP
表に基づいています。サンプル・データセットをインストールするには、Oracle APEX SQLワークショップ・ガイドのサンプル・データセットの使用を参照してください。
- 新規アプリケーションの作成
- 「自動化」ページにナビゲートします。
- ワークスペースのホームページで、「アプリケーション・ビルダー」をクリックします。
- 新しいアプリケーションを選択します。
- アプリケーションのホームページで、「共有コンポーネント」をクリックします。共有コンポーネント・ページが表示されます。
- 「ワークフローと自動化」で、「自動化」を選択します。
「自動化」ページが表示されます。 - 自動化を作成するには、「作成」をクリックします。
自動化の作成ウィザードが表示されます。
- 自動化の名前を指定し、実行スケジュールを定義します。
- 名前 - 新しい自動化の名前を入力します。たとえば、
Increase SAL
にします。 - タイプ - 自動化タイプを選択します。「スケジュール済」を選択します。
「スケジュール済」は、選択した頻度に基づいて自動的に実行されます。「オンデマンド」は、
APEX_AUTOMATION
パッケージを使用して明示的にコールされたときに実行されます。 - アクションの開始 - 「問合せ」を選択します。
このオプションでは、自動化アクションの実行を問合せ」に基づいて開始するのか(つまり、返された行をアクションで使用できる)、アクションを常時実行するのかを決定します。
- 実行スケジュール - 新しい自動化の実行スケジュールを選択します。「カスタム」を選択します。 「頻度」、「間隔」、「実行分」属性は、「実行スケジュール」が「カスタム」に設定されている場合にのみ表示されます。
- 頻度 - 実行スケジュールを日ベース、時間ベースまたは分ベースのいずれにするかを指定します。「毎時」を選択します。
- 間隔 - 自動化が2時間ごとに実行されるように、
2
と入力します。 - 実行分 - 実行分を0から59までで指定します。これはデフォルトの
0
のままにします。自動化の作成ウィザードは、次の図のようになります。
- 「次」をクリックします。
- 名前 - 新しい自動化の名前を入力します。たとえば、
- ソースを定義します。この例はローカル表
EMP
に基づいています。- データ・ソース - この自動化のデータ・ソースを選択します。「ローカル・データベース」を選択します。
- ソース・タイプ - 「表」を選択します。
- 表/ビューの所有者 - この自動化の基になっている表の所有者を選択します。
- 表/ビューの名前 - 自動化の基になる表またはビューを選択します。この例では、「EMP (table)」を選択します。
- アクションの実行時間: このオプションでは、問合せが行を返すとき、または問合せが行を返さないときのいずれの場合に自動化アクションを実行するかを決定します。「行が返される」を選択します。
自動化の作成ウィザードは、次の図のようになります。
- 「作成」をクリックします。
自動化の編集ページが表示されます。次のメッセージがページの上部に表示されます。
自動化が作成され、「無効」状態です。自動化の実行時に実行するアクションを作成してください。
- 最初の給与増額のアクションを編集します。
- 「アクション」まで下にスクロールします。ウィザードによって「新規アクション」というアクションが作成されています。
- 新しいアクション「新規アクション」を編集します。
-
「新規アクション」の横にある「編集」アイコンをクリックします。
「アクションの編集」ページが表示されます。
-
名前 -
Increase SAL for SALESMAN
のようなわかりやすい名前を入力します。「アクションの編集」ページは、次の図のようになります。
-
コード - 最初の給与(SAL)増額のコードを追加します。
begin update emp set sal = round(sal * 1.015, 1) where empno = :EMPNO; apex_automation.log_info('SAL for ' || :ENAME || ' increased.'); end;
コードは各行で実行されることに注意してください。この例では、
EMPNO
主キー列に基づいて、それぞれのSQL UPDATE
文が単一の行に対して機能します。また、APEX_AUTOMATION.LOG_INFO
プロシージャの使用にも注意してください。LOG_INFO
プロシージャは、自動化の実行ログに「情報」レベルのメッセージを書き込みます。「情報」として使用可能なメッセージ・レベルは、「警告」および「エラー」です。
-
- サーバー側の条件 - 給与増額に関するサーバー側の条件を作成します。
-
サーバー側の条件、条件タイプ - 「式」を選択します。
-
言語 - 「PL/SQL」を選択します。
-
式1 - 営業担当(SALESMAN)の歩合(COMM)が500を超える場合にのみ、このアクションを実行する式を入力します。次のように入力します。
:JOB = 'SALESMAN' and :COM > 500
-
行ごとに実行 - 行ごとに条件を実行することを指定する場合は、このオプションを有効にします。
-
- 「変更の適用」をクリックします。
- 「アクション」まで下にスクロールします。
- 2つ目の給与増額について別のアクションを作成します。
- 再度「アクション」まで下にスクロールし、「アクションの追加」をクリックします。「アクションの編集」ページが表示されます。
- 新しいアクションを編集します。
-
名前 -
Increase SAL for all others
のようなわかりやすい名前を入力します。 -
コード - 他のすべての営業担当について給与(SAL)を増額するようにコードを更新します。
begin update emp set sal = round(sal * 1.01, 1) where empno = :EMPNO; apex_automation.log_info('SAL for ' || :ENAME || ' increased by 1%.'); end;
-
- サーバー側の条件 - 給与増額に関するサーバー側の条件を作成します。
-
条件タイプ - 「式」を選択します。
-
言語 - 「PL/SQL」を選択します。
-
式 - 営業担当(SALESMAN)の歩合(COMM)が500以下またはnullである場合にのみ、このアクションを実行する式を入力します。
:JOB != 'SALESMAN' and :COM <= 500 or :COMM is null
-
行ごとに実行 - 行ごとに条件を実行することを指定する場合は、このオプションを有効にします。
-
- 「作成」をクリックします。
- 再度「アクション」まで下にスクロールし、「アクションの追加」をクリックします。
- 自動化を実行します。自動化の編集ページで、「保存して実行」をクリックします。
「保存して実行」をクリックすると、自動化がバックグラウンドで実行されます。アクションが実行中であっても、ブラウザはすぐに再び表示されます。
次のメッセージが表示されます。
変更が適用されました。自動化実行が開始されました。
- 自動化実行ログを確認します。
- 「自動化」ブレッドクラムをクリックして、「自動化」ページに戻ります。
- 「実行ログ」タブをクリックし、実行された自動化を確認します。
- 「メッセージ」の下のリンクをクリックして、処理された行について個々のメッセージを表示します。
ヒント:
また、「SQLワークショップ」の「オブジェクト・ブラウザ」でターゲット表を表示して、自動化によって実際にデータが変更されていることを検証することもできます。『Oracle APEX SQLワークショップ・ガイド』の表の参照を参照してください。
- メッセージを表示している場合は、「実行ログ」タブをクリックして前のページに戻ります。
- 自動化実行ログをクリアします。
- 「実行ログ」ページで、「ログのパージ」をクリックします。「自動化ログのクリア」ダイアログが表示されます。
- 「自動化ログのクリア」ダイアログで、次のステップを実行します。
-
「自動化」リストから、自動化(Increase Salなど)を選択します。
-
「ログのクリア」をクリックします。
-
- 「実行ログ」ページで、「ログのパージ」をクリックします。
- 自動化設定を更新して、スケジュールを有効にします。
- 「自動化」ブレッドクラムをクリックして、「自動化」ページに戻ります。
- 編集する自動化の名前を選択します。たとえば、「Increase SAL」を選択します。
- 設定、スケジュール式 - 「スケジュール式」フィールドの右にあるスケジュール・ビルダーをクリックし、次の項目を更新します。
-
頻度 - 「週」を選択します。
-
間隔 - デフォルトの
「1」
を受け入れます。 -
実行日 - 「月曜」、「火曜」、「水曜」、「木曜」および「金曜」を選択します。
-
実行時間 -
14
と入力します。 -
実行分 - 30と入力します。
-
「実行間隔の設定」をクリックします。
前述の例では、自動化の実行が毎平日の午後2時30分に予定されます。自動化スケジューラは、データベース・サーバーのタイムゾーンで実行されます。
-
- スケジュール・ステータス - 「アクティブ」を選択します。
- 編集内容を保存するには、「変更の保存」をクリックします。
関連項目:
- 『Oracle APEX管理ガイド』のバックグラウンド・ジョブの構成
- 『Oracle APEX APIリファレンス』の「APEX_AUTOMATION」パッケージ
親トピック: 自動化の管理