---
title: "仕事の管理"
slug: "manage-jobs"
abstract: "Scripting SDKを使ってジョブおよび関連するターゲットの操作を作成、更新、削除する方法。"
---
# 仕事の管理

Scripting SDKを使ってジョブ管理(ジョブおよび関連ターゲットの操作の作成、更新、削除)には、以下の手順に従ってください。

1.  ターゲットを持たないジョブエンティティを作成し、その状態を Createdに設定します。
2.  職務記述書のエンティティを作成します。
3.  すべてのジョブターゲットはJobs APIを使って作成します。ターゲットは自動的にジョブにリンクされます。
4.  ジョブステートを Pendingに更新してください。

これらのステップは、ターゲットが一つある仕事や複数のターゲットがいる仕事に活用してください。

> !注これらの手順は、ウェブやSDKやREST APIを使ってジョブを管理する場合にも適用されます。

以下のスニペットは、Scripting SDKを使ってジョブを管理する方法の例を示しています。

> !注代わりにウェブSDKを使うには、以下のコードでMClientをclientに置き換えてください。

var jobId = await CreateJobEntityAsync();

var jobDescriptionId = await CreateJobDescriptionEntityAsync(jobId);

var assets = 12345, 67890;
foreach (var assetd in asssets)
{
 var targetId = await CreateTargetEntityAsync(asset, jobId);
}

await UpdateJobEntityAsync(jobdId);

async Task<long> CreateJobEntityAsync()
{
 var newJobEntity = await MClient.EntityFactory.CreateAsync("M.Job");

 newJobEntity.SetPropertyValue("Job.State", "Created");
 ... // other properties setup

 return await MClient.Entities.SaveAsync(newJobEntity);
}

async Task<long> UpdateJobEntityAsync(long jobId)
{
 var job = await MClient.Enties.GetAsync(jobId);

 newJobEntity.SetPropertyValue("Job.State", "Pending");

 return await MClient.Entities.SaveAsync(job);
}

async Task<long> CreateJobDescriptionEntityAsync(long jobId)
{
 var newjobDescriptionEntity = await MClient.EntityFactory.CreateAsync("M.JobDescription");

 newjobDescriptionEntity.SetPropertyValue("Job.ConfigurationJob.Configuration", JToken.FromObject(new
 {
 some = "configuration"
 }));
 ... // other properties setup

 return await MClient.Jobs.SaveDescriptionAsync(jobId, newjobDescriptionEntity);
}

async Task<long> CreateTargetEntityAsync(long assetId, long jobId)
{
 var newTargetEntity = await MClient.EntityFactory.CreateAsync("M.Target");

 newTargetEntity.SetPropertyValue("Target.Location", assetId.ToString());
 newTargetEntity.SetPropertyValue("Target.State", "Pending");
 newTargetEntity.SetPropertyValue("Target.Condition", "Pending");
 ... // other properties setup

 return await MClient.Jobs.SaveTargetAsync(jobId, newTargetEntity);
}