8 ケース管理スクリプトの使用

EDQ 12.2.1.4.4では、ケースおよびアラートとの対話に使用できるケース管理スクリプト・ライブラリが導入されています。この章では、ケース管理スクリプト・ライブラリを使用する方法について説明します。

この章のトピックは、次のとおりです:

8.1 ケース管理スクリプト・ライブラリの概要

EDQトリガーとスクリプト・プロセッサでケース管理スクリプト・ライブラリを使用して、サポートされている方法でケース管理データおよび多数の関数にアクセスできます。

ライブラリを使用するには、スクリプトの先頭に次の行を追加します:

addLibrary("casemanagement")
ライブラリは、スクリプトにcasemanagerという名前のオブジェクトを公開します。詳細は、「casemanagerオブジェクトのプロパティ」を参照してください。

ノート:

ケース管理スクリプト・ライブラリには、usercacheオブジェクトおよび関数を使用できるように、ユーザー・キャッシュ・スクリプト・ライブラリへの暗黙的な依存関係があります。詳細は、「ユーザー・キャッシュ問合せ用のスクリプトの使用」を参照してください。

8.1.1 casemanagerオブジェクトのプロパティ

casemanagerオブジェクトは、次の定数値を公開します:

名前 説明

CaseManagement.CASE_TYPE

ケースの内部タイプ。

case

CaseManagement.ALERT_TYPE

アラートの内部タイプ。

issue

CaseManagement.PRIO_NONE

「なし」の優先度設定に対応する整数値。

0

CaseManagement.PRIO_LOW

「低」の優先度設定に対応する整数値。

1

CaseManagement.PRIO_MEDIUM

「中」の優先度設定に対応する整数値。

2

CaseManagement.PRIO_HIGH

「高」の優先度設定に対応する整数値。

3

CaseManagement,UNASSIGNED

このオブジェクトを使用して、ケースまたはアラートを割当て解除します。

未割当てのユーザー・オブジェクト

casemanagerオブジェクトは、次の関数を公開します:

名前 説明

bean = casemanager.loadCaseById(id)

内部IDでケースまたはアラートをロードします。

bean = casemanager.loadCaseByExternalId(extid)

外部IDでケースまたはアラートをロードします。外部IDはUIに表示されます。

bean = casemanager.getChildCases(id)

指定された内部IDを持つケースに対応するアラートBeanの配列を返します。

bean = casemanager.getRelatedCases(bean)

Beanがケースの場合、それを含む配列を子アラートとともに返します。それ以外の場合、親ケースBeanとその子アラートを含む配列を返します。

bean = casemanager.updateAssignedUser(casebean, user, [dotrigger])

ケース/アラートの割当済ユーザーを更新します。ユーザー・オブジェクトは、ユーザー・キャッシュ・ライブラリ・メソッドから取得されます。nullまたはCaseManager.UNASSIGNEDを使用して、ケースまたはアラートを割当て解除します。dotriggerが省略されているか、trueの場合、更新トリガーを実行します。更新されたケースBeanを返します。

bean = casemanager.updateCase(bean, [dotrigger])

ケースまたはアラートへの変更を保存します。dotriggerが省略されているか、trueの場合、更新トリガーを実行します。更新されたBeanを返します。

bean = casemanager.updateState(bean, transition, comment, permission, [dotrigger])

ケースまたはアラートの現在の状態を更新します。transitionは遷移名、commentは変更に関連付けるコメント、permissionはコメントの制限権限です。dotriggerが省略されているか、trueの場合、更新トリガーを実行します。更新されたBeanを返します。

bean = casemanager.addComment(bean, comment, restrictingpermission, [dotrigger])

ケースまたはアラートにコメントを追加します。dotriggerが省略されているか、trueの場合、更新トリガーを実行します。更新されたBeanを返します。

extstate = casemanager.getExternalState(source, casetype, state)

指定されたソース、ケース・タイプおよびケース状態に対応する外部状態(AWAITING_REVIEWなど)を取得します。

sd = getSD(id)

指定されたIDのアラートのソース・データをロードします。結果の構造については、「ソース・データ・オブジェクトのプロパティ」を参照してください。

bool = CaseManagement.isLockError(e)

ロードと保存の間のどこかでケースまたはアラートが変更されたことを示すエラーがあるかどうかを確認します。これを使用して、スクリプトでの再試行をサポートできます。

isLockError関数の引数は、スクリプトのcatch句からのエラーです。

例:
var cb = casemanager.loadCaseById(caseid)
 
cb.priority = CaseManagement.PRIO_HIGH
 
try {
  cb.save();
} catch (e) {
  if (CaseManagement.isLockError(e)) {
    ... retry logic  ...
  }
}

8.1.2 ケースBeanのプロパティ

トリガー・コールに渡され、casemanager関数で使用されるケースBeanには、次のプロパティがあります:

プロパティ タイプ 書込み可能 説明

id

数値

いいえ

ケース/アラートの内部ID。

parentId

数値

いいえ

アラートの場合、親ケースの内部ID。

version

数値

いいえ

ケース/アラートの内部バージョン番号。

caseGroup

文字列

いいえ

ケース・グループ("match"など)。

caseType

文字列

いいえ

タイプ: ケースの場合は"case"、アラートの場合は"issue"。

externalId

文字列

いいえ

ユーザー・インタフェースに表示されるケース/アラートの外部ID。

sourceName

文字列

いいえ

ケース・ソース名。

sourceId

文字列

いいえ

内部ソースの"id"。

caseKey

文字列

いいえ

ケース/アラート・キー。

keyLabel

文字列

いいえ

ケース・キーの表示バージョン。

flagKey

文字列

いいえ

フラグ・キー。

description

文字列

はい

説明文字列。

currentState

文字列

いいえ

ケース/アラートの現在の状態。

externalState

文字列

いいえ

ケース/アラートの外部状態(AWAITING_REVIEWなど)。

derivedState

文字列

いいえ

導出状態。

createdBy

数値

いいえ

ケース/アラートを作成したユーザーのID。

createdDateTime

日付

いいえ

作成タイムスタンプ。

modifiedBy

数値

いいえ

ケース/アラートを最後に変更したユーザーのID。

modifiedDateTime

日付

いいえ

最終変更のタイムスタンプ。

assignedUser

数値

いいえ

現在割り当てられているユーザーのID。

assignedBy

数値

いいえ

最後の割当てを実行したユーザーのID。

assignedDateTime

日付

いいえ

最終割当てのタイムスタンプ。

priority

数値

はい

優先順位:

0 = なし、1= 低、2 = 中、3 = 高

permission

文字列

はい

ケース/アラート権限の文字列。

stateExpiry

日付

はい

状態の有効期限のタイムスタンプ。現在の状態が期限切れに対して有効になっていない場合、更新は無視されます。

stateChangeBy

数値

いいえ

状態を最後に変更したユーザーのID。

stateChangeDateTime

日付

いいえ

最終状態変更のタイムスタンプ。

reviewFlag

ブール

はい

レビュー・フラグ。

updatedBy

数値

いいえ

レビュー・フラグを最後に更新したユーザーのID。

updatedDateTime

日付

いいえ

最終レビュー・フラグ更新のタイムスタンプ。

groupId

文字列

いいえ

内部グループID。

groupLevel

数値

いいえ

内部グループ・レベル。

extendedAttributeN

文字列/数値/ブール

はい

拡張属性(フラグ) Nの値。

extendedAttributeNModifiedBy

数値

いいえ

拡張属性(フラグ) Nを最後に変更したユーザーのID。

extendedAttributeNModifiedDateTime

日付

いいえ

拡張属性(フラグ) Nの最終変更のタイムスタンプ。

トリガー・コールに渡され、casemanager関数で使用されるケースBeanには、次の関数があります:

名前 説明

value = casebean.getExtendedAttribute(n, [deflt])

拡張属性(フラグ) Nの値を取得します。defltが省略されているか、trueの場合、属性が設定されていないとデフォルト値を返します。この関数は、extendedAttributeNのかわりに使用され、計算された索引を使用して拡張属性値を返すことができます。

casebean.setExtendedAttribute(n, v)

拡張属性(フラグ) Nの値を設定します。

userid = casebean.getExtendedAttributeModifiedBy(n)

拡張属性(フラグ) Nを最後に変更したユーザーのIDを取得します。

date = casebean.getExtendedAttributeModifiedDateTime(n)

拡張属性(フラグ) Nの最終変更のタイムスタンプを取得します。

sd = casebean.getSD()

アラートのソース・データをロードします。結果の構造については、「ソース・データ・オブジェクトのプロパティ」を参照してください。

casebean.save([dotrigger])

変更後にケースまたはアラートを保存します。dotriggerが省略されているか、trueの場合、更新トリガーを起動します。

8.1.3 ケース履歴Beanのプロパティ

トリガー・コールに渡されるケース履歴Beanには、次の読取り専用プロパティがあります:

プロパティ 説明

id

ケース履歴レコードの内部ID。

caseId

関連付けられたケースまたはアラートの内部ID。

sourceName

ソースの名前。

modifiedBy

変更を行ったユーザーのID。

modifiedDateTime

変更のタイムスタンプ。

attribute

属性名。

oldValue

前の値の内部形式。

newValue

新しい値の内部形式。

oldValue2

前の値の表示形式。

newValue2

前の値の表示形式

文字列値の場合、内部値と表示値は同じです。優先度属性の場合、内部値は数値で、表示形式は対応する優先度名です。ユーザーに関連付けられた属性の場合、内部形式はユーザーIDで、表示形式はユーザー表示名です。

8.1.4 ソース・データ・オブジェクトのプロパティ

getSD関数によって返されるソース・データ・オブジェクトには、次の読取り専用プロパティがあります:

プロパティ 説明

datasets

データ・セット(ソース)の配列。

storageTime

データ・ストレージのタイムスタンプ。

ソース・データセットは、内部ID (関係データの場合は数値文字列または"reln")と、ユーザー・インタフェースに表示されるラベルによって識別されます。ソース・データ・オブジェクトには、データセットおよび値を抽出するための次の関数があります:

関数 説明

dataset = dataset(id)

内部IDでデータセットを取得します。

dataset = datasetFromLabel(label)

UIラベルでデータセットを取得します。

values = values(dsid, itemid)

内部IDがdsidのデータセットおよび内部IDがitemidのアイテムの値を取得します。結果は、アラートに関連付けられたソース・レコードごとに1つの値を持つ配列です。

不明なIDまたはラベルが使用されると、関数はnullを返します。

各データセット・オブジェクトには、次の読取り専用プロパティがあります:

プロパティ 説明

id

データ・セットの内部ID。

label

データ・セットのUIラベル。

items

データ・アイテムの配列。

データセット内のデータ・アイテムは、内部ID (列名または関係属性)と、UIに表示されるラベルによっても識別されます。

データセット・オブジェクトには、データ・アイテムおよび値を抽出するための次の関数があります:

関数 説明

dataitem = item(id)

内部IDでデータ・アイテムを取得します。

dataitem = itemFromLabel(label)

UIラベルでデータ・アイテムを取得します。

values = values(itemid)

内部IDがitemidのアイテムの値を取得します。結果は、アラートに関連付けられたソース・レコードごとに1つの値を持つ配列です。

不明なIDまたはラベルが使用されると、関数はnullを返します。

各データ・アイテムには、次の読取り専用プロパティがあります:

プロパティ 説明

id

データ・アイテムの内部ID。

label

データ・アイテムのUIラベル。

values

アラートに関連付けられたソース・レコードごとに1つの値を持つアイテム値の配列。

アイテム値は、ソース・データの列タイプに応じて文字列、数値または日付として返されます。

8.2 ケース管理トリガー環境

すべてのトリガー関数コールの第3引数は、トリガー環境です。たとえば、ケース管理更新トリガーは、次のように定義されます:

function getPath() {
  return "/casemanagement/update/.*";
}
 
function run(path, id, env, casebean, history, comment) {
  ...
}

ケース管理トリガーの環境オブジェクトには、次の読取り専用プロパティが含まれます:

プロパティ 説明

sourceName

ソース名。

caseType

ケース・タイプ("case"または"issue")。

currentState

ケースまたはアラートの現在の状態。

origin

更新の起点。

userid

更新を行ったユーザーのID。

originプロパティは、更新の根本原因を識別します。次の値のうち1つを取ることができます。

プロパティ 説明

user

ケース管理UIでのユーザーによる変更。

api

REST APIコール。

bulk

一括更新。

expiry

自動状態失効による変更。

creator

ケースの作成。

import

ケースのインポート。

script

このスクリプト・ライブラリによって行われたコールで発生した変更。