diff --git a/src/main/java/com/inteligr8/alfresco/activiti/share/ModelShareExtension.java b/src/main/java/com/inteligr8/alfresco/activiti/share/ModelShareExtension.java index cbad74c..f461815 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/share/ModelShareExtension.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/share/ModelShareExtension.java @@ -60,7 +60,7 @@ public class ModelShareExtension implements Bootstrappable { return; this.logger.trace("scheduled()"); - this.worker.share(); + this.worker.shareAllModels(); } } diff --git a/src/main/java/com/inteligr8/alfresco/activiti/share/ModelShareWorker.java b/src/main/java/com/inteligr8/alfresco/activiti/share/ModelShareWorker.java index 4b77679..4513ac3 100644 --- a/src/main/java/com/inteligr8/alfresco/activiti/share/ModelShareWorker.java +++ b/src/main/java/com/inteligr8/alfresco/activiti/share/ModelShareWorker.java @@ -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 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 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 shares = this.fetchCurrentModelShares(model);