学习目标
- 列出创建自定义作业所需采取的步骤。
- 描述面向任务的脚本模块和面向块的脚本模块之间的区别。
- 解释一下steptypes.json文件是什么。
介绍
Cloud Kicks的管理员Linda Rosenberg正在创建工作,并且找不到能完全满足她要求的系统步骤。她希望将数据直接从外部产品信息(PIM)系统导入生产实例。她需要自定义代码来执行此操作,因为她想导入目录数据,对其进行处理,然后将其保存在Salesforce B2C Commerce数据库中。这不是一个简单的导入。为了创建此自定义作业,她要求Cloud Kicks开发人员Vijay Lahiri执行这些步骤。
- 创建墨盒。盒式磁带是一种用于打包和部署B2C Commerce店面程序代码和数据的机制。
- 编写面向任务或面向块的脚本以运行流程步骤,例如读取产品记录,对其进行处理,然后将其写入数据库。
- 创建一个steptypes.json文件来描述自定义步骤,然后将该文件放在盒带的根目录中。
- 上载墨盒,并将其包括在墨盒路径中。
维杰很乐意提供帮助。
完成后,琳达:
- 将代码复制到生产中,并激活包括新盒带的代码版本。
- 使用业务管理器中的自定义步骤创建作业。
面向任务的脚本模块
这将需要一些技术知识,但是Linda需要了解以下以开发人员为中心的概念和流程,以便她可以与Vijay合作,监视工作成功并计划未来需求。
面向任务的CommonJS脚本模块公开了一个功能,该功能称为作业步骤的主要功能。当Linda使用Business Manager创建作业时,她设置参数,这些参数可用作模块功能和dw.job.JobStepExecution对象的可编写脚本的对象。dw.job.JobStepExecution对象允许以只读方式访问有关当前步骤执行和作业执行的信息。
要控制退出状态,该函数可以返回dw.system.Status API对象。如果脚本以未处理的异常结束,则默认情况下,退出状态代码为ERROR,错误状态标志为true。如果没有返回状态对象并且没有发生异常,则默认情况下状态码为OK。
有关通过FTP连接然后下载数据的面向任务的脚本模块的示例,请参见 信息中心。Vijay使用此示例创建脚本模块。
面向块的脚本模块
面向块的CommonJS脚本模块读取并处理指定大小的块中的项目。如果列表中包含的项目超过了B2C Commerce可以处理的更多块,则它将启动一个新的块。面向块的脚本可以包括任何系列的处理步骤,而不仅仅是数据库事务。
使用面向块的脚本的作业步骤可进行细粒度的进度监控,因为B2C Commerce每次完成块时都会更新写入的元素数。
Vijay和Linda看了一个块处理示例。
假设您将八个订单的列表导出到一个文件中,并且一个块的大小为四个订单。脚本按此顺序处理块。
- 读取订单1,流程订单1,读取订单2,流程订单2,读取订单3,流程订单3,读取订单4,流程订单4
- 写入顺序1,写入顺序2,写入顺序3,写入顺序4
- 读取Order5,流程Order5,读取Order6,流程Order6,读取Order7,流程Order7,读取Order8,流程Order8
- 写入顺序5,写入顺序6,写入顺序7,写入顺序8
块脚本功能
Linda在示例中注意到了三个功能。面向块的脚本模块公开了用于读取,处理和写入的功能。
- 读取功能: 返回一项或什么都不返回。
- 流程功能: 让您转换项目并将业务逻辑应用于它们。
- 写功能: 接收项目列表。
您还可以在面向块的脚本模块中使用这些可选功能。
- total-count-function: 返回在块处理开始之前可用的项目总数。
- before-step-function: 在块步骤开始之前执行。
- before-chunk-function: 在块开始之前执行。
- after-chunk-function: 在块完成后执行。
- after-step-function: 在块步骤成功完成后执行。
有关面向块的脚本模块的示例,请参见 信息中心。
步骤类型文件
Vijay创建自定义步骤时,他必须创建一个steptypes.json文件来描述该步骤的元数据。该文件指定实现该步骤的脚本模块,该步骤所需的参数以及该步骤返回的退出状态。steptypes.json文件需要非常特定的语法。例如,一部分steptypes.json文件使用以下名称/值对:
有关语法的详细信息和steptypes.json文件的示例,请参见 信息中心。
对无效的steptypes.json文件进行故障排除
B2C Commerce解析并加载steptypes.json文件:
- 服务器启动时。
- 更改活动代码版本时。
- 在沙盒上,每次运行步骤。
如果steptypes.json文件由于缺少属性或其他问题而包含错误,则B2C Commerce会将错误记录在错误文件中,并且不会注册自定义步骤。然后,B2C Commerce将从其他墨盒的steptypes.json文件加载步骤。
无效的steptypes.json文件导致这样的消息出现在业务管理器中:
使用steptypes.xml
Vijay可以使用XML定义而不是JSON来定义自定义步骤。他必须调用文件steptypes.xml,并将其放在根文件夹中的自定义盒式磁带中。只要更改了活动代码版本,B2C Commerce就会解析并重新加载它。只能有一个steptypes.json或steptypes.xml文件。