8 ケース管理スクリプトの使用
この章のトピックは、次のとおりです:
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]) |
ケース/アラートの割当済ユーザーを更新します。ユーザー・オブジェクトは、ユーザー・キャッシュ・ライブラリ・メソッドから取得されます。 |
bean = casemanager.updateCase(bean, [dotrigger]) |
ケースまたはアラートへの変更を保存します。 |
bean = casemanager.updateState(bean, transition, comment, permission, [dotrigger]) |
ケースまたはアラートの現在の状態を更新します。 |
bean = casemanager.addComment(bean, comment, restrictingpermission, [dotrigger]) |
ケースまたはアラートにコメントを追加します。 |
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の値を取得します。 |
casebean.setExtendedAttribute(n, v) |
拡張属性(フラグ) Nの値を設定します。 |
userid = casebean.getExtendedAttributeModifiedBy(n) |
拡張属性(フラグ) Nを最後に変更したユーザーのIDを取得します。 |
date = casebean.getExtendedAttributeModifiedDateTime(n) |
拡張属性(フラグ) Nの最終変更のタイムスタンプを取得します。 |
sd = casebean.getSD() |
アラートのソース・データをロードします。結果の構造については、「ソース・データ・オブジェクトのプロパティ」を参照してください。 |
casebean.save([dotrigger]) |
変更後にケースまたはアラートを保存します。 |
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が |
不明なIDまたはラベルが使用されると、関数はnullを返します。
各データセット・オブジェクトには、次の読取り専用プロパティがあります:
プロパティ | 説明 |
---|---|
id |
データ・セットの内部ID。 |
label |
データ・セットのUIラベル。 |
items |
データ・アイテムの配列。 |
データセット内のデータ・アイテムは、内部ID (列名または関係属性)と、UIに表示されるラベルによっても識別されます。
データセット・オブジェクトには、データ・アイテムおよび値を抽出するための次の関数があります:
関数 | 説明 |
---|---|
dataitem = item(id) |
内部IDでデータ・アイテムを取得します。 |
dataitem = itemFromLabel(label) |
UIラベルでデータ・アイテムを取得します。 |
values = values(itemid) |
内部IDが |
不明な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 |
このスクリプト・ライブラリによって行われたコールで発生した変更。 |