ServiceNow Fluent 言語構成
ServiceNow Fluent 言語構成は、 ServiceNow Fluent API を使用してソースコードで開発するための追加機能を提供します。
Now.ID
Now.ID コンストラクトは、ソースコードで定義されたメタデータに対して、人間が判読できる一意の ID を指定するために使用されます。Now.ID では、ServiceNow Fluent API の Now.ID['String' または Number] という形式を $id プロパティとともに使用します。アプリケーションをビルドすると、ID は一意のsys_idにハッシュされます。
Now.ID はメタデータの ID を定義する場合にのみ使用でき、アプリケーション内の他のメタデータを参照するためには使用できません。同じアプリケーション内の他のメタデータを参照するには、オブジェクトを const 変数に割り当て、他のオブジェクトの変数識別子を参照します。
import { Role } from "@servicenow/sdk/core"
const managerRole = Role({
$id: Now.ID['manager_role'],
name: 'x_snc_example.manager'
})
Record({
table: 'some_table',
data: {
role: managerRole //"role" is a reference field to sys_user_role
}
})
Now.ref
Now.ref 構成は、ソースコードで定義されていない別のアプリケーションのメタデータを参照するために使用されます。Now.ref は、ServiceNow Fluent API の参照プロパティとともに Now.ref['table', 'sys_id' or {column: 'value'}, {column: 'value'}] という形式を使用します。
import { Role } from "@servicenow/sdk/core"
Role({
name: 'x_test.admin',
contains_roles: [
'x_test.manager',
Now.ref('sys_user_role', { name: 'x_test.itil' }), // Coalescing ID reference
Now.ref('sys_user_role', '${itomId}'), // GUID-based reference
Now.ref('sys_user_role', '3D82d1a88947942a90b6d8aa25126d439b', { name: 'x_test.csm' }), // GUID with coalescing ID reference
],
})
Now.include
Now.include 構成は、コンテンツをインラインで含めるのではなく、同じアプリケーション内の別のファイルのテキストコンテンツを参照するために使用されます。Now.include は、ServiceNow Fluent API の任意のプロパティとともに Now.include('./path/to/file') 形式の相対ファイルパスを使用します。Now.include を使用すると、ファイルタイプに適した構文ハイライトを使用してコーディングでき、JavaScript、HTML、CSS などの他の言語をサポートするプロパティで特に役立ちます。
Now.include は双方向同期をサポートしているため、他の ServiceNow AI Platform ユーザーインターフェイスからのフィールドへの変更は参照先ファイルのソースコードに同期され、ソースコードへの変更はインスタンス全体のメタデータに同期されます。
import { ScriptInclude } from '@servicenow/sdk/core'
ScriptInclude({
$id: Now.ID['my-script-include'],
name: 'MyScriptInclude',
active: true,
apiName: 'x_scriptincludes.MyScriptInclude',
script: Now.include('./MyScriptInclude.server.js') //The actual content of the "script" field is contained in the file specified
})
Now.attach
Now.attach 構成は、同じアプリケーション内の画像ファイルを参照し、ソースコードで定義されたメタデータに関連付けられたレコードにそのファイルを添付するために使用されます。Now.attach は、ServiceNow Fluent API のユーザー画像 (user_imageフィールドタイプ) をサポートするプロパティとともに、Now.attach('./path/to/file') 形式の相対ファイルパスを使用します。Now.attach は、 .jpg、 .jpeg、 .png、 .gif、 .bmp、 .ico、 .svg のファイル形式をサポートしています。
Now.attach は双方向同期をサポートしているため、他の ServiceNow AI Platform ユーザーインターフェイスから画像ファイルへの変更はソースコード内のアプリケーションに同期され、ソースコード内の画像ファイルへの変更はインスタンス全体のメタデータに同期されます。
import { Record } from '@servicenow/sdk/core'
Record({
$id: Now.ID['sample-service-portal'],
table: 'sp_portal',
data: {
title: 'Sample Portal',
url_suffix: 'sample',
icon: Now.attach('../../assets/servicenow.jpg')
}
})
Now.attach コンストラクトを const 変数に割り当て、他のプロパティで変数識別子を参照することで、アプリケーションで画像を再利用することもできます。たとえば、次のようになります:
import { Record } from '@servicenow/sdk/core'
const image = Now.attach('../../assets/servicenow.jpg')
Record({
$id: Now.ID['test'],
table: 'sp_portal',
data: {
title: 'Test Portal',
url_suffix: 'test',
icon: image,
logo: image,
}
})