相対期間の実装方法
cmn_relative_duration テーブルと DurationCalculator スクリプトインクルードを作成することで、相対期間を実装できます。
始める前に
手順
- cmn_relative_duration テーブルを作成します。
- DurationCalculator スクリプトインクルードを作成します。
- サンプルの相対期間エントリを作成します (たとえば、「4 pm までであれば翌営業日」)。
- 相対期間をサポートするために必要なフィールドを SLA テーブルに追加します。
- SLA の期間計算を変更します。
- SLA の SLA パーセンテージタイマー計算を変更します (これは work_seconds を使用する必要があります)。
- ワークフローにスケジュールフィールドを追加します: スケジュールとタイムゾーン (ワークフローテーブルのフィールドに基づいて選択)。
- 期間サポートフィールドをワークフロータスクアクティビティに追加します。
- タスクアクティビティの期間計算スクリプトを実装します。
相対期間テーブルと DurationCalculator メソッド
cmn_relative_duration テーブルは、期間または相対期間のどちらかでの期日の定義をサポートしています。
このテーブルは、[名前] と [スクリプト] の 2 つのフィールドで構成されています。[スクリプト] フィールドには、相対期間計算スクリプトが含まれています。このスクリプトには、期日の計算に使用される「calculator」変数が含まれています。
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 プロパティを取得します。 |
相対期間スクリプトでは、次の関数が使用されます。
| 関数 | 説明 |
|---|---|
| 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」が空白の場合は、作業終了日の終了時間を使用します。 |