share models by tenant

This commit is contained in:
2024-05-03 12:12:15 -04:00
parent 5d172e234e
commit e437234c28
2 changed files with 21 additions and 9 deletions

View File

@@ -60,7 +60,7 @@ public class ModelShareExtension implements Bootstrappable {
return;
this.logger.trace("scheduled()");
this.worker.share();
this.worker.shareAllModels();
}
}

View File

@@ -25,6 +25,7 @@ import java.util.Map.Entry;
import java.util.Set;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.repository.ModelQuery;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -206,31 +207,42 @@ public class ModelShareWorker implements Bootstrappable {
map.put(key, value);
}
public void share() {
this.logger.trace("Discovering models ...");
public void shareAllModels() {
if (this.tenantId != null)
this.shareAllModels(this.tenantId);
this.shareAllModels(null);
}
public void shareAllModels(Long tenantId) {
this.logger.trace("Discovering models in tenant {} ...", this.tenantId);
long modelCount = 0L;
int page = 1;
int perPage = this.modelChunkSize;
List<org.activiti.engine.repository.Model> models = this.services.getRepositoryService().createModelQuery().listPage((page-1)*perPage, perPage);
ModelQuery query = this.services.getRepositoryService().createModelQuery().latestVersion();
if (tenantId != null)
query.modelTenantId(String.valueOf(tenantId));
else query.modelWithoutTenantId();
List<org.activiti.engine.repository.Model> models = query.listPage((page-1)*perPage, perPage);
while (!models.isEmpty()) {
this.logger.trace("Fetched page #{} of {} models", page, models.size());
this.logger.trace("Fetched page #{} of {} models in tenant {}", page, models.size(), this.tenantId);
for (org.activiti.engine.repository.Model model : models) {
this.logger.debug("Discovered model: {}: {}: {}", model.getCategory(), model.getId(), model.getName());
this.share(model);
this.shareModel(model);
}
modelCount += models.size();
page++;
models = this.services.getRepositoryService().createModelQuery().listPage((page-1)*perPage, perPage);
models = query.listPage((page-1)*perPage, perPage);
}
this.logger.trace("Discovered {} models", modelCount);
this.logger.trace("Discovered {} models in tenant {}", modelCount, this.tenantId);
}
public void share(org.activiti.engine.repository.Model orgModel) {
public void shareModel(org.activiti.engine.repository.Model orgModel) {
Model model = (Model) this.modelService.getModel(Long.valueOf(orgModel.getId()));
Map<HashableGroup, SharePermission> shares = this.fetchCurrentModelShares(model);