カスタムステップモジュールの編集
カスタムステップのモジュール
カスタムステップを使うと、フローシーケンスの任意の場所にカスタム機能を追加できます。
特化したタスクをデータハブ内で実行するには、カスタムステップモジュールを呼び出すカスタムステップを作成します。QuickStartによるカスタムステップの設定あるいはGradleタスクhubCreateStepDefinitionによって作成されたカスタムステップモジュールには、モジュールを構築していくための指示が含まれています。
必要なインプット
- コンテンツオブジェクト。処理対象となるものすべてを含んだオブジェクト。任意の
Content
オブジェクトの配列(各ドキュメントあるいはレコードごと)。 それぞれのContent
オブジェクトは以下のものから構成されています。content.uri
。処理対象となるドキュメントあるいはレコードのURI。content.context
。ドキュメントあるいはレコードに関連付けられたあらゆるメタデータ(データベース内に存在するがエンベロープ内には含まれていないもの)。例:パーミッション、コレクションタグ、テンポラル(時間)設定。content.value
。カスタムモジュール内で処理される情報。
- Optionsオブジェクト。ステップに渡されるパラメータ(JSONのキー/バリューパラメータ)であるカスタムオブジェクト。
必要な出力
ステップのタイプ | 必要な出力 |
---|---|
カスタム - 読み込み | Content オブジェクト。 |
|
Content オブジェクトあるいはContent オブジェクトの配列。 |
Content
オブジェクトにはデータベースに書き込まれる処理済みのデータが含まれ、以下のものから構成されています。content.uri
。データベース内で上書きあるいは作成されるドキュメントやレコードのURI。ドキュメントがまだ存在していない場合、このURIは一意的なものとなります。それ以外の場合は、同じURIの昔のデータは上書きされ、その変更は出自データに記録されます。content.context
。ドキュメントあるいはレコードに関連付けられたすべてのメタデータ。content.value
。データベース内に格納される情報。content.provenance
。(オプション)格納される追加のプロパティレベルの出自情報(出自のレベルがfine
になっている場合)。
カスタムステップにおける出自
デフォルトのドキュメントレベルの出自情報に加えて、プロパティレベルの出自情報をトラッキングできます。詳細は、「手作業による出自の粒度の設定」を参照してください。
カスタムステップで、どのプロパティレベルの出自情報をトラッキングするのかも指定できます。以下のように行います。
- カスタムモジュールが返した
Content
オブジェクトには、content.provenance
コンポーネントが必要です。 content.provenance
には、トラッキングしたいプロパティとその値が必要です。content.provenance
の値は、以下の形式になっている必要があります。データハブは、これをthe PROV-XMLスキーマに変換してからJOBSデータベースに格納します。{ "<originalURI>": { "<originalXPathOrPropertyName>": { "destination": "<XPathOrPropertyInNewDocument>", "value": "<newValue>" } } }
例1:lastName
プロパティをsurName
プロパティにマッピングした場合、content.provenance
を以下のように設定できます。
{
"/26451baa-fe14-471f-bd77-364ac3f64c82.json": {
"lastName": {
"destination": "surName",
"value": "Smith"
}
}
}
例2:カスタムモジュールにおいて複数のドキュメントからの情報を1つにまとめている場合、これらのソースドキュメントの出自情報をcontent.provenance
に1つにまとめることができます。
{
"/26451baa-fe14-471f-bd77-364ac3f64c82.json": {
"lastName": {
"destination": "surName",
"value": "Smith"
}
},
"/5455fd37-6d96-4883-9349-8e79fa700145.json": {
"firstName": {
"destination": "givenName",
"value": "John"
}
}
}
content.provenance
が、カスタムモジュールが返したContent
オブジェクト内に存在せず、ステップの粒度がfine
に設定されている場合、デフォルトであるドキュメントレベルの出自情報のみがトラッキングされます(coarse
の場合も同様です)。エラーはスローされません。ベストプラクティス
- カスタムモジュールはXQueryでもコーディング可能ですが、MarkLogicはJavaScriptの使用を推奨します。
DataHub
オブジェクトを使用してください。これによりデータハブライブラリにアクセス可能になります。例えば、DataHub
オブジェクトにより、XML/JSONドキュメントの周りにエンベロープを生成できます。- エラー処理の方法は2つあります。
- オーケストレーションアプリケーション(Nifiなど)を使用している場合:
- モジュール内でエラーをスローできます。スローされたエラーはすべて、オーケストレーションツールに返されます。この際、失敗したドキュメントのURIと一緒に記録されます。
- 他のステップ(これは別のフロー内にある場合もあります)において、特定のエラーが発生したドキュメントに関するオーケストレーションログを検索し、適宜修正します。
- エラーをスローしない場合:
- 失敗したドキュメントに特別なコレクションタグを付けます。
- 他のステップで、このコレクションタグが付いたドキュメントを検索し、適宜修正します。
- オーケストレーションアプリケーション(Nifiなど)を使用している場合: