2016-11-21 38 views
0

現在、EESユーザーが自分の割り当てグループのインシデントを読み取ることができるようにする、「read_incident」という役割に取り組んでいます。Servicenow ACLとビジネスルールを使用してインシデントテーブルを読み取る

そのため、私は次のようでした:

  • は、グループに役割を割り当てられている「サービスデスク」
  • は、ユーザ「デニス」を作成し、「サービスに彼を追加役割「read_incident」
  • を作成デスク "グループ
  • 質問のインシデントを読み取るために" read_incident "ロールを追加するために追加条件を使用してビジネスルールを変更しました。 (今、あなたはどちらか、「ITIL役割」、またはインシデントを読むために「read_incident」的な役割を持っている。
  • 割り当てグループは、私のグループの一つである場合にインシデントを読み取るために、動的フィルタとACLを作成した。今

adminとして私はすべてのインシデントを見ることができますが、私が "Denis"を偽装すると、インシデントリストは報告します次の "表示するレコードがありません"

それで、私がインシデントを読むことを妨げるものは何もありませんが、何とかデータマッチがありません。 新しいインシデントを作成してそれを "サービスデスク"に割り当てようとしましたが、この事象はユーザー "Denis"には表示されません。私が今まで知っている何

: - なし「のデータがブロックされていない」ので、ビジネスルールは、100%の作業である - 私は、インシデントテーブルを照会することができます

ビジネスルール:

if (!gs.hasRole("itil").addOrCondition(!gs.hasRole("read_incident") && gs.isInteractive()) { 
    var u = gs.getUserID(); 
    var qc = current.addQuery("caller_id", u).addOrCondition("opened_by", u).addOrCondition("watch_list", "CONTAINS", u); 
    gs.print("query restricted to user: " + u); 
} 
+0

ビジネスルールのスクリプトを提供できますか? – Joey

+0

こんにちはジョーイ、確かに、私のルールを追加しました。 – RayofCommand

答えて

2

あなたのビジネスルールが正しくない:gs.hasRole()メソッドがtrueまたはfalseを返した場合、メソッドaddOrCondition()を使用できません。 にもエラーがあります。文の場合は、条件の最後に別の ")"が必要です。

次のことを試してみてください。

ビジネスルール条件

(!gs.hasRole("itil") || !gs.hasRole("read_incident")) && gs.isInteractive() 

スクリプト

(function executeRule(current, previous /*null when async*/) { 

    var u = gs.getUserID(); 
    current.addQuery("caller_id", u).addOrCondition("opened_by", u).addOrCondition("watch_list", "CONTAINS", u); 

})(current, previous); 

パフォーマンスが向上し、可能な場合は[条件]フィールドを使用することをお勧めします。私は、ビジネスルールスクリプトがあなたのニーズを満たしているかどうかわからない、私はあなたが現在のassignment_groupのメンバーであるかどうかチェックするべきだと思う?

+0

うん、あなたは正しい、今それは動作します。 – RayofCommand

関連する問題