gpt4 book ai didi

java - Cron Job 和 Hybris 中的 Job 的区别

转载 作者:行者123 更新时间:2023-12-02 08:42:10 27 4
gpt4 key购买 nike

Cron Job 和 hybris 中的 Job 有什么区别?

<!-- Cron Job -->
<itemtype code="DemoCronJob" extends="CronJob"
autocreate="true" generate="true">

<!-- Job -->
<itemtype code="DemoCronJob" extends="Job"
autocreate="true" generate="true">

两者的创建/实现之间有什么区别?

最佳答案

下图描述了 Hybris 中 Jobs/Cronjobs 工作原理的完整 View ,我们将以此为起点来解释 Job 之间的区别>定时任务

enter image description here

由于Car需要Engine才能工作,Cronjob也需要Job。就像没有引擎的汽车不再是汽车一样,没有 JobCronjob 也毫无意义。

Job 是这个等式中的有意识元素,它定义了 Cronjob 执行的逻辑。同时CronjobJobUsers之间的中间人,通过Cronjob用户可以发送信息(优先级) 、触发器、节点……)和命令(启动、停止、中止……)让 Job 正常工作,并且 Job 可以显示消息(数据、状态、结果) 、日志……)也通过 Cronjob 发送给用户。

我相信最有效的学习方法是通过示例,所以让我们做一个:

Hybris 世界最重要的要求之一是创建一个 Cronjob,导出所选 catalogVersion 的所有产品 >.

  1. 首先,让我们创建Cronjob,在Cronjob中,我们将定义发送到Job<的输入/
<itemtype code="ExporterCronJob" extends="Cronjob" autocreate="true" generate="true" >
<attributes>

<!-- The input is the catalogVersion -->
<attribute qualifier="catalogVersion" type="CatalogVersion" >
<persistence type="property" />
</attribute>

</attributes>
</itemtype>
  • 下一步是让 Job 保存导出逻辑,但是创建 Job 并不总是那么明显,因为您必须处理 Jalos 我讨厌 Jalos :p
  • 幸运的是,Hybris 拥有另一种无需使用 Jalos 即可创建 Job 的方法,我们稍后会介绍。

    创建 Job 的传统方法是问题中提出的方法,即创建一个从 JobModel 扩展的 item 并在创建的 item 的相应 Jalo 中实现方法 performCronJob(CronJob cronJob) 并将所有逻辑放入该方法中。

    我以前从未使用过这种方法,因此推荐的方法是使用 ServicelayerJobModelServicelayerJobModel 已经扩展了 JobModel 并实现了为您执行CronJob(CronJob cronJob)

    ServicelayerJobModel 如何工作?它通过其 SpringID 引用一个 JobPerformable,然后执行 JobPerformable 中定义的逻辑。

    因此,创建 JobPerformable 所需要做的就是从 AbstractJobPerformable 扩展并实现 perform(CronJobModel CronJob) :

    public class ExporterJob extends AbstractJobPerformable<ExporterCronJobModel> {

    @Override
    public PerformResult perform(ExporterCronJobModel exporterCronJob) {
    try {

    //get inputs from the Cronjob...
    CatalogVersionModel catalogVersion = exporterCronJob.getCalaogVersion();

    //do logic...

    exportProducts(catalogVersion);

    //end of logic...

    //return Success (output)...
    return new PerformResult(CronJobResult.SUCCESS, CronJobStatus.FINISHED);

    } catch(Exception e) {

    //return Failure (output)...
    return new PerformResult(CronJobResult.FAILURE, CronJobStatus.ABORTED);
    }
    }
    }
  • 我们需要将 JobPerformable 注册为 Spring bean:
  • <bean id="ExporterJob" class="com.foo.bar.ExporterJob" parent="abstractJobPerformable" />
  • JobPerformable 应附加到 ServicelayerJob 的实例:
  • 通过 impex :

    INSERT_UPDATE ServicelayerJob  ;code[unique=true]  ;springId
    ;ExporterJob ;ExporterJob

    或通过 HMC:

    enter image description here

  • 最后将作业 ExporterJob 附加到 Cronjob ExporterCronJob 并运行您的 Cronjob :)
  • 通过 impex :

    $productCatalog= ...
    $Version= ...

    INSERT_UPDATE ExporterCronJob; code[unique=true] ;job(code) ;catalogVersion(catalog(id),version) ;sessionLanguage(isocode) ;sessionUser(uid)
    ;exporterCronJob ;ExporterJob ;$productCatalog:$Version ;en ;admin
    <小时/>

    编辑:http://www.stackextend.com/hybris/everything-about-cronjobs-in-hybris-part-1/

    关于java - Cron Job 和 Hybris 中的 Job 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923377/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com