REST APIリファレンス > プラットフォームREST APIバージョン3リソース > オブジェクトの状態の同期化
  

オブジェクトの状態の同期化

オブジェクトを別の組織に移行する場合に、オブジェクトの状態とランタイム属性を組織間で同期化するには、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ファイルとなります。オブジェクトの状態パッケージを作成するには、次のタスクを実行します。
  1. 1lookup GET要求を送信して、状態を同期化するオブジェクトのオブジェクトIDを取得します。
  2. Informatica Intelligent Cloud ServicesでオブジェクトIDを返します。
    ルックアップを参照してください。
  3. 2lookupの応答で返されたオブジェクトIDを使用してfetchState POST要求を送信して、ジョブを開始します。
  4. Informatica Intelligent Cloud ServicesからfetchStateジョブのジョブIDが返されます。
    fetchStateジョブの開始を参照してください。
  5. 3オブジェクトの状態パッケージのfetchStateジョブIDを使用してfetchState GET要求を送信して、ジョブのステータスを取得します。
  6. Informatica Intelligent Cloud Servicesで、ジョブIDとステータスを返します。この応答には、パッケージ内のオブジェクトIDおよび関連するオブジェクトの状態のリストが含まれることもあります。
    fetchStateジョブのステータスの取得を参照してください。
  7. 4fetchState GET要求を送信して、パッケージをダウンロードします。
  8. 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"
} ]
}
オブジェクトの状態ファイルでは、以下の属性を必要に応じて変更できます。
パッケージ内のファイルにその他の変更を加えると、予期しない動作やエラーが発生する可能性があります。

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を使用します。
状態が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リソースとともに使用して、オブジェクトの状態を複数の組織の間で同期化します。
オブジェクトの状態のロードには、一連の要求および応答が含まれます。組織に状態をロードするには、次のタスクを実行します。
  1. 1loadState POST要求を送信して、ZIPファイルをアップロードします。
  2. Informatica Intelligent Cloud ServicesからloadStateジョブのジョブIDが返されます。
    オブジェクトの状態パッケージのアップロードを参照してください。
  3. 2loadState POST要求を送信して、オブジェクトの状態をロードします。この要求には、loadStateジョブのジョブIDと、ロードする状態に関連付けられているオブジェクトIDのリストを含めます。
  4. Informatica Intelligent Cloud Servicesから、「実行中」や「成功」などのジョブステータスか、エラーメッセージが返されます。また、応答にはオブジェクトの状態パッケージを作成した組織のソース組織IDも含まれます。
    loadStateジョブの開始を参照してください。
  5. 3loadState GET要求を送信して、ジョブのステータスを取得します。また、ステータスをオブジェクトレベルで要求することも可能です。
  6. Informatica Intelligent Cloud Servicesから、ジョブのステータスと、パッケージ内の各オブジェクトのステータス(要求した場合)が返されます。
    loadStateジョブのステータスの取得を参照してください。

オブジェクトの状態パッケージのアップロード

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です。

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
}