mdd脚手架开租户流程
2022-10-15 13:30:44 4 举报
mdd脚手架开租户流程
作者其他创作
大纲/内容
所有规则均执行完
isOpend()
updatetenant_open_statusstatus: 1->2
是
2.执行规则
4.返回RuleExecuteResult(1)
异常
租户id
2.异步没有待执行规则。font color=\"#f44336\
1.提交任务到线程池【CompletionService】
2.做以下操作
创建BillContextbillnum:corpaction:registeraction
获取即将执行的规则ruleListQueue<RuleRegister>
3.list不为空,遍历,针对每个规则进行调用
3.若全部执行完成,font color=\"#f44336\
4.返回RuleExecuteResult
3.catch中回滚事务
需要执行开租户流程
redisStatus:0
redisStatus
否
tenant_open_status新增记录status:1
是否存在
重新读tenant_open_status
OpenTenantRuleHandler
循环
执行规则
3.规则后处理
查询
4.若没有全部执行完成,font color=\"#f44336\
6.返回值失败,或者第四步出现异常,则回滚事务
结果判断
2.调用openTenantRuleHandler.executeRule
inserttenant_open_status表status=1的记录
isOpend()逻辑
updatetenant_open_statusstatus: 1->0
初始化tenant对象
status=0?
获取ruleId
OpenTenantRuleHandler#executeRule()执行
1.构建BillContext
AbstractCommandService
inserttenant表
不存在
BillBiz
false
redisStatus: 0待执行开通逻辑
等待线程池执行结果
1.tenant表是否有记录
handleAsynResult()
true/false
1.执行前规则
1.调用下执行规则方法
2.查询tenant_open_status_rule已执行成功的规则数量
select * from billruleregister b where `action` = 'registeraction' and billnum='corp' and ytenant_id='xx';
执行插件注册后逻辑
2.执行具体业务,并获取返回值RuleExecuteResult
2.根据查询结果做以下操作
异步执行该规则
开租户逻辑
selecttenant表
已存在
走异步开通流程openTenant()
走有租户表逻辑
4.返回map
status是否为0
tenant_open_status状态status:1->0
updatetenant_open_statusstatus: 0->1
4.若返回值,规则执行成功,tenant_open_rule_status表插入改插件执行成功记录
tenant/open
newTenantOpenService#newOpen() 事务方法
返回RuleExecuteResult
open_tenant_result: true or false
2.复制0租户规则到当前租户
7.返回规则是否执行成功【true/false】
2.在线程池执行规则逻辑
2. status:1开通中
openTenant()
是否有记录
redisStatus: 1 or 2
初始化规则表从0租户copy
1:成功/0:失败
回调开始
5.提交事务
status
描述
0
未开通
1
开通中
2
开通成功
true
null
AbstractOpenTenantService
1.如果异步规则都已执行完成
无记录
1.同步规则未全部执行完成,font color=\"#f44336\
返回响应
execAsynRule()
捕获异常
handleRule()
CommonOperator
1.获取开通状态status
redisStatus: status
插入tenant表
3.解析反参RuleExecuteResult
开通成功或开通失败
执行调用规则任务
并发问题是否由本线程更新
redisStatus: status开通逻辑已执行
设置msgCode为-1
线程池
3.异步存在待执行规则,遍历执行
入asynRuleRegisterList
selecttenant_open_status
select查询执行成功的租户规则tenant_open_rule_status
执行开租户规则
2.如果list为空,表明开租户所有规则均已执行,更新font color=\"#f44336\
实例是否存在
/tenant/open
循环调用开通规则
更新status: 0->1
1.插入tenant_open_status表
tenant表是否存在当前租户
TenantOpenController
存在
有记录
目前280个
3.redisStatus: 0 待执行开通逻辑
3.执行后规则
2.解析反参RuleExecuteResult
异步规则全部执行完成
4.msgcode=1返回RuleExecuteResult
计数器+1
execute()
2.调用执行规则方法
提交给线程池执行
1.封装RuleContext
msgCode为-1
open_tenant_result
1异常
ruleList不为空
1.获取待执行规则List
同步开租户规则是否全部执行成功
BillBiz.executeRule()
2.status=0未开通,更新为1,status:0->1font color=\"#000000\
筛选出待执行的开租户规则ruleList
入口
1.手动开启事务
1.根据tenantid查询tenant_open_status
NewTenantOpenService
3.获取执行结果
newOpen()
是否存在异步待执行规则
CommonOperator#executeRule()
请求到/tenant/open
拿tenantid读tenant_open_status表
3.catch异常或反参msgcode!=1均抛出BusinessException异常
3.返回RuleExecuteResult
tenant_open_status
执行开通租户规则线程池EXE_OPEN_TENANT_RULE_THREAD_POOL
3.status!=0开通中或已开通,redisStatus=status
1.tenant表插入一条记录
收藏
收藏
0 条评论
下一页
为你推荐
查看更多