ソースコードでアプリケーションをビルドする
使い慣れた開発ツールとプロセスを使用して、ソースコードでカスタムアプリケーションを作成および開発します。
ソースコードでの開発の概要
スコープ対象のアプリケーションを、ServiceNow AI Platform 上の ServiceNow IDE を使用してコード内で作成、または ServiceNow SDK を使用して Visual Studio Code デスクトップでローカルに作成できます。
どちらの開発環境でも、ドメイン固有のプログラミング言語である ServiceNow Fluent を使用して、アプリケーションを構成するメタデーターを定義します。ServiceNow Fluent には、さまざまなタイプのメタデータを定義するための API が含まれています。
ServiceNow IDE または ServiceNow SDK を使用して、JavaScript モジュールを作成し、アプリケーションのサードパーティライブラリを使用して、スコープ対象のアプリケーション内のスクリプトのコードの再利用を最適化することもできます。
ソースコードでアプリケーションを開発および管理すると、使い慣れた開発環境での作業、複雑なアプリケーションの作成と変更、ソースコントロールでの容易なコードの管理、ビルド時のエラーのキャッチが可能になります。
|
ServiceNow IDE |
ServiceNow IDE と ServiceNow SDK の比較
| 機能 | ServiceNow IDE | ServiceNow SDK |
|---|---|---|
| 開発環境 | オンライン ServiceNow インスタンス | ローカル開発とオフライン作業能力 |
| ユーザーインターフェイス | Visual Studio Code for the Web ベースの IDE | 1Visual Studio Code デスクトップ |
| コラボレーション | メタデータエクスプローラーから、コードまたは埋め込み ServiceNow AI Platform ユーザーインターフェイスでユーザーの変更をリアルタイムで表示します。 ソースコントロール内のアプリケーションで他の開発者と共同作業を行います。 |
インスタンスから変更をダウンロードし、 ServiceNow SDK CLI を使用してインスタンスにローカル変更をインストールし、他のユーザーとコラボレーションします。 ソースコントロール内のアプリケーションで他の開発者と共同作業を行います。 |
| ソースコントロール | 最も一般的な Git 機能と、選択した Git プロバイダーとの統合をサポートします。 インスタンス (または開発者サンドボックス) ごとに、リポジトリごとに 1 つの同時分岐。 |
フルサポート |
| アプリケーションの変換 | ServiceNow IDE または ServiceNow SDK で作成されていない既存のスコープ対象アプリケーションの変換をサポートします。 | ServiceNow IDE または ServiceNow SDK で作成されていない既存のスコープ対象のアプリケーションの変換をサポートします。 |
| ServiceNow Fluent | フルサポート ServiceNow Fluent言語サーバーはServiceNow IDEに含まれています。 |
フルサポート ServiceNow Fluent Language サーバーは、Visual Studio Code Extension Marketplace からインストールできます。 |
| JavaScript モジュールとサードパーティライブラリ | フルサポート | フルサポート |
| コード向け Now Assist | スクリプトのコードのオートコンプリートのサポート。 アクティブ化の詳細については、「 Now Assist for Code」を参照してください。 |
サポート対象外 |
| ビルドエージェント | フルサポート。ビルドエージェントには、 ServiceNow IDEのチャットパネルからアクセスします。 アクティブ化の詳細については、「 ../../build-agent/concept/build-agent.html」を参照してください。 |
サポート対象外 |
アプリケーションの構造
ServiceNow IDE または ServiceNow SDK で作成されたカスタムスコープ対象のアプリケーションには、ソースコードファイルとメタデータ XML ファイルが含まれます。package.json ファイルと now.config.json ファイルは、Node.js アプリケーションまたは Node Package Manager (npm) パッケージの構造に似たアプリケーション構造を定義します。
デフォルトでは、アプリケーションには次のディレクトリとファイルが含まれます。now.config.json ファイルで、アプリケーション構造の特定の要素をニーズに合わせて変更できます。
- .vscode
- 推奨される Visual Studio Code 拡張子を含むディレクトリ。
- dist
- パッケージ化用のビルドアーティファクトを含むディレクトリ。このディレクトリには、次のサブディレクトリが含まれています。
- app:ビルドされたメタデータ XML ファイルを含むディレクトリ。
- static:ビルドされた静的アセットファイルを含むディレクトリ。
- metadata
-
既存の ServiceNow アプリケーションと同じディレクトリ構造で編成された、テーブルスキーマやビジネスルールなどのアプリケーションのアプリケーションメタデータ (XML) を含むディレクトリ。
注:アプリケーションメタデータは、XML ファイルから編集しないでください。アプリケーションメタデータは、ソースコードまたは ServiceNow AI Platform で編集します。 - node_modules
- アプリケーションが依存するサードパーティ Node.js モジュールを含むディレクトリ。
- src
- アプリケーションのソースコードを含むディレクトリ。このディレクトリには、次のサブディレクトリが含まれています。
- client:ユーザーインターフェイスを開発するためのクライアント側ファイルを含むディレクトリ。
- fluent: .now.ts ファイル内のServiceNow Fluentコードを含むディレクトリ。生成されたサブディレクトリには、ServiceNow Fluentに変換されたアプリケーションファイルが含まれています。
- server: .js ファイルまたは .ts ファイルの JavaScript モジュールコードを含むディレクトリ。
- ターゲット
- インスタンスにアップロードするインストール可能なパッケージ (.zip ファイル) を含むディレクトリ。
- .eslintrc.json
- ESLint 構成を含むファイル。ESLint は、アプリケーションコードの問題を特定して修正するのに役立ちます。
- .gitignore
- Git が無視するディレクトリまたはファイルのリストを含むファイル。これらのファイルはソースコントロールで追跡されません。
- now.config.json
- ServiceNow アプリケーション構成を含むファイル。package.json ファイルは、アプリケーションのベースディレクトリに存在する必要があります。次のパラメーターを追加して、アプリケーションのディレクトリ構造を構成できます。たとえば、次のようになります。
{ "scope": "x_snc_example_app", "scopeId": "2f8400eb07426110f736e28f69d3017a", "name": "ExampleApp", "dependencies": { "global": { "tables": ["incident"], "roles": ["admin"], }, "x_custom": { "tables": ["custom_table"] } }, "metadataDir": "metadata", "fluentDir": "src/fluent", "generatedDir": "generated", "serverModulesDir": "src/server", "clientDir": "src/client", "appOutputDir": "dist/app", "staticContentDir": "dist/static", "packOutputDir": "target", "modulePaths": { "src/server/*.ts": "dist/server/*.js", }, "staticContentPaths": { "src/client/*.html": "dist/static/*.html", }, "ignoreTransformTableList": ["ua_table_licensing_config", "sys_embedded_help_role"], "taxonomy": { "mapping": { "sys_script": "scripts/server/rules", "custom_table": "my-custom-folder/my-nested-folder" }, "fallbackFolderName": "unclassified" } }表 : 1. サポートされている now.config.json パラメーター パラメーター 説明 依存関係 アプリケーションが依存する別のアプリケーションスコープ内のアイテム。アプリケーションスコープと依存関係タイプ、および名前またはsys_idsを指定する必要があります。 "dependencies": { "<scope>": { "<type>": ["<sys_id or name>"], ... }, ... }詳細については、「アプリケーションの依存関係 ServiceNow Fluent ダウンロード」を参照してください。
metadataDir アプリケーションのメタデータを XML ファイルとして含むディレクトリ。 デフォルト:metadata
fluentDir ソースコードでアプリケーションメタデータを定義する ServiceNow Fluent ファイル (.now.ts) を含むディレクトリ。 デフォルト:src/fluent
generatedDir ServiceNow Fluentコードに変換された既存のアプリケーションメタデータを含む、生成されたServiceNow Fluentファイルを含むディレクトリ。このディレクトリーは、 fluentDir パラメーターで定義されたディレクトリーに対する相対ディレクトリーです。 デフォルト: generated
serverModulesDir サーバー側スクリプトで使用するために JavaScript モジュールに組み込まれる JavaScript または TypeScript ファイルを含むディレクトリ。 デフォルト:src/server
clientDir React を使用してユーザーインターフェイスを開発するためのクライアント側ファイルを含むディレクトリ。 デフォルト: src/client
appOutputDir パッケージ化のためにビルドアーティファクトを出力するディレクトリ。pack コマンドと install コマンドは、このディレクトリを参照してアーティファクトをパッケージ化します。
デフォルト:dist/app
staticContentDir ユーザーインターフェイスの開発に使用する静的資産ファイルを出力するディレクトリ。 デフォルト: dist/static
packOutputDir アプリケーションのビルド時にインストール可能なパッケージ (.zip ファイル) を出力するディレクトリ。install コマンドは、このディレクトリを参照してパッケージをインストールします。 デフォルト:target
serverModulesIncludePatterns JavaScript モジュールをビルドするときに含めるファイルパターンのリスト。 Default (デフォルト):[ "**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.cts", "**/*.cjs", "**/*.mts", "**/*.mjs", "**/*.json" ]serverModulesExcludePatterns JavaScript モジュールをビルドするときに除外するファイルパターンのリスト。 Default (デフォルト):[ "**/*.test.ts", "**/*.test.js", "**/*.d.ts" ]モジュールパス アプリケーションをビルドする前にカスタムトランスパイルステップを使用する場合に備えて、モジュールソースファイルから同等の出力ファイルへのマップ。詳細については、「ServiceNow SDK で JavaScript モジュールの TypeScript を使用する」を参照してください。 警告:このパラメーターとtsconfigPathパラメーターは使用できません。両方を設定すると、エラーが発生します。staticContentPath 静的資産ファイルの出力パスに対するクライアント側のソースファイルのマップ。 tsconfigPath ビルドプロセス中に TypeScript を JavaScript にトランスパイルするためのカスタムオプションを含む tsconfig.json ファイルへのパス。 tsconfigPathを指定すると、tsconfig.json ファイルを使用して TypeScript から診断結果が生成されます。警告:このパラメーターとmodulePathsパラメーターは使用できません。両方を設定すると、エラーが発生します。デフォルト: 。
ignoreTransformTableList アプリケーションメタデータをソースコードに変換するときに無視するテーブルのリスト。 テーブル出力形式 ServiceNow Fluentコードから生成されたテーブルメタデータ XML のビルドアーティファクトのタイプ。 有効な値:- bootstrap:ビルドプロセスは、テーブルの
<database>ルート要素、フィールドラベル XML ファイル [sys_documentation]、ライセンス構成 XML ファイル [ua_table_licensing_config]、および自動番号付け XML ファイル [sys_number] を含むブートストラップ XML ファイルを出力します。 - component:ビルドプロセスは、テーブル API の各コンポーネントの XML ファイルを出力します。
デフォルト: bootstrap
分類 生成された ServiceNow Fluent ファイルを整理するための構成。テーブル名をディレクトリにマップし、フォールバックディレクトリを定義します。デフォルトの分類構成では、メタデータが最初にServiceNow Fluentコードに変換されるときに、ServiceNow標準テーブル分類を使用して、Fluent/生成されたディレクトリ内の論理ディレクトリ構造に生成されたServiceNow Fluentファイルを追加します。たとえば、次のようになります。 - ビジネスルール [sys_script] が fluent/generated/server-development/business-rule ディレクトリに追加されます。
- スクリプトインクルード [sys_script_include] が fluent/generated/server-development/script-include ディレクトリに追加されます。
デフォルトのマッピングを上書きすることも、追加のマッピングを設定することもできます。次の例では、構成はビジネスルール [sys_script] のデフォルトディレクトリーとフォールバックフォルダーを上書きし、カスタムテーブルのメタデータの追加マッピングを構成します。
"taxonomy": { "mapping": { "sys_script": "scripts/server/rules", "custom_table": "my-custom-folder/my-nested-folder" }, "fallbackFolderName": "unclassified" }- mapping:テーブル名をディレクトリにマップするオブジェクト。ディレクトリパスは、 generatedDir パラメーターで構成されたディレクトリからの相対パスであり、小文字の英字、数字、ハイフン、アンダースコア、および個別のサブディレクトリにスラッシュのみを含める必要があります。
- fallbackFolderName:デフォルトまたはカスタムマッピングが構成されていないテーブルに使用するディレクトリの名前。このディレクトリ内では、 ServiceNow Fluent ファイルがテーブルの名前にちなんで名付けられたサブディレクトリ ( src/fluent/generated/other/x-unmapped-table/ など) に追加されます。
デフォルト:デフォルトの分類マッピングは、すべての標準 ServiceNow テーブルに対して定義され、アプリケーションの
now.config.jsonでカスタム構成が定義されていない場合に自動的に適用されます。fallbackFolderName のデフォルト値は Other です。 - bootstrap:ビルドプロセスは、テーブルの
- now.prebuild.mjs
- 依存関係とそのバージョンに関する完全な情報を含む自動更新ファイル。このファイルは、ServiceNow SDK でのみ使用できます。
- package-lock.json
- 依存関係とそのバージョンに関する完全な情報を含む自動更新ファイル。このファイルは、ServiceNow SDK でのみ使用できます。
- package.json
-
アプリケーションとカスタムまたはサードパーティのモジュールの依存関係に関する情報を含むファイル。package.json ファイルは、アプリケーションのベースディレクトリに存在する必要があります。インスタンスでは、 package.json パスは、カスタムアプリケーションレコード [sys_app] の [JSON のパッケージ 化] フィールドに <scope>/<package-name>/<version>/package.json の形式で指定されます。
関連アプリケーションと機能
- JavaScript API
- アプリケーションの機能を変更したり、アプリケーションを作成したりする場合に記述するスクリプトで JavaScript API を使用します。