• 11.35 如何编写自动任务?


    自动任务调度是应用服务器的基本功能之一,自动任务主要是为了解决一些与用户交互无关,但与时间、日期相关的一些周期性任务,此类任务的特点是数据量大、无需人工干预、有规律,遇到这样的任务都可以考虑使用自动任务。

     

    所在组件:IBeamMDAACore

    名称空间:IBeam.MDAA.Objects (业务对象)

    用法举例:

           IBeamMDAA框架中开发自动任务比较简单,用户无需关心与任务无关的调度、配置等问题,只需遵守两个简单的原则即可:

                  1、任何自动任务都必须实现 IAutoTask 接口,IAutoTask 接口定义如下:

           public interface IAutoTask

        {

            void Execute(Dictionary<string,string> context);

    }

     

    Execute方法是任务运行方法,context 是任务运行初始参数,与自动任务相关,由开发者自己定义。

     

    2、自动任务必须打上自动任务属性标签,任务调度参数是可选的,示例代码如下:

     

     

    [IBeamAutoTask(ID = "511A686B-9593-4A4B-98AD-CD5AA8865D19", Name = "SynchronizeAccountSubjectName",
            TaskType = TaskType.单实例竞争任务, SchedulerParameterName = "ScheduleCycle", Description = "同步会计科目名称与当事人、商品名称保持同步")]
        [IBeamAutoTaskParameter(Name = "ScheduleCycle", Value = "0 0 1,13 ? * *", CanNull = true, FriendlyName = "服务调度周期,每天1点和13点各执行一次")]
        public class SynchronizeAccountSubjectNameForPartyAndProducts : IAutoTask
        {
            #region IAutoTask 成员

            public void Execute(System.Collections.Generic.Dictionary<stringstring> context)
            {
                ILog log = LogManager.GetLogger(this.GetType());
                try
                {
                    log.Info("开始同步会计科目名称与当事人、商品名称保持同步");

                    if (AccountSubject.Synchronize())
                    {
                        log.Info("同步会计科目名称与当事人、商品名称保持同步成功");
                    }
                    else
                    {
                        log.Info("同步会计科目名称与当事人、商品名称保持同步失败");
                    }
                }
                catch (Exception ee)
                {
                    log.Info("同步会计科目名称与当事人、商品名称保持同步时出错:"+ee.Message);
                }
            }

            #endregion

    IBeamAutoTask属性列表:

    序号

    属性名称

    含义

    1

    ID

    任务编号

    2

    Name

    任务名称

    3

    TaskType

    任务类型

    4

    Description

    自动任务工作内容概述

    5

    SchedulerParameterName

    自动任务调度参数名称,在参数列表中查找,如果此属性值为空或不指定,则任务在应用服务器启动时运行一次,否则按参数指定的调度周期运行。参数格式参考Cron表达式规范。

     

    IBeamAutoTaskParameter属性列表

    序号

    属性名称

    含义

    1

    Name

    参数名称,在同一任务中不允许重复

    2

    Value

    参数值

    3

    CanNull

    参数是否可以为空

    4

    FriendlyName

    参数友好名称说明

     

    通过以上示例代码,是不是觉得开发一个自动任务很简单呢?的确,IBeamMDAA的目标就是为了解决所有复杂、繁琐、重复的工作,任何人看完示例后都可以在10分钟内创建自动任务。

  • 相关阅读:
    springsecurity 企业微信登入
    生产级 日志系统配置,日志分类 多索引模式
    泛型探秘
    内存结构和内存模型
    垃圾回收
    类字节码分析和类加载机制
    JVM问题排查
    成也Titanium,败也Titanium之cons
    Zip 解压缩
    VS2022支持Net4.0,Net4.5开发
  • 原文地址:https://www.cnblogs.com/yyj/p/2210149.html
Copyright © 2020-2023  润新知