相対期間の実装方法

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:3分
  • cmn_relative_duration テーブルと DurationCalculator スクリプトインクルードを作成することで、相対期間を実装できます。

    始める前に

    必要なロール:admin

    手順

    1. cmn_relative_duration テーブルを作成します。
    2. DurationCalculator スクリプトインクルードを作成します。
    3. サンプルの相対期間エントリを作成します (たとえば、「4 pm までであれば翌営業日」)。
    4. 相対期間をサポートするために必要なフィールドを SLA テーブルに追加します。
    5. SLA の期間計算を変更します。
    6. SLA の SLA パーセンテージタイマー計算を変更します (これは work_seconds を使用する必要があります)。
    7. ワークフローにスケジュールフィールドを追加します: スケジュールとタイムゾーン (ワークフローテーブルのフィールドに基づいて選択)。
    8. 期間サポートフィールドをワークフロータスクアクティビティに追加します。
    9. タスクアクティビティの期間計算スクリプトを実装します。

    相対期間テーブルと DurationCalculator メソッド

    cmn_relative_duration テーブルは、期間または相対期間のどちらかでの期日の定義をサポートしています。

    このテーブルは、[名前] と [スクリプト] の 2 つのフィールドで構成されています。[スクリプト] フィールドには、相対期間計算スクリプトが含まれています。このスクリプトには、期日の計算に使用される「calculator」変数が含まれています。

    DurationCalculator スクリプトインクルードを使用して、期間の計算を実行できます。このスクリプトインクルードで使用できるメソッドは次のとおりです。

    表 : 1. DurationCalculator スクリプトインクルードテーブル
    メソッド 説明
    setSchedule(String schedID, [String timezone]) 期日の計算に使用するスケジュールとタイムゾーンを設定します。
    setStartDateTime(GlideDateTime start) 期間計算のための開始時刻を設定します。[開始] が空の場合、現在の日付/時刻が使用されます。
    calcDuration(int seconds) 終了日時を計算します。完了すると、this.endDateTime および this.seconds プロパティは、計算の結果を示すように設定されます。
    calcRelativeDuration(String relativeDurationID) 指定された相対期間スクリプトを使用して期間を計算します。完了すると、this.endDateTime および this.seconds プロパティは、計算の結果を示すように設定されます。
    getEndDateTime() 期間の終了日時を示す、calcDuration/calcRelativeDuration によって設定された this.endDateTime プロパティを取得します。
    getSeconds() 期間中に実行される作業の合計秒数を示す、calcDuration/calcRelativeDuration によって設定された this.seconds プロパティを取得します。
    注:
    これは、開始時間と終了時間の合計時間ではなく、合計作業時間であり、作業時間のパーセンテージを決定するために使用されます。
    getTotalSeconds() 期間の開始時刻から終了時刻までの合計秒数を示す、calcDuration/calcRelativeDuration によって設定された this.totalSeconds プロパティを取得します。

    相対期間スクリプトでは、次の関数が使用されます。

    表 : 2. 相対期間スクリプト関数
    関数 説明
    boolean isAfter(GlideDateTime dt, String time) 「time」は「dt」で指定された時刻より後になっているかどうか。dt が空白の場合、現在の日付/時刻が使用されます。時間は 24 時間形式の「hh:mm:ss」で表されます。
    calcRelativeDueDate(GlideDateTime start, int days, String endTime) 「start」で始まり、スケジュールとタイムゾーンを使用して「days」を追加して、期日を計算します。作業の期日を特定できたら、その日の「endTime」に時間を設定します。完了すると、this.endDateTime および this.seconds プロパティは、計算の結果を示すように設定されます。「endTime」が空白の場合は、作業終了日の終了時間を使用します。