From b4b391199ddcb469a19ce23da18492031d9a0b4a Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Fri, 10 Mar 2017 16:16:14 +0000 Subject: [PATCH] MNT-17022 Errors in 5.1.1 when displaying any document linked to jBPM workflow The getWorkflowsForContent method has been modified to catch the exception and return one less item in the list of workflows to be processed when the workflow is jBPM (or any other unregistered workflow - including future ones). It also logs a debug. For example: Workflow Component for engine id 'jbpm' is not registered. Ignored workflow on workspace://SpacesStore/a0afc2d8-01e4-4fa5-a3b0-08d91d1fda03 Having examined the the rest of WorkflowServiceImpl (and spoken to the original author), I don't believe there are other points in the code that we need worry about for the UI perspective, even though there are 22 other methods directly calling the method that throws the exception. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@135753 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/workflow/WorkflowServiceImpl.java | 68 +++++++++++-------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java b/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java index ab689ac19f..85fbcab889 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java @@ -1,28 +1,28 @@ -/* - * #%L - * Alfresco Repository - * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited - * %% - * This file is part of the Alfresco software. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * Alfresco is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Alfresco is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with Alfresco. If not, see . - * #L% - */ +/* + * #%L + * Alfresco Repository + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ package org.alfresco.repo.workflow; @@ -1291,12 +1291,20 @@ public class WorkflowServiceImpl implements WorkflowService List workflowInstances = new ArrayList(workflowIds.size()); for (String workflowId : workflowIds) { - String engineId = BPMEngineRegistry.getEngineId(workflowId); - WorkflowComponent component = getWorkflowComponent(engineId); - WorkflowInstance instance = component.getWorkflowById(workflowId); - if (instance != null && instance.isActive() == active) + try { - workflowInstances.add(instance); + String engineId = BPMEngineRegistry.getEngineId(workflowId); + WorkflowComponent component = getWorkflowComponent(engineId); + WorkflowInstance instance = component.getWorkflowById(workflowId); + if (instance != null && instance.isActive() == active) + { + workflowInstances.add(instance); + } + } + catch (WorkflowException componentForEngineNotRegistered) + { + String message = componentForEngineNotRegistered.getMessage(); + logger.debug(message + ". Ignored workflow on " + packageItem); } } return workflowInstances;