`
mf1389004071
  • 浏览: 73905 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
1ab096d2-14d4-3a83-b102-8097ee3bdc66
OFBiz进阶-OFC
浏览量:51817
社区版块
存档分类
最新评论

OFBiz进阶--OFBiz开发之异步服务与计划任务[更新]

阅读更多

OFBiz进阶--OFBiz开发之

                   异步服务与计划任务(Job Scheduler) 




如果想在java程序中添加一条jobSandbox调度的话可以用
     dispatcher.schedule(
               jobName, poolName, serviceName, serviceContext, 
               startTime, frequency, interval, count, endTime, maxRetry
          );



webtools新建任务计划功能实际方法实现, 在如下位置:
     org.ofbiz.webapp.event.CoreEvents.scheduleService

                    (HttpServletRequest request, HttpServletResponse response)



[dispatcher.schedule]方法的参数分析

jobName            :计划任务名称, 唯一标识

poolName          : job池名称 如果你不清楚这个是干嘛的话 默认pool好了

serviceName     : job 要调用的服务名称

serviceContext  :map型参数 ,job调度需要用到的数据 ,会被转化成XML格式保存到runtimeData中 (重复调度的时候会再次用到)

startTime           :long 格式 执行调度的开始时间

frequency          :执行频率 (数据类型有  RecurrenceRule.DAILY(执行频率以天为单位) 、  
                                        RecurrenceRule.HOURLY(执行频率以小时为单位)等等)

interval               :执行间隔 配合frequency 使用 , frequency 为单位 , interval 为数量 ,
                                        联合起来其 XX天/次(XX天执行一次) 、XX小时/次(XX小时执行一次) 

count                  :执行次数 。 最大执行次数,当执行次数达到这个值时就不在执行了 。 如果设置-1 即不限次数

endTime            :执行结束时间,一般用在count 为-1 的时候 使用 ,当限时时间达到这一时间时 即不在执行

maxRetry          :失败后重复执行次数 , 某次调度执行失败的话 ,重复执行的次数 , -1 无限 , 知到执行成功为止 



异步服务与计划任务的关系
异步服务在一个独立的线程中运行并且当前线程将不等待。
          调用的服务将和调用它的服务或事件有效地开始并发运行。
          当前服务的线程因此获取不到异步运行服务的信息。
          异步服务中发生的错误将不会引发调用它的服务或者事件的失败或者错误。

异步服务实际上添加到Job Scheduler中。它是Job Scheduler的调用队列中等待调用的服务的任务。
          Service Engine Tools(服务引擎工具)头的下面。选择Job List(任务列表)来看任务的全部列表。
          没有Start Date/Time(起始日期和时间)的job还未开始。
          那些有End Date/Time(结束日期/时间)的job已经完成。Run Time(运行时间)是他们被安排运行的时间。
          初始化种子数据执行时,列表中所有突出的任务都被添加到JobSandbox实体中,
          和指定它们多长时间执行一次的RecurrenceRule(也是一个实体)信息一起。
             
任务运行的Pool默认设置是pool。一个OFBiz实例可以专用来执行特定任务,
          即便如此任务调度程序可能在每个实例中运行,即只有一个实例将运行该任务。



调度器执行计划任务的原理[更新2014-03-25 21:12:31] 
     调度程序的最佳用法的例子是一个异步服务调用。
     当调用异步服务,它被传递给任务调度队列。依次创建(创建RecurrenceInfo和RecurrenceRule实体)
        存储计划任务(创建JobSandbox实体)和上下文(Map)被序列化并存储(建立RuntimeData实体)
        调度器找到计划任务队列的顶部任务(异步服务没有任何延迟时间)按队列执行。

 



使用示例
    //jobSandbox 功能解析
    String jobName = "job1"; //计划名
    String poolName = "pool"; //默认方式
    String serviceName = "serviceName"; //计划执行的服务名称
    Map<String, Object> service_context = FastMap.newInstance(); //服务需要的初始数据
    long startTime = System.currentTimeMillis(); //开始时间
    long endTime = System.currentTimeMillis(); //结束时间
    int frequency = 1; //频率
    int interval = 1000; //间隔
    int count = 1; //次数
    int maxRetry = 3; //最大重试次数
    try {
        dispatcher.schedule(jobName, poolName, serviceName, service_context,
                startTime, frequency, interval, count, endTime, maxRetry);
    } catch (GenericServiceException e) {
          Debug.logError(e, e.getMessage(), module);
    }

 

 ==================================关于本文===================================

 
        作者: mf1389004071 
        ...上海_香飘飘
        博客: http://ofbizer.iteye.com/
        邮箱: mf1389004071@163.com
        有此标记, 均为原创, 禁止盗用, 转载请注明来源
        技术无上限, 能力有上限, 欢迎参与交流讨论和提出建议
        本文永久地址: http://ofbizer.iteye.com/blog/2031403
 
 
0
1
分享到:
评论
1 楼 mf1389004071 2014-03-25  
[更新2014-03-25 21:12:31]
调度器执行计划任务的原理
     调度程序的最佳用法的例子是一个异步服务调用。
     当调用异步服务,它被传递给任务调度队列。依次创建(创建RecurrenceInfo和RecurrenceRule实体)
        存储计划任务(创建JobSandbox实体)和上下文(Map)被序列化并存储(建立RuntimeData实体)
        调度器找到计划任务队列的顶部任务(异步服务没有任何延迟时间)按队列执行。

相关推荐

    OFBiz教程-初学者开发指南

    首先,你需要在`hot-deploy`目录下创建一个名为`practice`的子目录,并在其中创建`ofbiz-component.xml`文件。该文件定义了组件的名称、资源加载器类型以及其他相关信息。例如: ```xml &lt;ofbiz-component name=...

    OFBiz教程_-_初学者的开发指南

    3. **组件开发**:学习如何创建一个新的组件,以及组件中的主要文件如`ofbiz-component.xml`的用途。 4. **实体模型**:解释OFBiz中实体模型的概念及其作用。 5. **服务定义和服务调用**:如何定义服务并从其他组件...

    apache-ofbiz-16.11.05

    最新版OFBiz,apache-ofbiz-16.11.05,apache-ofbiz-16.11.05

    ofbiz--A Beginners Development Guide--Part 2

    Apache Ofbiz是一个开源的企业应用框架,它为构建复杂的业务应用程序提供了全面的工具和服务。这篇“Ofbiz初学者开发指南——第二部分”很可能是对Ofbiz更深入的介绍,特别是针对那些刚开始接触Ofbiz的开发者。在...

    ofbiz--A Beginners Development Guide--Part 3

    工作流(WorkEffort)系统在OFBiz中用于处理计划任务、项目管理和协作。它允许开发者定义复杂的业务流程,如订单审批流程。理解工作流的概念和配置方式,将有助于实现更高效的企业业务流程自动化。 最后,不要忽视...

    ofbiz--A Beginners Development Guide--Part 1

    《OFBiz初学者开发指南——第一部分》 OFBiz,全称Open For Business Project,是一个开源的企业级应用框架,主要用于构建和管理电子商务、供应链管理、CRM等复杂业务系统。本指南将带你走进OFBiz的世界,从基础...

    Ofbiz-16-全量数据库873张表.rar

    这个压缩包文件"Ofbiz-16-全量数据库873张表.rar"包含了Apache Ofbiz 16版本的全量数据库结构,包括873个数据表的SQL脚本。这些脚本用于创建和初始化数据库,对于理解和开发基于Ofbiz的应用程序至关重要。 1. **...

    ofbiz-entry-zh-cn.doc

    本文档详细介绍了如何搭建OFBiz Release 4.0的开发环境,包括必要的工具安装与配置。此外,还提到了汉化和模块开发的基本概念。对于初次接触OFBiz的新手来说,这些都是非常实用且重要的知识点。通过实践这些步骤,...

    OFBiz Tutorial - A Beginners Development Guide的Practice案例源代码

    Ofbiz 官网上的OFBiz Tutorial - A Beginners Development Guide中的案例practice,其中内容有些是老版本的,与新版本(13版)并不兼容,尤其是Ajax部分已经有较大差异。同时有一部分操作和源代码没有在教程中说明...

    apache-ofbiz-16.11.02源码+ofbiz菜鸟笔记+Apache+OFBiz+开发初学者指南

    apache-ofbiz-16.11.02.zip,ofbiz菜鸟笔记,Apache+OFBiz+开发初学者指南.chm

    Ofbiz12.04 进阶之三 第一个Helloword的应用

    本篇将聚焦于“Ofbiz12.04 进阶之三 第一个HelloWord的应用”,我们将深入探讨如何在OFBiz框架下创建并运行你的第一个应用。 首先,理解OFBiz的基本结构至关重要。OFBiz采用模块化设计,每个模块都有其特定的功能,...

    OFBiz-API-Docs

    OFBiz API 文档,英文html版。使用官方资源中的ant命令自动生成,无任何修改。有兴趣的朋友可以自己生成,ant命令是:docs-all,该命令生成帮助文档时会获取操作系统语言设置,要生成英文文档请先将操作系统语言改为...

    ofbiz入门教程-初学者开发指南

    6. 开发业务逻辑:Ofbiz 提供服务(Service)和事件(Event)机制来处理复杂的业务逻辑。服务是可复用的代码单元,通常对应一个业务操作;事件则用于响应用户界面的交互。通过定义服务XML文件(servicedef.xml)和...

    Apache OFBiz E-Business Solutions.pdf

    Apache OFBiz是一种开源的...OFBiz作为开源项目,有着一个活跃的社区和支持网站,可以为企业提供持续的技术支持和更新。通过学习和应用这份文档,企业可以有效地利用OFBiz构建一个强大、安全和可扩展的电子商务系统。

    OFBiz-manual-zh.doc

    OFBiz-manual-zh.docOFBiz-manual-zh.docOFBiz-manual-zh.docOFBiz-manual-zh.docOFBiz-manual-zh.doc

    Ofbiz16.11.05运行及开发环境搭建等

    在本文中,我们将深入探讨如何搭建OFBiz 16.11.05的运行及开发环境,并讨论一些关键的OFBiz功能,如百度地图集成、国际化处理、用户逻辑、PDF导出、服务调用、内容管理、MVC框架、服务引擎、多租户以及权限系统。...

Global site tag (gtag.js) - Google Analytics