spritekuang

导航

企业级自定义表单引擎解决方案(十七)--Job配置执行

  • .net core研发的低代码自定义表单引擎,采用强大的规则引擎将所有的业务串联起来的,和其他低代码平台是有本质的区别的,目标是完全解放繁琐的CRUD工作。
  • 常规的业务,在需求以及数据库设计完成之后,可能就仅仅在界面上几分钟的配置就能够完成所有的开发、测试、部署工作,完全解放繁琐的CRUD工作。
  • 表单模板能够快速创建常规的业务模块,系统尽量将常规的业务功能做成模板,方便快速的创建业务模块功能,选择一个模板之后,会将模板对应的表单、子表单、子视图、控件等所有自定义表单相关的定义全部自动创建出来。

严格来讲,这篇文章不属于低代码自定义表单内容,但Job的配置执行,在任何系统来说,都是必不可少的,这系列文章也把公共的一些组件和服务纳入到一起来考虑。

定时作业对于多数系统来说,都会用到,定时作业的实现方式可以有多种方式,简单的方式用Timer就可以实现,但是达不到通用的效果,本文采用Quartz基础组件来搭建一套企业通用的作业调度管理服务,希望对于有需求的朋友有所启发,望多多指正交流,开源目录地址:02_component->CK.Sprite.Job

Quartz API 的主要接口和类如下:

  1. IScheduler - 跟调度器交互的主要应用程序接口
  2. IJob - 你希望调度器执行的作业组件需要实现这个接口
  3. IJobDetail - 用来定义作业
  4. ITrigger - 定义指定作业的调度计划的组件
  5. JobBuilder - 用来定义/构建作业详情实例,并用来定义作业实例.
  6. TriggerBuilder - 用来定义/构建触发器实例

  核心的即为job和trigger,定时作业就是围绕这两个概念进行展开。

数据库设计:

 

设计说明:

QuartzJobConfig表为作业核心表,包含了job和trigger的定义;HolidayCalendar为假期配置表。

一个job对应一个trigger执行,这里对quartz中job和trigger之间的关系做了简化,现实中一个job对应多个trigger执行的情况比较少,及时存在这样的情况,多创建一条job配置执行即可。

TriggerType(ETriggerType)触发器类型:

HolidayCalendarId,假期配置:

       假期表外键,这里没有采用通用一个假期配置,可能存在不同工种假期不同情况,所以设计分开。

JobExecType,Job执行类型:

  • API,ExecLocation地址为URL,配合Params字段一起使用
  • Reflect,反射执行,执行job的执行类信息定义
  • 其他,微服务等,配合ExecLocation和Params一起定义

类设计:

 

 

JobManager,quartz调度管理

主要直接与quartz提供的api打交道,程序启动、新建job配置、修改job配置、删除job配置时根据配置信息调用quartz中相应的api,另外开放出暂停恢复job等功能。

JobManagerService,job管理

数据库job配置与quartz组件同步管理,管理数据库job配置时候,同步管理quartz中job信息,可以实现通过界面api管理job配置时,同步管理quartz中的job调度。

CallAPIJob

通过http调用远程接口

CallReflectJob

从DataMap中获取execlocation信息,获取真正执行任务的类(从依赖注入中获取实例对象),传入参数,执行Job

细节的地方就没有一一介绍了,直接看代码更容易理解。

界面截图:

 

 

前后端代码都有开源,有需要的自行查看源码。

 

wike文档地址:https://gitee.com/kuangqifu/sprite/wikis/pages
后端开源地址:https://gitee.com/kuangqifu/sprite

前端开源地址:https://gitee.com/kuangqifu/spritefronts
体验地址:http://47.108.141.193:8031 (首次加载可能有点慢,用的阿里云最差的服务器)
自定义表单文章地址:https://www.cnblogs.com/spritekuang/
流程引擎文章地址:https://www.cnblogs.com/spritekuang/category/834975.html (采用WWF开发,已过时,已改用Elsa实现,https://www.cnblogs.com/spritekuang/p/14970992.html 

 

posted on 2022-11-28 14:05  spritekuang  阅读(158)  评论(0编辑  收藏  举报