Version:

Python Asset Builder CreateJobs

CreateJobs 为资产处理器生成资产处理任务。当资产处理器检测到新的或更新的源资产并确定合适的资产生成器来处理源资产时,它会向资产生成器发送包含源资产信息(包括其路径)的CreateJobsRequest。资产生成器会以 CreateJobsResponse作为回应,其中包含 JobDescriptor 结构以及源和作业依赖关系。

CreateJobsRequest

azlmbr.asset.builder.CreateJobsRequest 是一个提供作业请求信息的类。它由资产处理器发送给资产生成器。它提供的数据用于创建JobDescriptor,以便为特定目标平台处理源资产。

字段类型说明
builderIdazlmbr.math.Uuid确定资产创建者。
watchFolderString包含源资产的子目录。
sourceFileString相对于扫描目录的源资产路径。
sourceFileUUIDazlmbr.math.Uuid源资产的 UUID,用作产品资产 ID 的一部分。
enabledPlatformsList[azlmbr.asset.builder.PlatformInfo]有关主机和目标平台的信息。

PlatformInfo

azlmbr.asset.builder.PlatformInfo 是一个提供项目已启用的主机和目标平台信息的类。

字段类型说明
identifier字符串平台 ID,如 “pc ”或 “ios”。
tagsList[String]平台可用的标签。

CreateJobsResponse

azlmbr.asset.builder.CreateJobsResponse 是一个决定如何处理源资产的类。它为每个源资产以及每个主机和目标平台创建一个 JobDescriptor 。它还提供有关源依赖性的信息,以及 CreateJobsRequest的结果。

字段类型说明
resultazlmbr.asset.builder.CreateJobsResponse Return CodeCreateJobsRequest的结果代码。
sourceFileDependencyListList[SourceFileDependency]运行源资产处理任务所需的依赖项。
createJobOutputsList[JobDescriptor]每个源资产以及每个主机和目标平台的 JobDescriptor 结构列表。

CreateJobsResponse 返回代码

CreateJobsResponse result 包含来自 CreateJobs 请求的下列 azlmbr.asset.builder.CreateJobsResponse 返回代码之一。

返回代码说明
azlmbr.asset.builder.CreateJobsResponse_ResultFailed创建任务失败。
azlmbr.asset.builder.CreateJobsResponse_ResultShuttingDown资产生成器正在关闭。
azlmbr.asset.builder.CreateJobsResponse_ResultSuccess创建任务成功,

SourceFileDependency

azlmbr.asset.builder.SourceFileDependency 是一个包含依赖源文件的路径和 ID 的类。

字段类型说明
sourceFileDependencyPathString依赖项的路径(相对于资产目录或绝对路径)。
sourceFileDependencyUUIDazlmbr.math.Uuid依赖关系的 UUID(不含子 ID)。
sourceDependencyTypeazlmbr.asset.builder.SourceFileDependency Type绝对依赖关系或通配符匹配 (azlmbr.asset.builder.SourceFileDependency_Absolute 是默认值)。
注意:
资产生成器无需同时向资产处理器提供sourceFileDependencyUUIDsourceFileDependencyPath 信息。只需提供其中一个即可。

SourceFileDependency 类型

azlmbr.asset.builder.SourceFileDependency Type 指定绝对依赖关系或通配符匹配。

类型说明
azlmbr.asset.builder.SourceFileDependency_Absolute绝对源文件依赖关系。
azlmbr.asset.builder.SourceFileDependency_Wildcards允许通配符匹配。

JobDescriptor

azlmbr.asset.builder.JobDescriptor 是资产创建器用来存储工作相关信息的一个类。

字段类型说明
jobParametersJobParameterMap传递给 ProcessJobRequest 的资产生成器特定参数。
additionalFingerprintInfoString打指纹时应考虑的其他信息。
jobKeyString特定任务键,例如 TIFF 任务。
priorityInteger作业队列中作业的优先级值。
checkExclusiveLockBooleanTrue时,在处理任务前尝试获取源资产文件的独占锁。
checkServerBoolean在处理作业前,检查服务器是否有该作业的输出。
jobDependencyListList[azlmbr.asset.builder.JobDependency]对于希望声明工作依赖于其他工作的工作来说是必需的。
failOnErrorBooleanTrue 时,错误、断言和异常会自动导致作业失败。
set_platform_identifier(platformIdentifier:string)Method设置构建平台的标识符。
get_platform_identifier()Method返回构建平台的标识符。

priority字段是作业队列中作业的值。优先级值小于 0 表示不考虑作业的优先级。优先级值大于等于 0,则作业的优先级按值排列。值越大,优先级越高。

注意:
关键工作和非关键工作的优先级分别设置。

checkExclusiveLock 字段是一个标志,用于确定资产处理器在处理作业前是否需要检查源资产文件的独占锁。资产处理器会锁定和解锁源资产文件,以确保它不会被其他进程打开。这可防止过早处理某些已打开可写入但零字节时间超过修改阈值的源资产文件。如果资产处理器无法获得独占锁,则会超时。

checkServer 字段决定 Asset Processor 在本地开始处理作业前是否需要检查服务器上是否有该作业的输出。如果 Asset Processor 以服务器模式运行,则该字段用于确定是否需要在服务器上存储该作业的输出。

如果 failOnError 字段设置为 True,则所有报告的错误、断言和异常都会导致作业失败,即使结果代码是 ProcessJobResult_Success

setplatformidentifiergetplatformidentifier方法用于设置和获取职位描述的平台标识符,如’pc’ 或 ‘android’。这是 PlatformInfo 结构中的平台标识符。

JobParameterMap

JobParameterMap是一个映射数据结构,用于保存为 ProcessJob请求而传入作业的参数。这些参数可选择在生成器的 CreateJobs 功能中设置,以便传递给 ProcessJobFunction 。参数值(键和值)是任意的,如何使用由资产创建器决定。

示例: JobParameterMap

jobParameterMap = {1 : "MyValue", 2 : "Another Value"}

JobDependency

azlmbr.asset.builder.JobDependency 是一个包含作业相关性信息的类,生成器会将该信息发送给资产处理器。

字段类型说明
sourceFileazlmbr.asset.builder.SourceFileDependency资产生成器发送给资产处理器的源文件依赖性信息。
jobKeyString从属工作的工作密钥。
platformIdentifierString从属任务的平台标识符。
typeazlmbr.asset.builder.JobDependency TypeJobDependency类型 (顺序或指纹)。

JobDependency 类型

azlmbr.asset.builder.JobDependency Type 指定 azlmbr.asset.builder.JobDependency 类型,该类型决定何时处理作业依赖关系。

类型说明
azlmbr.asset.builder.JobDependency_Fingerprint当所依赖的作业的指纹发生变化时,资产处理器应处理从属作业。
azlmbr.asset.builder.JobDependency_Order从属作业只能在资产处理器处理完其所依赖的作业后运行。
azlmbr.asset.builder.JobDependency_OrderOnce从属作业只能在资产处理器处理完其所依赖的作业后运行,并且只能在资产处理器从未处理过从属作业的情况下运行。

示例: CreateJobs

下面的示例演示了当资产处理器检测到扫描目录中带有已注册模式的新源资产或已更改的源资产时,资产生成器如何创建任务。

# Creates a single job to compile for each platform
def on_create_jobs(args):
    # get the request from the 'args'
    request = args[0]

    # Create job descriptor for each platform
    jobDescriptorList = []
    for platformInfo in request.enabledPlatforms:
        jobDesc = azlmbr.asset.builder.JobDescriptor()
        jobDesc.jobKey = 'My New Asset Job'
        jobDesc.priority = 1
        jobDesc.set_platform_identifier(platformInfo.identifier)
        jobDescriptorList.append(jobDesc)

    response = azlmbr.asset.builder.CreateJobsResponse()
    response.result = azlmbr.asset.builder.CreateJobsResponse_ResultSuccess
    response.createJobOutputs = jobDescriptorList
    return response