レコードアクセスの制限

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:4分
  • データベースクエリの前に実行されるクエリビジネスルールを使用して、ユーザーが特定のレコードにアクセスできないようにすることができます。

    警告:
    ここに記載されているカスタマイズは、特定のインスタンスで使用するために開発されたものであり、Now Support ではサポートされていません。この方法は現状のまま提供され、実装の前に完全にテストする必要があります。このカスタマイズに関するすべての質問およびコメントは、コミュニティフォーラムに投稿してください。

    インシデントレコードへのアクセスを制限するデフォルトのビジネスルールの以下の例を考慮してください。

    表 : 1. デフォルトのビジネスルールでのインシデントレコードへのアクセスの制限
    名前 テーブル 時期
    インシデントクエリ インシデント クエリ前

    レコードアクセスの制限

    次の例では、itil ロールを持ち、[ 問い合わせユーザー ] または [作成者 ] フィールドにリストされている場合を除き、ユーザーはインシデントレコードへのアクセスが制限されます。セルフサービスユーザーがインシデントのリストを開くと、自分が送信したインシデントのみが表示されます。
    if (!gs.hasRole("itil")&& 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);}
    注:
    ユーザーに表示されるレコードは、アクセス制御を使用して制限することもできます。詳細については、「Access Control List Rules」を参照してください。

    平日のスケジュールスクリプト

    タイプ:ビジネスルール/クライアントスクリプト。

    このスクリプトは平日のスクリプトをスケジュールします。「スクリプトをここに入力 (Your Script here)」と表示されている場所にスクリプトを挿入します。
    var go ='false';
    var now =new Date(); 
     
    // Correct time zone, which is by default GMT -7 
    now.setHours(now.getHours()+8);
    var day = now.getDay(); 
     
    // No go on Saturday or Sunday 
    if(day !=0&& day !=6){
     
    // (your script here)
     
    }

    現在の日付に基づく日付フィールドの設定

    このスクリプトは、現在の曜日に応じて日付フィールドを設定します。この例では、日が月曜日から水曜日の場合、日付は次の月曜日に設定されます。それ以外の場合は、日付フィールドは次の月曜日に設定されます。
    function setCabDate(){
    var today = new Date();
    var thisDay = today.getDay();
    
    //returns 0 for Sunday, 1 for Monday, through 6 for Saturday.
    var thisMon = new GlideDateTime();
    thisMon.setDisplayValue(gs.beginningOfThisWeek());
    var nextMon = thisMon.getNumericValue();
    nextMon +=(1000*60*60*24*7);
     
    if((thisDay <4)&&(thisDay >0))
      //if today is Mon thru Wed (thisDay = 1, 2, or 3), set cab to this coming Monday.
      current.u_req_cab_rev_date.setDateNumericValue(thisMon.getNumericValue());
    else if((thisDay >=4)||(thisDay ==0))
      //if today is Thurs thru Sun (thisDay = 4, 5, 6, or 0), set cab to next Monday.
      current.u_req_cab_rev_date.setDateNumericValue(nextMon);
    }

    すべての日付/時刻フィールドの入力を検証するために、検証スクリプトで以下を使用できます (システム定義 > 妥当性検証スクリプト) を開きます。このスクリプトでは日付/時刻形式がハードコードされているため、インスタンスの日付/時刻形式と一致する必要があります。インスタンスの日付/時刻形式が変更された場合は、検証スクリプトを更新する必要があります。

    検証スクリプトのタイプを [日付/時刻] に設定します。このようにすると、この検証スクリプトでユーザーが日付/時刻フィールドに誤った形式を入力した場合に、エラーメッセージを受け取ります。
    function validate(value){
    // empty fields are still valid dates 
    if(!value) 
        return true; 
     
    // We "should" have the global date format defined always defined. But there's always that edge case. 
    if(typeof g_user_date_time_format !=='undefined')
        return isDate(value, g_user_date_time_format); 
     
    // if we don't have that defined, we can always try guessing 
    return parseDate(value)!==null;}
    詳細については、「検証スクリプトのユースケース - 日時」を参照してください。