オブジェクトの状態の同期化
オブジェクトを別の組織に移行する場合に、オブジェクトの状態とランタイム属性を組織間で同期化するには、fetchStateリソースとloadStateリソースを使用します。
例えば、シーケンスジェネレータトランスフォーメーションを含むマッピングタスクのNEXTVALの値が組織Aでは3270だったのに、同じタスクを組織Bに移行したら0になったとします。このような場合に、組織Aと組織BのNEXTVALの値がどちらも3270になるようにタスクの状態を組織間で同期化するには、fetchStateリソースとloadStateリソースを使用してNEXTVALの値を同期化します。これにより、シーケンス番号を維持したままこのタスクを組織Bで実行できるようになります。
fetchStateとloadStateの呼び出し回数の上限は1日あたり100回です。
オブジェクトの状態を同期化するプロセスは、オブジェクトを移行するプロセスに似ています。オブジェクトの状態を同期化するには、fetchStateリソースを使用してソース組織で状態を取得し、loadStateリソースを使用してターゲット組織にロードします。
fetchState
このリソースをloadStateリソースとともに使用して、オブジェクトの状態を組織間で同期化します。
fetchStateリソースを使用してオブジェクトの状態パッケージを作成し、loadStateリソースを使用してそれを他の組織にアップロードします。
オブジェクトの状態パッケージの作成には、アセットをエクスポートするプロセスと同様に、一連の要求および応答が含まれます。最終的な結果は、他の組織にロードするオブジェクトの状態を含むZIPファイルとなります。オブジェクトの状態パッケージを作成するには、次のタスクを実行します。
- 1lookup GET要求を送信して、状態を同期化するオブジェクトのオブジェクトIDを取得します。
Informatica Intelligent Cloud ServicesでオブジェクトIDを返します。
- 2lookupの応答で返されたオブジェクトIDを使用してfetchState POST要求を送信して、ジョブを開始します。
Informatica Intelligent Cloud ServicesからfetchStateジョブのジョブIDが返されます。
- 3オブジェクトの状態パッケージのfetchStateジョブIDを使用してfetchState GET要求を送信して、ジョブのステータスを取得します。
Informatica Intelligent Cloud Servicesで、ジョブIDとステータスを返します。この応答には、パッケージ内のオブジェクトIDおよび関連するオブジェクトの状態のリストが含まれることもあります。
- 4fetchState GET要求を送信して、パッケージをダウンロードします。
Informatica Intelligent Cloud ServicesからパッケージがZIPファイル形式で返されます。
オブジェクトの状態パッケージでは、状態情報がオブジェクトごとのJSONファイルに含まれています。ファイル名の形式は次のとおりです。
<task name>.<task type>.runtime.json
例えば、mt_MappingTask106.MTT.runtime.jsonという名前のファイルには次のようなデータが含まれていると考えられます。
{
"taskRun" : {
"lastRuntime" : "2018-12-13T09:05:17.000Z"
},
"taskStateVariables" : [ {
"category" : "TX_VARIABLE",
"name" : "Sequence",
"value" : "26908"
} ]
}
オブジェクトの状態ファイルでは、以下の属性を必要に応じて変更できます。
- •taskRunオブジェクトのlastRuntime
- •taskStateVariablesオブジェクトのvalue(マッピングタスクの場合のみ)
パッケージ内のファイルにその他の変更を加えると、予期しない動作やエラーが発生する可能性があります。
fetchStateジョブの開始
POST要求を使用してfetchStateジョブを開始します。
POST要求
ジョブを開始するには、次のURIを使用します。
/public/core/v3/fetchState
要求に次のフィールドを含めます。
フィールド | タイプ | 必須 | 説明 |
---|
name | String | | fetchStateジョブの名前。空白の場合はデフォルトでjob-<currentTimeInMilliseconds>になります。 |
objects | Collection<複合型> | はい | オブジェクトの状態パッケージに状態を含めるオブジェクトID。 注: 1つのパッケージに含めるオブジェクトは1000個以内にすることをお勧めします。 |
id | String | ○ | objectsオブジェクトに含まれます。 状態を要求するオブジェクトのグローバル一意識別子。これは、プロジェクト、フォルダ、またはアセットのIDです。 |
includeDependencies | Boolean | | objectsオブジェクトに含まれます。 依存オブジェクトの状態を含めるかどうかを決定します。 デフォルトはTrueです。 |
POST要求の例
次の例のような要求を使用できます。
POST <baseApiUrl>/public/core/v3/fetchstate
Content-Type: application/json
Accept: application/json
INFA-SESSION-ID: <sessionId>
{
"name" : "fetchStateJob1",
"objects" : [
{
"id": "l7bgB85m5oGiXObDxwnvK9",
"includeDependencies" : true
},
{
"id": "1MW0GDAE1sFgnvWkvom7mK",
"includeDependencies" : false
},
{
"id": "iIVBNZSpUKFg4N6g2PKUox"
}
]
}
POST応答
成功した場合、fetchStateジョブの次の情報が返されます。
フィールド | タイプ | 説明 |
---|
id | String | fetchStateジョブのID。 |
createTime | String | オブジェクトの状態パッケージが作成された時刻。 |
updateTime | String | オブジェクトの状態パッケージの最終更新時刻。 |
name | String | fetchStateジョブの名前。 |
startTime | String | fetchStateジョブが開始された時刻。 |
endTime | String | fetchStateジョブが終了した時刻。 |
status | 複合型 | ジョブのステータス。 |
state | String | ステータスのオブジェクトで返されます。 「実行中」、「成功」、「失敗」など、fetchStateジョブのステータス。 |
message | String | ステータスのオブジェクトで返されます。 ジョブのステータスメッセージ。 |
objects | Collection | オブジェクトおよびオブジェクトレベルのステータスのコレクション。空白の場合、NULLを返します。 |
POST応答の例
成功した場合、次の例のような応答を受信します。
{
"id": "7evG9CokA1whk8ehF3opKM",
"createTime": "2018-10-26T08:15:48.502Z",
"updateTime": "2018-10-26T08:15:48.502Z",
"name": "fetchStateJob1",
"startTime": "2018-10-26T08:15:48.501Z",
"endTime": null,
"status": {
"state": "IN_PROGRESS",
"message": "In Progress"
},
"objects": null
}
エラーを受信した場合、次の例のような応答が表示されます。
{
"error": {
"code": "MigrationSvc_034",
"message": "User does not have required permissions.",
"requestId": "2ataXVlgw3ydI1Yb2MA4sq"
}
}
fetchStateジョブのステータスの取得
GET要求を使用して、fetchStateジョブのステータスを取得します。
GET要求
fetchStateジョブのステータスを取得するには、次のいずれかのURIを使用します。
- •fetchStateジョブのステータスを受け取るには、次のURIを使用します。<id>はfetchStateジョブのIDです。
/public/core/v3/fetchState/<job id>
- •fetchStateジョブ内の各オブジェクトの状態のステータスを受け取るには、次のURIを使用します。
/public/core/v3/fetchState/<job id>?expand=objects
状態がSUCCESSFULになるまで要求のポーリングを継続します。
GET応答
ステータスを要求すると、次のようなステータス情報が返されます。
フィールド | タイプ | 説明 |
---|
id | String | fetchStateジョブのID。 |
createTime | String | fetchStateジョブが作成された時刻。 |
updateTime | String | fetchStateジョブの最終更新時刻。 |
name | String | fetchStateジョブの名前。 |
startTime | String | fetchStateジョブの開始時刻。 |
endTime | String | fetchStateジョブの終了時刻。 |
status | 複合型 | fetchStateジョブのステータス。 |
state | String | ステータスのオブジェクトで返されます。 「実行中」、「成功」、「失敗」など、fetchStateジョブの状態。 |
message | String | ステータスのオブジェクトで返されます。 ジョブのステータスメッセージ。 |
objects | Collection | fetchStateジョブのオブジェクト。URIに?expand=objectsが含まれる場合に返されます。 |
id | String | objectsオブジェクトで返されます。 要求されたオブジェクトのグローバル一意識別子。 |
name | String | objectsオブジェクトで返されます。 オブジェクト名。 |
path | String | objectsオブジェクトで返されます。 オブジェクトの完全なパス。 |
description | String | objectsオブジェクトで返されます。 オブジェクトの説明。 |
status | 複合型 | objectsオブジェクトで返されます。 オブジェクトのステータス。 |
state | String | objects.statusオブジェクトで返されます。 「実行中」、「成功」、「失敗」、「スキップ」など、オブジェクトのステータス。 |
message | String | objects.statusオブジェクトで返されます。 オブジェクトのステータスメッセージ。 |
GET応答の例
fetchStateジョブのステータスに対する要求が成功すると、次の例のような応答を受け取ります。
{
"id": "7evG9CokA1whk8ehF3opKM",
"createTime": "2018-10-26T08:15:48.502Z",
"updateTime": "2018-10-26T08:15:48.502Z",
"name": "fetchStateJob1",
"startTime": "2018-10-26T08:15:48.501Z",
"endTime": "2018-10-26T08:15:49.501Z",
"status": {
"state": "SUCCESSFUL",
"message": "Export completed successfully."
},
"objects": null
}
要求に個々のオブジェクトのステータスが含まれていた場合、成功時の応答は次の例のようになります。
{
"id": "7evG9CokA1whk8ehF3opKM",
"createTime": "2017-10-26T08:15:49.000Z",
"updateTime": "2017-10-26T08:15:50.000Z",
"name": "fetchStateJob1",
"startTime": "2018-10-26T08:15:49.000Z",
"endTime": "2018-10-26T08:15:50.000Z",
"status": {
"state": "SUCCESSFUL",
"message": "Export completed successfully."
},
"objects": [
{
"id": "1YmwRT083ZtfO04mUABaGF",
"name": "Mapping1",
"path": "/Mappings",
"type": "DTEMPLATE",
"description": "",
"status": {
"state": "SKIPPED",
"message": null
}
},
{
"id": "46MhQv9oxrgbOD6qtosF8t",
"name": "MappingTask1",
"path": "/Tasks",
"type": "MTT",
"description": "",
"status": {
"state": "SUCCESSFUL",
"message": null
}
},
{
"id": "7rM2ll1YjWYgHz4xiqRQO3",
"name": "Default",
"path": "/",
"type": "Project",
"description": "Auto-generated Default Project",
"status": {
"state": "SKIPPED",
"message": null
}
},
{
"id": "8suj2pxCujqh5Vtmv0DsyP",
"name": "Destination",
"path": "null",
"type": "Connection",
"description": "Dst Connection",
"status": {
"state": "SKIPPED",
"message": null
}
},
{
"id": "cpnxnIQMIYvkDOemLhFJ2q",
"name": "03",
"path": null,
"type": "AgentGroup",
"description": null,
"status": {
"state": "SKIPPED",
"message": null
}
},
{
"id": "gJvuKZZuBifk9MfZFxtPAb",
"name": "Source",
"path": null,
"type": "Connection",
"description": "Src Connection",
"status": {
"state": "SKIPPED",
"message": null
}
}
]
}
オブジェクトの状態パッケージのダウンロード
GET要求を使用して、オブジェクトの状態パッケージをダウンロードします。
GET要求
オブジェクトの状態パッケージをダウンロードするには、次のURIを使用します。
/public/core/v3/fetchState/<id>/package
<id>はfetchStateジョブのIDです。
GET応答
正常に完了すると、応答本文でZIPストリームを受け取ります。応答のタイプはapplication/zipです。
失敗すると、次の例のような応答を受け取ります。
{
"error": {
"code": "MigrationSvc_017",
"message": "Export request with identifier [6GnKs0tkLHdE6Hpd5nsWD] doesnt exist.",
"debugMessage": "Export request with identifier [6GnKs0tkLHdE6Hpd5nsWD] doesnt exist.",
"requestId": "0FrZZzXiEoafqCZUPqJsYd"
}
}
loadState
このリソースをfetchStateリソースとともに使用して、オブジェクトの状態を複数の組織の間で同期化します。
オブジェクトの状態のロードには、一連の要求および応答が含まれます。組織に状態をロードするには、次のタスクを実行します。
- 1loadState POST要求を送信して、ZIPファイルをアップロードします。
Informatica Intelligent Cloud ServicesからloadStateジョブのジョブIDが返されます。
- 2loadState POST要求を送信して、オブジェクトの状態をロードします。この要求には、loadStateジョブのジョブIDと、ロードする状態に関連付けられているオブジェクトIDのリストを含めます。
Informatica Intelligent Cloud Servicesから、「実行中」や「成功」などのジョブステータスか、エラーメッセージが返されます。また、応答にはオブジェクトの状態パッケージを作成した組織のソース組織IDも含まれます。
- 3loadState GET要求を送信して、ジョブのステータスを取得します。また、ステータスをオブジェクトレベルで要求することも可能です。
Informatica Intelligent Cloud Servicesから、ジョブのステータスと、パッケージ内の各オブジェクトのステータス(要求した場合)が返されます。
オブジェクトの状態パッケージのアップロード
POST要求を使用して、オブジェクトの状態パッケージをアップロードします。
POST要求
オブジェクトの状態パッケージをアップロードするには、次のURIを使用します。
/public/core/v3/loadState/package
Content-Typeの場合、次を使用します。
multipart/form-data
要求本文には、packageの名前の部分を含めます。そのコンテンツでは、アップロードするオブジェクトの状態ZIPファイルを使用します。
POST応答
成功した場合、loadStateジョブの次の情報が返されます。
フィールド | タイプ | 説明 |
---|
jobId | String | loadStateジョブのID。 |
jobStatus | Collection | パッケージのアップロードステータス。 |
state | String | ステータスのオブジェクトで返されます。 「実行中」、「成功」、「失敗」など、loadStateジョブのステータス。 |
message | String | ステータスのオブジェクトで返されます。 ジョブのステータスメッセージ。 |
checksumValid | Boolean | オブジェクトの状態パッケージのチェックサムが有効かどうかを示します。 |
POST応答の例
次の例のような応答を受信します。
{
"jobId": "hUV9Uq1cKYtf8niqF09CWC",
"jobStatus": {
"state": "NOT_STARTED",
"message": null
},
"checksumValid": true
}
loadStateジョブの開始
POST要求を使用して、loadStateジョブを指定して開始します。
POST要求
オブジェクトを指定してloadStateジョブを開始するには、次のURIを使用します。
/public/core/v3/loadState/<id>
<id>は、オブジェクトの状態パッケージのアップロードのPOST応答で受信されるloadStateジョブのIDです。
要求に次のフィールドを含めます。
フィールド | タイプ | 必須 | 説明 |
---|
name | String | | loadStateジョブの名前。 デフォルトの名前はjob-<currentTimeInMilliseconds>です。 |
importSpecification | 複合型 | | 含めるオブジェクトを指定するために使用します。 |
includeObjects | Collection<String> | | importSpecificationオブジェクトに含まれます。 ロードするオブジェクトです。 指定しない場合、オブジェクトの状態パッケージのすべての状態が含まれます。 指定したオブジェクトがプロジェクトの場合、そのプロジェクトに属するすべてのオブジェクトとすべての依存オブジェクトの状態が含まれます。 |
objectSpecification | Collection<複合型> | | importSpecificationオブジェクトに含まれます。 オブジェクトのプロパティを指定します。 |
sourceObjectId | String | ○ | objectSpecificationオブジェクトに含まれます。 オブジェクトの状態パッケージファイルのコンテナIDです。 objectSpecificationが存在する場合は必須です。 |
targetObjectId | String | ○ | objectSpecificationオブジェクトに含まれます。 コンテナ間マッピングに使用されます。 objectSpecificationが存在する場合は必須です。 |
POST要求の例
次の例のような要求を使用できます。
POST <baseApiUrl>/public/core/v3/loadState/2oZb7vFI2QQg4ncd4AyCGn HTTP/1.0
Content-Type: application/json
Accept: application/json
INFA-SESSION-ID: <sessionId>
{
"name" : "stateImportJob",
"importSpecification" : {
"includeObjects" : ["iIVBNZSpUKFg4N6g2PKUox","ejZY66c19YUccBdbGwKG4P"],
"objectSpecification" : [{
"sourceObjectId" : "iIVBNZSpUKFg4N6g2PKUox"
},
{
"sourceObjectId" : "5FA0DnMzeuDbYZnn3hdto9",
"targetObjectId" : "5KgUiEkW95NkjLRRefWKiG"
}]
}
}
POST応答
成功した場合、loadStateジョブの次の情報が返されます。
フィールド | タイプ | 説明 |
---|
Id | String | loadStateジョブのID。 |
createTime | String | loadStateジョブが作成された時刻。 |
updateTime | String | loadStateジョブの最終更新時刻。 |
name | String | loadStateジョブの名前。 |
startTime | String | loadStateジョブの開始時刻。 |
endTime | String | loadStateジョブの終了時刻。 |
status | Collection | パッケージのアップロードステータス。 |
state | String | ステータスのオブジェクトで返されます。 「実行中」、「成功」、「失敗」、「スキップ」など、個々のオブジェクトのロード状態。 |
message | String | ステータスのオブジェクトで返されます。 ジョブのステータスメッセージ。 |
objects | Collection | loadStateジョブに含まれるオブジェクトと、オブジェクトレベルのステータス。 |
sourceOrgId | String | オブジェクトの状態パッケージを作成した組織の組織ID。 |
checksumValid | Boolean | インポートパッケージのチェックサムが有効かどうかを示します。 |
POST応答の例
成功した場合、次の例のような応答を受信します。
{
"id": "a7oaBNCyc8DdhxQD4mY4ul",
"createTime": "2019-01-10T01:35:45.000Z",
"updateTime": "2019-01-10T21:08:41.398Z",
"name": "job-1547154520680",
"startTime": "2019-01-10T21:08:41.389Z",
"endTime": null,
"status": {
"state": "IN_PROGRESS",
"message": "In Progress"
},
"objects": null,
"sourceOrgId": "2wy21a5fkUphzTVNKaPowg",
"checksumValid": true
}
エラーを受信した場合、次の例のような応答が表示されます。
{
"error": {
"message": "Import request with identifier [a7oaBNCyc8DdhxQD4mY4u] doesnt exist.",
"requestId": "9MopwrDFAOGbuMM9utiTqJ"
}
}
loadStateジョブのステータスの取得
GET要求を使用して、loadStateジョブのステータスを取得します。
GET要求
loadStateジョブのステータスを取得するには、次のいずれかのURIを使用します。<id>はloadStateジョブのIDです。
- •loadStateジョブのステータスを受け取るには、次のURIを使用します。
/public/core/v3/loadState/<id>
- •loadStateジョブ内の各オブジェクトのステータスを受け取るには、次のURIを使用します。
/public/core/v3/loadState/<id>?expand=objects
GET応答
ステータスを要求すると、次のようなインポートステータス情報が返されます。
フィールド | タイプ | 説明 |
---|
id | String | loadStateジョブのID。 |
createTime | String | オブジェクトの状態パッケージが作成された時刻。 |
updateTime | String | オブジェクトの状態パッケージの最終更新時刻。 |
name | String | loadStateジョブの名前。 |
startTime | String | loadStateジョブの開始時刻。 |
endTime | String | loadStateジョブの終了時刻。 |
status | 複合型 | パッケージのアップロードステータス。 |
state | String | ステータスのオブジェクトで返されます。 「実行中」、「成功」、「失敗」など、loadStateジョブのステータス。 |
message | String | ステータスのオブジェクトで返されます。 ジョブのステータスメッセージ。 |
sourceOrgId | String | オブジェクトの状態パッケージを作成した組織のID。 |
objects | コレクション | インポートに含まれるオブジェクト。 |
sourceObject | コレクション | objectsオブジェクトで返されます。 インポートに含まれるオブジェクト。 |
id | String | objects.sourceObjectオブジェクトで返されます。 インポートに含まれるオブジェクトのグローバル一意識別子。 |
name | String | objects.sourceObjectオブジェクトで返されます。 インポートに含まれるオブジェクトの名前。 |
path | String | objects.sourceObjectオブジェクトで返されます。 インポートに含まれるオブジェクトの完全なパス。 |
type | String | objects.sourceObjectオブジェクトで返されます。 インポートに含まれるオブジェクトのタイプ。 |
description | String | objects.sourceObjectオブジェクトで返されます。 インポートに含まれるオブジェクトの説明。 |
targetObject | Collection | objectsオブジェクトで返されます。 ターゲットオブジェクト。 |
id | String | objects.targetObjectオブジェクトで返されます。 ターゲットオブジェクトのグローバル一意識別子。 |
name | String | objects.targetObjectオブジェクトで返されます。 ターゲットオブジェクトの名前。 |
path | String | objects.targetObjectオブジェクトで返されます。 ターゲットオブジェクトの完全なパス。 |
type | String | objects.targetObjectオブジェクトで返されます。 ターゲットオブジェクトのタイプ |
description | String | objects.targetObjectオブジェクトで返されます。 ターゲットオブジェクトの説明。 |
status | String | objects.targetObjectオブジェクトで返されます。 ターゲットオブジェクトのステータス。 |
status | 複合型 | objectsオブジェクトで返されます。 オブジェクトのロードステータス。 |
state | String | objects.statusオブジェクトで返されます。 「実行中」、「成功」、「失敗」など、オブジェクトのロード状態。 |
message | String | objects.statusオブジェクトで返されます。 オブジェクトのステータスメッセージ。 |
checksumValid | Boolean | objects.statusオブジェクトで返されます。 オブジェクトのチェックサムが有効だったかどうか。 |
GET応答の例
loadStateジョブのステータスに対する要求が成功すると、次の例のような応答を受け取ります。
{
"id": "2oZb7vFI2QQg4ncd4AyCGn",
"createTime": "2017-10-26T08:40:09.000Z",
"updateTime": "2017-10-26T08:55:56.000Z",
"name": "stateImportJob",
"startTime": "2017-10-26T08:55:53.000Z",
"endTime": "2017-10-26T08:55:56.000Z",
"status": {
"state": "SUCCESSFUL",
"message": "Import completed successfully."
},
"objects": null,
"sourceOrgId": "2wy21a5fkUphzTVNKaPowg",
"checksumValid": true
}
要求に個々のオブジェクトのロードステータスが含まれていた場合、成功時の応答は次の例のようになります。
{
"id": "3OpbyDU36UgkUhXXtvGsYA",
"createTime": "2019-01-10T21:35:33.000Z",
"updateTime": "2019-01-10T21:35:39.000Z",
"name": "job-1547156138681",
"startTime": "2019-01-10T21:35:39.000Z",
"endTime": "2019-01-10T21:35:39.000Z",
"status": {
"state": "SUCCESSFUL",
"message": "Import completed successfully."
},
"objects": [
{
"sourceObject": {
"id": "46MhQv9oxrgbOD6qtosF8t",
"name": "MappingTask",
"path": "/Default",
"type": "MTT",
"description": ""
},
"targetObject": {
"id": null,
"name": "MappingTask",
"path": "/Default",
"type": "MTT",
"description": null,
"status": null
},
"status": {
"state": "SUCCESSFUL",
"message": "Overwrite existing."
}
}
],
"sourceOrgId": "2wy21a5fkUphzTVNKaPowg",
"checksumValid": true
}