首页 > 其他分享 >企业级自定义表单引擎解决方案(十七)--Job配置执行

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

时间:2022-11-28 14:25:07浏览次数:64  
标签:执行 quartz 自定义 -- 配置 表单 job https 企业级

  • .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 

 

标签:执行,quartz,自定义,--,配置,表单,job,https,企业级
From: https://www.cnblogs.com/spritekuang/p/16931431.html

相关文章

  • Vue获取到 Promise {<pending>} 数的格式解析方法
    Promise.all([request({url:urlPrefix_custom,method:'get',params:querys})]).then((res)=>{console.log("---......
  • Could not freeze ./src/web3/address.js: Cannot read property 'hash' of undefine
    问题运行项目的时候,经常会有一大片错误Couldnotfreeze./src/web3/address.js:Cannotreadproperty'hash'ofundefinedHardSourceWebpackPlugin是webpack的插......
  • 带头链表的实现
    packagelinkedListimport"fmt"/**go实现带头单链表基本操作*/typeListNodestruct{ valueinterface{} next*ListNode}typeLinkedListstruct{ head......
  • linux磁盘占用100%,却找不到大文件——记一次僵尸文件导致的服务异常
    问题:  因服务器磁盘占用100%而导致服务异常。解决:  先用命令检查磁盘df-h[root@localhost/]#df-h文件系统容量已用可用已用%挂载点/d......
  • 循环队列的实现
    用数组和链表都可以实现队列,其中用数组实现的队列是顺序队列,用链表实现的队列是链式队列。顺序队列和链式队列的实现都比较好理解。链式队列链式队列比较好实现。packa......
  • vue大文件上传失败
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好......
  • 流媒体常见资源
    流媒体常见资源Byahuner http://www.cnblogs.com/aHuner/p/3629709.html 1.视频源下载MPEG-2TransportStreamTestPatternsandTools:http://www.w6rz.net/......
  • Mac 使用nvm管理和切换node版本
    安装进入cd~克隆gitclonehttps://github.com/nvm-sh/nvm.git进入cdnvm执行./install.sh新增vim~/.bash_profile写入exportNVM_DIR="$HOME/.nvm"[-s......
  • 日志切割
    配置文件格式[root@yu~]#cat/etc/logrotate.d/nginx/usr/local/openresty/nginx/logs/*.log{#指定你要切割的文件daily......
  • div垂直水平居中
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>div垂直水平居中</title><style>div{padding:16px32px24px;position:absolute;......