1. 事务能力
IDME事务(IDME原子接口事务)
华为MBM事务(华为MBM提供的接口,可以是原子接口、OpenAPI、私有接口, 接口范围由华为方提供)
分布式事务(涉及跨IMOM微服务调用)
#2. 事务使用方法
#2.1 使用注解 @DmeTransactional 开启事务, 注解参数说明如下
distributed: 是否为应用分布式事务,默认为falsetransactionalType: 事务类型, 默认为TransactionalType.IDME, 可选的配置TransactionalType.IDME、TransactionalType.MBM,IDME为需要开启IDME事务,MBM为需要开启华为MBM事务, 支持多个配置
#2.2 常用场景注解使用样例
只有当前服务开启
IDME事务,@DmeTransactional只有当前服务开启
MBM事务,@DmeTransactional(transactionalType = TransactionalType.MBM)只有当前服务同时开启
IDME、MBM事务,@DmeTransactional(transactionalType = {TransactionalType.IDME, TransactionalType.MBM})分布式场景开启
IDME事务,@DmeTransactional(distributed = true)分布式场景开启
MBM事务,@DmeTransactional(distributed = true, transactionalType = TransactionalType.MBM)分布式场景同时开启
IDME、MBM事务,@DmeTransactional(distributed = true, transactionalType = {TransactionalType.MBM, TransactionalType.IDME})同一个请求想开多个事务, 可以通过开新线程执行达到开新事物的目的
#2.3 事务作用范围及注意事项
同一个微服务多个事务注解时, 只有调用链路上第一个直接会生效, 后续所有的事务注解都会失效, 会直接沿用第一个事务注解配置
跨IMOM微服务使用事务时, 只有调用链路上第一个直接会生效, 后续所有的事务注解都会失效, 会直接沿用第一个事务注解配置
IDME v3版事务接口最多支持执行10个原子接口; 在同一台设备(即同一个IP地址)上,每秒最多可以开启30个v3版本事务
调用华为MBM支持事务的接口时,如果开启了MBM事务, 那调用该接口后,接口的返回值不能使用, 华为是在提交那一步执行此接口的

#3. 其他介绍
#3.1 IDME事务
涉及的接口为IDME原子接口包含以下字符的接口
create、update、delete
#3.2 华为MBM事务
调用方法时不立刻执行,再提交事务才实际执行
MBM事务方案说明:

MBM事务支持的接口清单:
deduct-materials:物料扣减:/imes/siteSfcService/openapi/v1/upload-materials/deductpass-station-wait:签收:/imes/siteSfcService/v1/open-api/pass-station/wip-waitpass-station-trackin:在制品进站:/imes/siteSfcService/v1/open-api/pass-station/wip-trackinpass-station-trackout:在制品出站:/imes/siteSfcService/v1/open-api/pass-station/wip-trackoutpass-station-leave:在制品离站:/imes/siteSfcService/v1/open-api/pass-station/wip-leavecreate-wip-transaction:在制品交易创建:/imes/siteSfcService/dynamic/api/T_SFC_WIP_TRANSACTION/createupdate-barcode:条码更新:/imes/siteSfcService/v1/barcodebatch-update-wip-info:批量更新在制品信息:/imes/siteSfcService/openapi/v1/wip-info/batch-updatebatch-update-work-order:批量更新工单:/imes/sfcService/openapi/v1/wos/batch-updatebatch-create-erp-wos:批量创建ERP工单:/imes/sfcService/openapi/v1/erp-wos/batch-createwo-update:更新工单:/imes/sfcService/dynamic/api/Wo/update
部署华为MBM服务时(华为MBM服务指的是支持事务的华为应用,例如sfc、wom服务等),需要配置行业包IDME地址

增加其他事务接口, 涉及的接口为华为MBM指定的接口,
dme-sdk-core中已经集成了目前支持的接口, 需要增加其他接口可以通过以下两种方式增加, 不论哪种方式增加的如果是通用的都要提供给框架组添加进dme-sdk-core
通过代码修改
//取出系统已经配置的接口
Map<String, TxActionApi> txActionApiMap =MbmProxyConfiguration.txActionApi.stream()
.collect(Collectors.toMap(TxActionApi::getActionName, Function.identity()));
//添加新的接口, 采用MAP是为了手工配置的与系统已经配置接口重复
TxActionApi txActionApi = new ArrayList();
// txActionApi 为要添加的接口列表需要手工赋值
txActionApi.forEach(txActionApi -> txActionApiMap.put(txActionApi.getActionName(), txActionApi));
// 重新赋值
MbmProxyConfiguration.txActionApi = new ArrayList<>(txActionApiMap.values());
通过配置修改, 需要引入依赖
dme-sdk-starterpom.xml配置
<dependency>
<groupId>com.sie.mbm</groupId>
<artifactId>dme-sdk-starter</artifactId>
</dependency>
common.yml配置
hwmbm:
domain: XXX
service: dynamic/api
executeService: rdm/basic/api/customservice
commonService: rdm/common/api
subApp:
- name: mdm
url: imes/mdmService
- name: wom
url: imes/sfcService
- name: ems
url: imes/emsService
- name: les
url: imes/lesService
- name: qms
url: imes/qmsService
- name: sfc
url: imes/siteSfcService
- name: mpdm
url: imes/mpdmService
- name: msm
url: imes/msmService
# MBM事务接口配置
txActionApi:
# 动作名称, 华为提供,例如:deduct-materials
- actionName: XXX
# 动作描述, 主要用于日志展示,例如:扣减物料
actionDesc: XXX
# 接口方法, 华为提供, 例如:POST、GET、PUT、DELETE等
httpMethod: POST
# 接口链接, 华为提供, 例如:/imes/siteSfcService/openapi/v1/upload-materials/deduct
actionUri: XXX
# 是否启用, 默认启用
enable: true #
# 模拟响应, 原接口需要异步执行,此处是模拟返回,避免解析响应出错
result: null
#3.3 升级包
<!-- mbm-mom-framework 所涉及的包统一升级, 要注意项目有没有单独引版本 -->
<dependency>
<groupId>com.sie.mbm.mom</groupId>
<artifactId>framework-bom</artifactId>
<version>2.0.2-SNAPSHOT</version>
</dependency>
<!-- mbm-dme-sdk 所涉及的包统一升级, 要注意项目有没有单独引版本 -->
<dependency>
<groupId>com.sie.mbm</groupId>
<artifactId>dme-sdk-spring</artifactId>
<version>2.0.2-SNAPSHOT</version>
</dependency>
<!-- mbm-mom-common在framework里面会升级, 要注意项目有没有单独引版本 -->
<dependency>
<groupId>com.sie.mbm.mom</groupId>
<artifactId>mbm-mom-common</artifactId>
<version>2.0.1-SNAPSHOT</version>
</dependency>
<!-- mbm-mom-sdk所涉及的包统一升级, 要注意项目有没有单独引版本 -->
<dependency>
<groupId>com.sie.mbm.mom</groupId>
<artifactId>mom-sdk-api</artifactId>
<version>2.0.4-SNAPSHOT</version>
</dependency>
<!-- public行业包微服务升级 -->
#3.4 查看详细的事务日志
<logger name="com.sie.dme.sdk.executeDme" level="DEBUG" additivity="false">
<appender-ref ref="console"/>
<appender-ref ref="debug"/>
</logger>