diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/InternalTaskanaEngine.java b/lib/taskana-core/src/main/java/pro/taskana/impl/InternalTaskanaEngine.java index e564b40f2..bdfd0431d 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/InternalTaskanaEngine.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/InternalTaskanaEngine.java @@ -6,7 +6,7 @@ import org.apache.ibatis.session.SqlSession; import pro.taskana.TaskanaEngine; import pro.taskana.history.HistoryEventProducer; -import pro.taskana.taskrouting.TaskRoutingProducer; +import pro.taskana.taskrouting.TaskRoutingManager; /** * FOR INTERNAL USE ONLY. @@ -75,6 +75,6 @@ public interface InternalTaskanaEngine { * * @return the TaskRoutingProducer instance. */ - TaskRoutingProducer getTaskRoutingProducer(); + TaskRoutingManager getTaskRoutingManager(); } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskServiceImpl.java index 4e2bfa969..a1c07f8ce 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskServiceImpl.java @@ -193,7 +193,7 @@ public class TaskServiceImpl implements TaskService { } else if (task.getWorkbasketKey() != null) { workbasket = workbasketService.getWorkbasket(task.getWorkbasketKey(), task.getDomain()); } else { - String workbasketId = taskanaEngine.getTaskRoutingProducer().routeToWorkbasketId(task); + String workbasketId = taskanaEngine.getTaskRoutingManager().determineWorkbasketId(task); if (workbasketId != null) { workbasket = workbasketService.getWorkbasket(workbasketId); task.setWorkbasketSummary(workbasket.asSummary()); diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskanaEngineImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskanaEngineImpl.java index a60307411..4540a2c8d 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskanaEngineImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskanaEngineImpl.java @@ -49,7 +49,7 @@ import pro.taskana.mappings.TaskMonitorMapper; import pro.taskana.mappings.WorkbasketAccessMapper; import pro.taskana.mappings.WorkbasketMapper; import pro.taskana.security.CurrentUserContext; -import pro.taskana.taskrouting.TaskRoutingProducer; +import pro.taskana.taskrouting.TaskRoutingManager; /** * This is the implementation of TaskanaEngine. @@ -65,7 +65,7 @@ public class TaskanaEngineImpl implements TaskanaEngine { protected ConnectionManagementMode mode = ConnectionManagementMode.PARTICIPATE; protected java.sql.Connection connection = null; private HistoryEventProducer historyEventProducer; - private TaskRoutingProducer taskRoutingProducer; + private TaskRoutingManager taskRoutingManager; private InternalTaskanaEngineImpl internalTaskanaEngineImpl; protected TaskanaEngineImpl(TaskanaEngineConfiguration taskanaEngineConfiguration) { @@ -73,7 +73,7 @@ public class TaskanaEngineImpl implements TaskanaEngine { createTransactionFactory(taskanaEngineConfiguration.getUseManagedTransactions()); this.sessionManager = createSqlSessionManager(); historyEventProducer = HistoryEventProducer.getInstance(taskanaEngineConfiguration); - taskRoutingProducer = TaskRoutingProducer.getInstance(this); + taskRoutingManager = TaskRoutingManager.getInstance(this); this.internalTaskanaEngineImpl = new InternalTaskanaEngineImpl(); } @@ -389,8 +389,8 @@ public class TaskanaEngineImpl implements TaskanaEngine { } @Override - public TaskRoutingProducer getTaskRoutingProducer() { - return taskRoutingProducer; + public TaskRoutingManager getTaskRoutingManager() { + return taskRoutingManager; } } diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketAccessItemQueryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketAccessItemQueryImpl.java index e4114e50f..6c3e95fb1 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketAccessItemQueryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/WorkbasketAccessItemQueryImpl.java @@ -103,7 +103,7 @@ public class WorkbasketAccessItemQueryImpl implements WorkbasketAccessItemQuery public List list() { LOGGER.debug("entry to list(), this = {}", this); List result = taskanaEngine.openAndReturnConnection( - () -> new ArrayList(taskanaEngine.getSqlSession().selectList(LINK_TO_MAPPER, this))); + () -> new ArrayList<>(taskanaEngine.getSqlSession().selectList(LINK_TO_MAPPER, this))); if (LOGGER.isDebugEnabled()) { LOGGER.debug("exit from list(). Returning {} resulting Objects: {} ", result.size(), LoggerUtils.listToString(result)); diff --git a/lib/taskana-core/src/main/java/pro/taskana/taskrouting/TaskRoutingProducer.java b/lib/taskana-core/src/main/java/pro/taskana/taskrouting/TaskRoutingManager.java similarity index 58% rename from lib/taskana-core/src/main/java/pro/taskana/taskrouting/TaskRoutingProducer.java rename to lib/taskana-core/src/main/java/pro/taskana/taskrouting/TaskRoutingManager.java index 146cf4cdc..60600f27d 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/taskrouting/TaskRoutingProducer.java +++ b/lib/taskana-core/src/main/java/pro/taskana/taskrouting/TaskRoutingManager.java @@ -12,37 +12,37 @@ import org.slf4j.LoggerFactory; import pro.taskana.Task; import pro.taskana.TaskanaEngine; -import pro.taskana.taskrouting.api.TaskRouter; +import pro.taskana.taskrouting.api.TaskRoutingProvider; /** - * Loads TaskRouter SPI implementation(s) and passes requests route tasks to workbaskets to the router(s). + * Loads TaskRoutingProvider SPI implementation(s) and passes requests to determine workbasketids to them. */ -public final class TaskRoutingProducer { +public final class TaskRoutingManager { - private static final Logger LOGGER = LoggerFactory.getLogger(TaskRoutingProducer.class); - private static TaskRoutingProducer singleton; + private static final Logger LOGGER = LoggerFactory.getLogger(TaskRoutingManager.class); + private static TaskRoutingManager singleton; private static boolean enabled = false; - private ServiceLoader serviceLoader; - private static List theTaskRouters = new ArrayList<>(); + private ServiceLoader serviceLoader; + private static List theTaskRoutingProviders = new ArrayList<>(); - private TaskRoutingProducer(TaskanaEngine taskanaEngine) { - serviceLoader = ServiceLoader.load(TaskRouter.class); - for (TaskRouter router : serviceLoader) { + private TaskRoutingManager(TaskanaEngine taskanaEngine) { + serviceLoader = ServiceLoader.load(TaskRoutingProvider.class); + for (TaskRoutingProvider router : serviceLoader) { router.initialize(taskanaEngine); - theTaskRouters.add(router); + theTaskRoutingProviders.add(router); LOGGER.info("Registered TaskRouter provider: {}", router.getClass().getName()); } - if (theTaskRouters.isEmpty()) { + if (theTaskRoutingProviders.isEmpty()) { LOGGER.info("No TaskRouter provider found. Running without Task Routing."); } else { enabled = true; } } - public static synchronized TaskRoutingProducer getInstance(TaskanaEngine taskanaEngine) { + public static synchronized TaskRoutingManager getInstance(TaskanaEngine taskanaEngine) { if (singleton == null) { - singleton = new TaskRoutingProducer(taskanaEngine); + singleton = new TaskRoutingManager(taskanaEngine); } return singleton; } @@ -52,20 +52,22 @@ public final class TaskRoutingProducer { } /** - * routes tasks to Workbaskets. - * The task that is to be routed is passed to all registered TaskRouters. If they return no or more than one - * workbasketId, null is returned, otherwise we return the workbasketId that was returned from the TaskRouters. + * Determines a workbasket id for a given task. + * Algorithm: The task that needs a workbasket id is passed to all registered TaskRoutingProviders. + * If they return no or more than one workbasketId, null is returned, otherwise we return + * the workbasketId that was returned from the TaskRoutingProviders. + * * @param task the task for which a workbasketId is to be determined. * @return the id of the workbasket in which the task is to be created. */ - public String routeToWorkbasketId(Task task) { + public String determineWorkbasketId(Task task) { LOGGER.debug("entry to routeToWorkbasket. TaskRouterr is enabled {}, task = {}", isTaskRoutingEnabled(), task); String workbasketId = null; if (isTaskRoutingEnabled()) { - // route to all task routers + // route to all TaskRoutingProviders // collect in a set to see whether different workbasket ids are returned - Set workbasketIds = theTaskRouters.stream() - .map(rtr -> rtr.routeToWorkbasketId(task)) + Set workbasketIds = theTaskRoutingProviders.stream() + .map(rtr -> rtr.determineWorkbasketId(task)) .filter(Objects::nonNull) .collect(Collectors.toSet()); if (workbasketIds.isEmpty()) { diff --git a/lib/taskana-core/src/main/java/pro/taskana/taskrouting/api/TaskRouter.java b/lib/taskana-core/src/main/java/pro/taskana/taskrouting/api/TaskRoutingProvider.java similarity index 63% rename from lib/taskana-core/src/main/java/pro/taskana/taskrouting/api/TaskRouter.java rename to lib/taskana-core/src/main/java/pro/taskana/taskrouting/api/TaskRoutingProvider.java index a29af7cbe..745f93db5 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/taskrouting/api/TaskRouter.java +++ b/lib/taskana-core/src/main/java/pro/taskana/taskrouting/api/TaskRoutingProvider.java @@ -4,15 +4,15 @@ import pro.taskana.Task; import pro.taskana.TaskanaEngine; /** - * Interface for TASKANA TaskRouter SPI. + * Interface for TASKANA TaskRoutingProvider SPI. */ -public interface TaskRouter { +public interface TaskRoutingProvider { /** - * Initialize TaskRouter service. + * Initialize TaskRoutingProvider service. * * @param taskanaEngine - * {@link TaskanaEngine} The Taskana engine for needed initialization. + * {@link TaskanaEngine} The Taskana engine needed for initialization. */ void initialize(TaskanaEngine taskanaEngine); @@ -23,6 +23,6 @@ public interface TaskRouter { * {@link Task} The task for which a workbasket must be determined. * @return the id of the workbasket in which the task is to be created. */ - String routeToWorkbasketId(Task task); + String determineWorkbasketId(Task task); } diff --git a/lib/taskana-core/src/test/java/acceptance/taskrouting/TestTaskRouterForDomainA.java b/lib/taskana-core/src/test/java/acceptance/taskrouting/TestTaskRoutingProviderForDomainA.java similarity index 71% rename from lib/taskana-core/src/test/java/acceptance/taskrouting/TestTaskRouterForDomainA.java rename to lib/taskana-core/src/test/java/acceptance/taskrouting/TestTaskRoutingProviderForDomainA.java index df5a3e8f3..1b81ed417 100644 --- a/lib/taskana-core/src/test/java/acceptance/taskrouting/TestTaskRouterForDomainA.java +++ b/lib/taskana-core/src/test/java/acceptance/taskrouting/TestTaskRoutingProviderForDomainA.java @@ -2,12 +2,12 @@ package acceptance.taskrouting; import pro.taskana.Task; import pro.taskana.TaskanaEngine; -import pro.taskana.taskrouting.api.TaskRouter; +import pro.taskana.taskrouting.api.TaskRoutingProvider; /** * This is a sample implementation of TaskRouter. */ -public class TestTaskRouterForDomainA implements TaskRouter { +public class TestTaskRoutingProviderForDomainA implements TaskRoutingProvider { TaskanaEngine theEngine; @@ -17,7 +17,7 @@ public class TestTaskRouterForDomainA implements TaskRouter { } @Override - public String routeToWorkbasketId(Task task) { + public String determineWorkbasketId(Task task) { if ("DOMAIN_A".equals(task.getDomain())) { return "WBI:100000000000000000000000000000000001"; } else { diff --git a/lib/taskana-core/src/test/java/acceptance/taskrouting/TestTaskRouterForDomainB.java b/lib/taskana-core/src/test/java/acceptance/taskrouting/TestTaskRoutingProviderForDomainB.java similarity index 71% rename from lib/taskana-core/src/test/java/acceptance/taskrouting/TestTaskRouterForDomainB.java rename to lib/taskana-core/src/test/java/acceptance/taskrouting/TestTaskRoutingProviderForDomainB.java index 3cbde02b8..cdcc19ffa 100644 --- a/lib/taskana-core/src/test/java/acceptance/taskrouting/TestTaskRouterForDomainB.java +++ b/lib/taskana-core/src/test/java/acceptance/taskrouting/TestTaskRoutingProviderForDomainB.java @@ -2,12 +2,12 @@ package acceptance.taskrouting; import pro.taskana.Task; import pro.taskana.TaskanaEngine; -import pro.taskana.taskrouting.api.TaskRouter; +import pro.taskana.taskrouting.api.TaskRoutingProvider; /** * This is a sample implementation of TaskRouter. */ -public class TestTaskRouterForDomainB implements TaskRouter { +public class TestTaskRoutingProviderForDomainB implements TaskRoutingProvider { TaskanaEngine theEngine; @@ -17,7 +17,7 @@ public class TestTaskRouterForDomainB implements TaskRouter { } @Override - public String routeToWorkbasketId(Task task) { + public String determineWorkbasketId(Task task) { if ("DOMAIN_B".equals(task.getDomain())) { return "WBI:100000000000000000000000000000000011"; } else { diff --git a/lib/taskana-core/src/test/resources/META-INF/services/pro.taskana.taskrouting.api.TaskRouter b/lib/taskana-core/src/test/resources/META-INF/services/pro.taskana.taskrouting.api.TaskRouter deleted file mode 100644 index 35c4aa24a..000000000 --- a/lib/taskana-core/src/test/resources/META-INF/services/pro.taskana.taskrouting.api.TaskRouter +++ /dev/null @@ -1,2 +0,0 @@ -acceptance.taskrouting.TestTaskRouterForDomainA -acceptance.taskrouting.TestTaskRouterForDomainB diff --git a/lib/taskana-core/src/test/resources/META-INF/services/pro.taskana.taskrouting.api.TaskRoutingProvider b/lib/taskana-core/src/test/resources/META-INF/services/pro.taskana.taskrouting.api.TaskRoutingProvider new file mode 100644 index 000000000..342e98c1b --- /dev/null +++ b/lib/taskana-core/src/test/resources/META-INF/services/pro.taskana.taskrouting.api.TaskRoutingProvider @@ -0,0 +1,2 @@ +acceptance.taskrouting.TestTaskRoutingProviderForDomainA +acceptance.taskrouting.TestTaskRoutingProviderForDomainB