如何让activiti 智能改变tenantId
时间: 2024-01-27 21:04:50 浏览: 31
在 Activiti 中,可以通过实现 TenantInfoHolder 接口来智能改变 Tenant Id。该接口定义了两个方法:
- void setCurrentTenantId(String tenantId):设置当前租户的标识符。
- String getCurrentTenantId():获取当前租户的标识符。
通过实现 TenantInfoHolder 接口,我们可以在运行时动态改变当前租户的标识符。具体来说,你可以按照以下步骤实现 TenantInfoHolder 接口:
1. 创建一个类,实现 TenantInfoHolder 接口。
```java
public class MyTenantInfoHolder implements TenantInfoHolder {
private static final ThreadLocal<String> currentTenantId = new ThreadLocal<>();
@Override
public void setCurrentTenantId(String tenantId) {
currentTenantId.set(tenantId);
}
@Override
public String getCurrentTenantId() {
return currentTenantId.get();
}
}
```
在上述代码中,我们使用 ThreadLocal 将当前租户的标识符保存在当前线程中,以确保线程安全。如果你的系统是单线程的,也可以直接使用一个成员变量来保存当前租户的标识符。
2. 将该类注册到 Activiti 引擎中。
```java
ProcessEngineConfiguration config = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml");
config.setTenantInfoHolder(new MyTenantInfoHolder());
ProcessEngine engine = config.buildProcessEngine();
```
在上述代码中,我们将 MyTenantInfoHolder 类注册到 Activiti 引擎中,并设置为引擎的 Tenant Info Holder。这样,当需要改变当前租户的标识符时,就可以调用 MyTenantInfoHolder.setCurrentTenantId() 方法设置当前租户的标识符,Activiti 就会自动将其赋值给相应的实体对象的 Tenant Id 字段。
需要注意的是,如果你的系统不需要动态改变当前租户的标识符,可以不实现 TenantInfoHolder 接口。此时,Activiti 会将所有实体对象的 Tenant Id 字段设置为 null。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)