Skip to content
本页目录

如何使用mas-task为业务提供周期定时任务

简介

mas平台提供mas-task服务支撑业务系统的定时/周期任务。 服务:mas-task 应用:mas-admin-quartz

注意

  • mas-task 5.10.47、mas-admin-quartz 5.10.14 开始支持定时任务业务逻辑由业务系统提供(之前版本需要将定时任务业务逻辑写入mas-task服务),mas-task来按规则触发业务逻辑执行
  • mas-task 5.13.14版本新增fbp对接job

使用:

1、 部署mas-task服务,上架并授权mas-admin-quartz应用

2、 站点管理员登录,从”系统管理“中进入”定时任务管理“【mas5.13.x后应用授权到站点后即可访问】

1.png

3、 新建任务

2.png

说明:

触发规则: corn表达式,由开发根据业务要求提供

类型: 满足不同场景 低代码开发环境: 低代码项目空间开发的业务服务需要定时任务来执行时,需要在参数里传递租户站点id、项目标识、项目版本、服务类型、服务标识 低代码正式环境: 低代码项目空间开发的业务发布成应用后需要定时任务来执行,需要在参数里传递租户站点id(租户站点标识要跟应用授权的站点对应)、应用标识、服务类型、服务标识; 平台/第三方服务场景: 平台其他模块服务需要定时任务来执行,需要在参数里传递租户id、站点id(平台服务需传租户站点标识、第三方服务只需传业务参数)、执行方法url(服务地址) 内部服务(兼容早期业务job): 早期业务需要定时服务时,业务逻辑是写在mas-task里的,需要指定定时服务类名(执行方法)

** 前三种类型的服务目前只支持post请求(即低代码开发那边定时任务执行业务逻辑的服务为post请求)

参数:任务服务执行时需要传递给实际执行服务的参数,参看”类型“说明 参数示例 【示例里列举的是必要参数,执行任务所需要的参数可根据业务要求追加进去】

  • locas-service低代码开发环境
js
{
   "type": "sql",   // type值有sql、  groovy、  flow 分别对应低代码的sql服务、groovy服务、服务编排
   "tenantId": "6",  //业务项目授权的租户id
   "siteId": "15",  //业务项目授权的租户id
   "projectCode":"project1",  //业务项目标识
   "version":"v1.0.0",  //业务项目版本  
   "serviceCode":"xxxx" //对应低代码项目服务标识
}
  • locas-service低代码正式环境
js
{
   "type": "sql",   // type值有sql、  groovy、  flow 分别对应低代码的sql服务、groovy服务、服务编排
   "tenantId": "6",  //业务低代码应用授权的租户id
   "siteId": "15",  //业务低代码应用授权的租户id
   "appCode":"lc-xxx",  //业务低代码应用标识
   "serviceCode":"xxx"  //对应低代码应用服务标识
}
  • 平台/第三方服务场景 【mas平台非locas-service(低代码)模块的服务无需传递tenantId、siteId】
js
{
   "tenantId": "6",  //业务低代码应用授权的租户id
   "siteId": "15"  //业务低代码应用授权的租户id
}
  • 内部服务(兼容早期业务job),由服务提供者提供,后期定时任务实际执行的业务逻辑由业务系统提供,通过上面3中类型来调用执行

  • FBP低代码服务 task调用的fbp接口开发前置条件:

fbp服务开始节点上要取消默认权限表达式(匿名访问)

fbp接口必须是post接口(taskjob中以post请求发向fbp服务)

fbp服务从request.body上获取json串参数数据,通过JsonParseTask转为对象后使用job传递过来的参数

如果fbp接口中使用到了dsc(数据源、缓存、存储)配置,该应用上架设置dsc后需要将该应用授权到一个站点,并将该站点的租户id站点id配置在task参数json串上【参数key:mas-tenant-id、mas-site-id】

fbp服务中不要使用全局对象globalCtx获取当前租户、站点、登录用户等信息,由job中配置传递过来

task配置:界面类型选中FBP服务接口,如果需要传参,填入json串【如果fbp接口中用到了数据源、存储、缓存,需要将fbp应用设置dsc参数并授权到某个站点,并将站点和租户id配置进参数中】

以下以lc-invokefbp应用来做示例说明:应用中有一个post接口:/main/demo 逻辑是查询指定租户下(业务参数)的站点数据,并在后台打印task里传递过来的租户id和查询的站点数据(用了数据源)

1、接口必须是post请求,通过request.body从定时任务里获取参数,值是json串,需用JsonParseTask进行解析

fbppic1.png

2、从解析后的json对象中提取业务参数tId

fbppic2.png

fbppic3.png

3、通过打印模拟业务场景使用数据

fbppic4.png

4、将开发的应用上架(如果应用中用到了dsc,需将该应用授权到一个站点,并获取站点及租户id),本示例将应用授权到平台管理站点(租户id为1,站点id为1)

5、在mas-admin-quartz中配置并使用;由于本应用中使用了数据源,所以参数中需要设置mas-tenant-id和mas-site-id值;由于业务上需要查询租户id为19的数据,所以需要通过tenantId来传递业务参数

fbptaskpic.png

开发定时任务注意事项:

定时服务业务逻辑内需要的环境参数如租户、站点标识等从配置定时任务的参数上传递过来,不要从GlobalContext上获取

内部资料,请勿外传