この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

PackagePushJob

組織で、あるバージョンから別のバージョンへパッケージをアップグレードするための個々の転送ジョブを表します。1 つの転送要求に対して複数の転送ジョブを作成できます。たとえば、5 つの組織を 1 つの転送でアップグレードする場合、1 つの PackagePushRequest レコードと 5 つの PackagePushJob レコードが作成されます。

サポートされているコール

create()describeSObjects()query()retrieve()update()upsert()

項目

項目名 詳細
PackagePushRequestId
reference
プロパティ
Create、Filter、Group、Nillable、Sort、Update
説明
必須。親転送要求レコードの ID。親転送要求レコードは作成されている必要があります。
Status
picklist
プロパティ
Create、Filter、Group、Nillable、Restricted picklist、Sort
説明
ジョブの状況。有効な値は、次のとおりです。
  • Cancelled
  • Created (デフォルト)
  • Failed
  • In Progress
  • Pending
  • Succeeded
転送ジョブを作成するときには、この値を指定しないでください。デフォルト値の Created が使用されます。
SubscriberOrganizationKey
string
プロパティ
Create、Filter、Group、Nillable、Sort、Update
説明
必須。パッケージがアップグレードされる組織の組織キー。これは、PackageSubscriber 内の orgKey を参照します。

使用方法

パッケージのバージョン 3.4.6 をすべての組織に転送するとします。すでに MetadataPackageVersion を使用してアップグレードの対象となる組織を特定し、PackagePushRequest を使用して転送要求を作成しました。ここでは、対象となる各組織への転送ジョブを作成するコードを記述しましょう。

このサンプルコードでは、Force.com Web Services Connector (WSC) を使用しています。

1PackageSubscriber[] subscribers = new PackageSubscriber[];
2
3// ... populate eligible and desired subscribers
4
5// Create the PackagePushJob array
6PackagePushJob[] jobs = new PackagePushJob[subscribers.length];
7
8for (int i = 0; i < subscribers.length; i++) {
9	// create a job for each subscriber...
10	PackagePushJob job = new PackagePushJob();
11	// ... associate it to the PackagePushRequest ppr...
12	job.setPackagePushRequestId(ppr.getId());
13	// ... and add the orgKey
14	job.setSubscriberOrganizationKey(subscribers[i].getOrgKey());
15	jobs[i] = job;
16}
17
18// Save the jobs
19SaveResult[] saveResults = conn.create(jobs);
20
21// Add the newly generated id's to the PackagePushJob objects
22for (int i = 0; i < saveResults.length; i++) {
23	if (saveResults[i].isSuccess()) {
24		jobs[i].setId(saveResults[i].getId());
25	}
26}
または、REST API を使用している場合は、次の例のように PackagePushJob sObject エンドポイントに POST 要求を送信します。SOAP API もサポートされています。この例は、ジョブの状況をクエリするために必要な転送ジョブ ID (0DX で始まる) を返します。
1POST
2/services/data/v38.0/sobjects/packagepushjob/
3{
4   "PackagePushRequestId" : "0DV...",
5   "SubscriberOrganizationKey" : "00DR00..."
6}

転送ジョブの状況の確認

ジョブの状況を確認するには、Status 項目をクエリします。以下に例を示します。
1SELECT Id, Status FROM PackagePushJob WHERE PackagePushRequestId ='0DV...'
次に Java での例を示します。
1// Finds the status of the PackagePushJob with the given id
2String PACKAGE_PUSH_JOB_STATUS_QUERY = "Select status from PackagePushJob where Id = '%s'";
3
4// job is a PackagePushJob instance
5QueryResult queryResult = conn.query(String.format(PACKAGE_PUSH_JOB_STATUS_QUERY, 
6job.getId()));
7
8// extract the status from the QueryResult 
9String status = ((PackagePushJob) queryResult.getRecords()[0]).getStatus();
10
11// optionally, update the PackagePushJob instance with the latest status
12job.setStatus(status);
ジョブが完了するまで継続的にジョブの状況をポーリングすることもできます。次の Java の例では、10 秒ごとに状況をポーリングします。
1// The set of states that indicate a PackagePushJob has completed
2final Set<String> TERMINAL_STATES = new HashSet<>();
3TERMINAL_STATES.add("Succeeded");
4TERMINAL_STATES.add("Failed");
5TERMINAL_STATES.add("Canceled");
6		
7String status = queryJobStatus(job); // this method returns the status as retrieved in the previous code sample
8
9// If the status is not one of the completed statuses...
10while(!TERMINAL_STATES.contains(status)) {
11	Thread.sleep(10 * 1000); // ... wait 10 seconds and try again
12	status = queryJobStatus(job);
13}