IM-BPM for Accel Platform IM-BPM プロセスデザイナ 操作ガイド 第8版 2023-10-01

4.3.3.2. タイマ開始イベント

指定した日時や繰り返しの設定など、スケジュールで開始するイベントです。
設定可能な項目は以下のとおりです。

4.3.3.2.1. タイマ開始イベントの配置

  1. 「パレット」から、「icon_palette_start_event」にカーソルを合わせます。

  2. 「パレット」の右側に現れる一覧から、「icon_timer_start_event」をドラッグ&ドロップの操作でキャンバス上に配置します。

    ../../../../_images/timer_start_event_arrange01.png

4.3.3.2.2. 基本情報の設定

基本情報の設定について解説します。
  1. エディタ上で設定を行いたいフローエレメントをクリックします。

  2. プロパティエリアから「基本情報」タブを選択します。

    ../../../../_images/common_basic_information6.png
プロパティの詳細は以下のとおりです。
項目名 必須/任意 入力形式 説明
ID 必須
任意の文字列を設定します。
英数字と一部の記号のみ使用できます。
フローエレメントを一意に特定するためのIDを設定します。
名前 任意
任意の文字列を設定します。
フローエレメントの名前を設定します。
プロセス定義で表示されます。
実行モード     非同期実行を行うための設定です。
制御モード     排他制御を行うための設定です。

4.3.3.2.3. メインコンフィグの設定

タイマ開始イベントのメインコンフィグの設定について解説します。
../../../../_images/timer_start_event_config01.png
項目名 必須/任意 入力形式 説明
時間指定の種別     時間を指定する種別を選択します。
日付 必須
日付形式の文字列を設定します。
EL式による設定が可能です。
「時間指定の種別」で「日付」を選択した場合に設定します。
開始する日付を設定します。
例:2016年1月1日12時開始 → 2016-01-01T12:00:00
指定日に1回のみ開始されます。
周期 必須
周期形式の文字列を設定します。
EL式による設定が可能です。
「時間指定の種別」で「周期」を選択した場合に設定します。
開始する周期を設定します。
例:10時間毎に3回開始 → R3/PT10H
指定方法により複数回開始されます。
期間 必須
期間形式の文字列を設定します。
EL式による設定が可能です。
「時間指定の種別」で「期間」を選択した場合に設定します。
開始するまでの期間を設定します。
例:10日後開始 → P10D
プロセス定義をデプロイしたときから指定した期間が経過したとき1回のみ開始されます。
日付計算方法    
  • システム日付で計算

    システムで定義されている休日を考慮せずにタイマイベントの実行がスケジュールされます。
  • 業務日付で計算

    システムで定義されている休日を考慮し、休日にはタイマイベントの実行がスケジュールされなくなります。
タイムゾーン    
タイマイベントのスケジュールを行う際のタイムゾーンを指定します。
カレンダーID    
業務日付でタイマイベントのスケジュールを行う際に、休日の定義を参照するカレンダーを指定します。
カスタムカレンダーロジックを使用する    
ユーザコードまたはLogicDesignerを使用して、システムが計算したスケジュールの編集を行います。
繰り返し指定などにより、複数回スケジュールの計算を行う必要がある場合、二回目以降のスケジュールの計算時に、一回目のスケジュール日時を再計算するため、ユーザコードの振る舞はべき等であるこ必要があります。
これは、リトライなどが発生した場合などに前回のスケジュールの正確な実行時間が取得できない場合があるためです。
カスタムカレンダーロジック 必須 呼び出すクラスを設定します。
スケジュールの編集を行うロジックの種類を選択します。
「Javaクラス」、「スクリプトファイル」、「IM-LogicDesigner」より選択できます。
Javaクラス 必須
Javaクラスを設定します。
システムにデプロイされているJavaクラスを呼び出し、スケジュールの編集を行います。
カスタムロジックタイプで「Javaクラス」を選択した場合に入力します。
スクリプトファイル 必須
実行するスクリプトファイルを { IM-Juggling プロジェクト}/classes からの相対パス形式で指定します。
例:{ IM-Juggling プロジェクト}/classes/sample/foo.js を実行する場合→sample/foo.js
システムにデプロイされているim-javascriptのスクリプトファイルを呼び出し、スケジュールの編集を行います。
カスタムロジックタイプで「スクリプトファイル」を選択した場合に入力します。
フローID 必須
フロー定義IDを設定します。
IM-LogicDesignerのフロー定義IDを指定します。
カスタムロジックタイプで「IM-LogicDesigner」を選択した場合に入力します。
「フロー定義検索」ボタンでフロー定義の検索ができます。
利用するバージョン    

タイプで「IM-LogicDesigner」を選択した場合に選択します。

  • 最新バージョンを利用

    ロジックフローの最新バージョンを使用します。
  • 入力したバージョンを利用

    指定したロジックフローのバージョンを使用します。
バージョン番号 必須
ロジックフローのバージョン番号を設定します。
カスタムロジックタイプで「IM-LogicDesigner」を選択し、「利用するバージョン」で「入力したバージョンを利用」を選択した場合に入力します。
ロジックフローのバージョン番号を指定します。

コラム

Javaクラスについて
「Javaクラス」で指定するクラスは、下記のInterfaceを実装する必要があります。
  • jp.co.intra_mart.activiti.engine.impl.calendar.custom.logic.execute.CustomBusinessCalendarLogicJavaClass

コラム

スクリプトファイルについて
スクリプトファイルは以下の形式で記述されている必要があります。
関数名:run(input)
戻り値:rescheduledDate ※編集後のスケジュール日時
スクリプトファイルのinputには下記の情報が設定されます。
{
  "processDefinitionId" : "PROCESS_TIMER_START_EVENT_019:1:8guoz28v37c25xa",
  "processInstanceId" : null,
  "executionId" : null,
  "activityId" : "timer-start-event_1",
  "calendarId" : "JPN_CAL",
  "calcStartDate" : new Date(1687945754602),
  "dueDate" : new Date(1687946354602),
  "businessKey" : null,
  "description" : "R3/PT10M",
  "timeZone" : "Asia/Tokyo",
  "processDefinitionKey" : "PROCESS_TIMER_START_EVENT_019"
}
processDefinitionId : プロセス定義ID
processInstanceId : プロセスインスタンスID、タイマ開始イベントの場合は、null が設定されます。
executionId : エグゼキューションID、タイマ開始イベントの場合は、null が設定されます。
activityId : タイマイベントのアクティビティID
calendarId : カレンダーID
calcStartDate : 計算の基準となる日時。アクティビティへの到達日時が設定されます。
dueDate : システムがあらかじめ計算したスケジュール日時
businessKey : 業務キー
description : 周期または期間に設定されたスケジュール指定文字列
timeZone : タイムゾーン
processDefinitionKey : プロセス定義キー
以下はシステムが計算したスケジュール時刻が18時以降であった場合、次の営業日の9時に再スケジュールするスクリプトのサンプルです。
function run(input) {
  var calendarService = new bpm.BusinessCalendarService();
  var rescheduledDate = input.dueDate;
  if (calendarService.isAfter(input.dueDate,18,input.timeZone).data) {
    var nextBusinessDay = calendarService.getNextBusinessDay(input.dueDate,input.timeZone,input.calendarId).data;
    rescheduledDate = calendarService.editClock(nextBusinessDay,9,input.timeZone).data;
  }
  return {
    rescheduledDate : rescheduledDate
  };
}

コラム

IM-LogicDesignerの入力値/出力値のjson定義
IM-LogicDesignerの入力値
calcStartDatedueDateは読み込んだのち、IM-LogicDesignerの「入出力設定」にてDate型へ変更してください。
{
    "processDefinitionKey": "",
    "processDefinitionId": "",
    "businessKey": "",
    "processInstanceId": "",
    "executionId": "",
    "activityId": "",
    "timeZone": "",
    "calendarId": "",
    "description": "",
    "calcStartDate": null,
    "dueDate": null
}
IM-LogicDesignerの出力値
読み込んだのち、IM-LogicDesignerの「入出力設定」にてDate型へ変更してください。
{
  "rescheduledDate": null
}

注意

「日付計算方法」、および「カスタムカレンダーロジック」は、2023 Autumn(Hollyhock)以降のバージョンから設定できます。