0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

チケットのリアルタイムなデータをポータル画面で表示する方法

Posted at

1.手順概要

【前提】
 レコードプロデューサーは作成済みであること。
 ポータル画面以外での登録および更新ができること。
 ポータル画面以外で更新したデータをポータル画面で再度表示させる必要があること。

  1. ポータル画面のURLに以下のパラメータを追加する
    ・case_sysid:チケットのSysID
    ・table_name:チケットのデータテーブル名
  2. ポータル画面上で以下の処理を行うウィジェットを作成する
    ・URLから各パラメータを取得する
    ・取得したパラメータからチケットデータを取得する
    ・取得したチケットデータを各変数にセットする
  3. レコードプロデューサーに、変数として作成したウィジェットを配置する

2.URLにパラメータを追加する

以下のチケット登録画面のURLは、

https://<インスタンスID>.service-now.com/csm?id=sc_cat_item&sys_id=<レコードプロデューサーSysID>

であり、このURLにパラメータを追加する。
image.png
[case_sysid]、[table_name]のパラメータを追加すると、以下のURLとなる。

https://<インスタンスID>.service-now.com/csm?id=sc_cat_item&sys_id=<レコードプロデューサーSysID>&case_sysid=<チケットのSysID>&table_name=<チケットのデータテーブル名>

このURLで画面にアクセスします。

3.ウィジェットを作成

URLパラメータの取得は、サーバースクリプトにて以下で行う。

$sp.getParameter("<パラメータ名>")

パラメータを取得すれば、テーブルデータは取得できるため、取得したデータを[data]オブジェクトに格納し、クライアントサイドで値セットが可能となる。

上記から、以下のようなスクリプトを作成できる。

Server script
(function(data) {
    // URLパラメータを取得する
    var case_sysid = $sp.getParameter("case_sysid");
    var table_name = $sp.getParameter("table_name");
    var cat_item = $sp.getParameter("sys_id");

    // テーブルの値を取得する
    var caserecord = new GlideRecord(table_name);
    if (caserecord.isValid() && caserecord.get(case_sysid)) {

        // レコードプロデューサーで定義している変数を取得する(テーブルとマッピングしているもののみ)
        var grFields = new GlideRecord('item_option_new');
        grFields.addQuery('cat_item', cat_item);
        grFields.addQuery('map_to_field', true);
        grFields.query();

        // クライアントスクリプトで使用したいデータをセットする
        data.case_sysid = case_sysid;
        data.table_name = table_name;
        data.fields = {};
        data.variables = [];
        while (grFields.next()) {
            var varName = grFields.getValue("name");
            var colName = grFields.getValue("field");
            data.fields[varName] = caserecord.getValue(colName);
        }
    }
})(data);
Client controller
function($scope, spUtil, $uibModal, $location, $window) {
    var c = this;

    // 値セット
    for (var key in c.data.fields) {
        $scope.page.g_form.setValue(key, c.data.fields[key]);
    }
}

4.レコードプロデューサーにウィジェットを配置

以下の画像のように変数を作成し、ウィジェットを定義する。
image.png

5.確認

UI16側でデータを作成する。
image.png

作成したURLにアクセスする。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?