例: プロセス管理で使用するワークフローを設定

[プロセス管理] フォームでワークフローのタスクを設定する人は、[ワークフロー開始] を設定する [タスク区分] をタスクと一緒に追加し、そのタスクについての情報を明記し、次に [イベント名] フィールドにあるワークフローイベントを選択します。[イベント名] フィールドでは、SyteLine で利用可能な全ての非フレームワーク、非コアイベントを一覧表示します。ここに一覧表示するワークフローイベントを作成する必要があります。

ワークフロータスクに割り当てた人が [プロセス管理] 内のタスクを開けると、イベント名が [イベント名] フィールドに表示されます。その人が[イベント開始] ボタンをクリックてワークフローを開始します。

HR_NewHireAnnouncement イベントとそのイベンドハンドラ、同様に同じイベント処理とサンプルストアドプロシージャがワークフロー例として、開始データベースに提供されます。これは、修正して [プロセス管理] でテストするために提供されます。サンプルのワークフローは、新規雇用名称と職務の詳細を提供した全ての従業員に通知を送付します。システムでテストしたい場合、この例をここに説明するとおりに編集する必要があります。例は、このイベント用に書いたスクリプトからフォームを通じてパラメタをパスする方法を示しています。汎用ストアドプロシージャは、任意のカスタマイズイベントを刺激します。

イベントの定義

このサンプルの HR_NewHireAnnouncement イベントは、イベンドハンドラと 3 つのイベント実行があります。

  • 処理タイプ「アトリビュート設定」 SET(EVENTTITLE=E(EventTitle)):このイベント実行は、処理タスク RowPointer を他所参照のためイベントタイトルに書きます。
  • 実行区分「通知」には以下のパラメタがあります。
    • 終了: イベントグローバル定数「HRNewHireAnnouncementRecipients」
      注: このイベントグローバル定数の関連ユーザの一覧を定義する必要があります。
    • 件名: 翻訳可能なストリング「歓迎!新入社員の<empname>さんです。」
    • 本文: 翻訳可能なストリング「<empname> さんが <empposition> として本日入社する旨お知らせいたします。」

    このイベント実行は、イベントグローバル定数と関連付いているユーザに新入社員について通知します。EmpName と EmpPosition はこのイベントの入力パラメタです。このワークフローの元となる処理からその情報は取り除かれています。

  • 実行区分: 「完了」

自身のイベントを書きたい場合は要件に基づき、1 番目と 3 番目のイベント実行を使用する必要があり、自身のイベント実行をその間に書く必要があります。

サンプルの HR_NewHireAnnouncemen イベントは無効として実行されます。そのイベントを使用するには、 [ワークフローイベントハンドラの有効化] フォームでそれを有効にする必要があります。[ユーザに通知] フィールドにおいて、この新入社員のお知らせを受け取るべき適切なユーザを明記します。

フォームのスクリプト:

  • プロセス管理がサポートする必要のある全てのカスタムイベントについて、必須の任意の入力パラメタを識別する必要があります。(例の HR_NewHireAnnouncement イベントは 2 つの入力パラメタが必要です。EmpName および EmpPosition です。)
  • イベントのユーザがパラメタを入力する場合、その入力パラメタ値がフォームのページコンポーネント、プロパティ、変数から取得可能であるか決定します。そうでない場合、フォーム上でそれらの値を取得します。それらの入力パラメタを割り当てます。(例えば、双方の入力パラメタのデータはフォームコンポーネントから取得できます。)

    例示するとおり、入力パラメタを割り当てます。

    
    If ThisForm.Components("MyTasksFormPageEventNameEdit").Text = "HR_NewHireAnnouncement" Then
              ThisForm.Variables("ParmName1").Value = "EmpName"
              ThisForm.Variables("ParmValue1").Value = ThisForm.Components("MyTasksFormPageEmpName1Edit").Text
              ThisForm.Variables("ParmName2").Value = "EmpPosition"
              ThisForm.Variables("ParmValue2").Value = ThisForm.Components("MyTasksFormPageJobTitleEdit").Text
    End If
    注:  [プロセス管理] から追加のカスタム HR イベントを実行したい場合、カスタムイベント用に入力パラメタを割り当てるスクリプトを書いて、自身のコードのブロックをプロセス管理フォームに追加します。構築可能なフレームワークとしてコード例をご提供します。
  • このフォームで入手可能なイベント名、それとともにストアドプロシージャがサポートする全ての name/value ペアを使ってストアドプロシージャを走らせてください。

ストアドプロシージャ

これらのパラメタと一緒に汎用ストアドプロシージャ GenericNotifyEventGlobalCsSpをご提供します。

  • @EventName
  • @ProcessTaskRowPointer
  • @EventStateRowPointer OUTPUT
  • @Infobar OUTPUT
  • @ParmName1
  • @ParmValue1
  • @ParmName2
  • @ParmValue2
  • €¦etc はパラメタ名および値 3 から 19 ... に対して
  • @ParmName20
  • @ParmValue20

ストアドプロシージャはこれらのステップを実行します。

  • @SessionId, @EventTrxId, @EventParmId をイニシャライズします。
  • 「イベントタイトル」に保存されるイベントに対する入力パラメタとして@ProcessTaskRowPointer をパスします。
  • @EventName、@SessionId、@EventTrxId、 @EventParmId をパスして FireEventSp を実行します。
  • WAITFOR DELAY '00:00:05'
  • イベント状態 RowPointer を読み込み、フォームに戻ります。
注:  [デフォルト処理] フォームの「正常なイベント状態の保留」 オプションの設定によっては、イベントがうまくいくと EventState レコードが作成されないかもしれません。その場合、EventStateRowPointer は NULL ですが、失敗したイベントだけを知りたいのでそれは問題ではありません。

コード例がここに指定するとおり更新され、[開始イベント] ボタンが [プロセス管理] フォームでクリックされると、作成したイベント状態レコードの RowPointer が process_mgr_process_task.EventStateRowPointer に保存されます。成功を知らせるメッセージが "Event was initiated"(イベント開始しました)として表示されます。