Appearance
如何使用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后应用授权到站点后即可访问】
3、 新建任务
说明:
触发规则: 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进行解析
2、从解析后的json对象中提取业务参数tId
3、通过打印模拟业务场景使用数据
4、将开发的应用上架(如果应用中用到了dsc,需将该应用授权到一个站点,并获取站点及租户id),本示例将应用授权到平台管理站点(租户id为1,站点id为1)
5、在mas-admin-quartz中配置并使用;由于本应用中使用了数据源,所以参数中需要设置mas-tenant-id和mas-site-id值;由于业务上需要查询租户id为19的数据,所以需要通过tenantId来传递业务参数
开发定时任务注意事项:
定时服务业务逻辑内需要的环境参数如租户、站点标识等从配置定时任务的参数上传递过来,不要从GlobalContext上获取