mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
ALF-10117: JBPM workflows should be hidden.
A new property "system.workflow.jbpm.definitions.visible" has been added, set to false by default. This means that when the JBPM engine is enabled (the default for upgrades) in-flight workflows can continue but the JBPM definitions will not be returned and therefore hide them from the UI preventing new instances from being created. If customers want to show the JBPM workflows again all is required is to set the "system.workflow.jbpm.definitions.visible" property to true. The Workflow MBean has also been updated to expose the new property and the Workflow admin console now displays the value. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@30356 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
<property name="companyHomeStore" value="${spaces.store}" />
|
||||
<property name="companyHomePath" value="/${spaces.company_home.childname}" />
|
||||
<property name="unprotectedSearchService" ref="searchService" />
|
||||
<property name="workflowAdminService" ref="workflowAdminService" />
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
|
@@ -45,6 +45,13 @@ system.workflow.deployservlet.enabled=false
|
||||
# Sets the location for the JBPM Configuration File
|
||||
system.workflow.jbpm.config.location=classpath:org/alfresco/repo/workflow/jbpm/jbpm.cfg.xml
|
||||
|
||||
# Determines if JBPM workflow definitions are shown.
|
||||
# Default is false. This controls the visibility of JBPM
|
||||
# workflow definitions from the getDefinitions and
|
||||
# getAllDefinitions WorkflowService API but still allows
|
||||
# any in-flight JBPM workflows to be completed.
|
||||
system.workflow.jbpm.definitions.visible=false
|
||||
|
||||
# Determines if the JBPM engine is enabled
|
||||
system.workflow.engine.jbpm.enabled=true
|
||||
|
||||
|
@@ -68,12 +68,15 @@
|
||||
<!-- -->
|
||||
|
||||
<bean id="workflowAdminService" class="org.alfresco.repo.workflow.WorkflowAdminServiceImpl">
|
||||
<property name="jbpmEngineEnabled">
|
||||
<value>${system.workflow.engine.jbpm.enabled}</value>
|
||||
</property>
|
||||
<property name="activitiEngineEnabled">
|
||||
<value>${system.workflow.engine.activiti.enabled}</value>
|
||||
</property>
|
||||
<property name="JBPMEngineEnabled">
|
||||
<value>${system.workflow.engine.jbpm.enabled}</value>
|
||||
</property>
|
||||
<property name="JBPMWorkflowDefinitionsVisible">
|
||||
<value>${system.workflow.jbpm.definitions.visible}</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- -->
|
||||
|
@@ -152,7 +152,7 @@ public abstract class AbstractInvitationServiceImplTest extends BaseAlfrescoSpri
|
||||
{
|
||||
// Make sure both workflow engines are enabled.
|
||||
workflowAdminService.setActivitiEngineEnabled(true);
|
||||
workflowAdminService.setJbpmEngineEnabled(true);
|
||||
workflowAdminService.setJBPMEngineEnabled(true);
|
||||
|
||||
this.authenticationComponent.setSystemUserAsCurrentUser();
|
||||
invitationServiceImpl.setSendEmails(startSendEmails);
|
||||
|
@@ -59,7 +59,7 @@ public class ActivitiInvitationServiceImplTests extends AbstractInvitationServic
|
||||
resourceType, resourceName, inviteeRole);
|
||||
|
||||
// Disable Jbpm and enable Activiti
|
||||
workflowAdminService.setJbpmEngineEnabled(false);
|
||||
workflowAdminService.setJBPMEngineEnabled(false);
|
||||
workflowAdminService.setActivitiEngineEnabled(true);
|
||||
}
|
||||
}
|
||||
|
@@ -38,7 +38,7 @@ public class JbpmInvitationServiceImplTests extends AbstractInvitationServiceImp
|
||||
super.onSetUpInTransaction();
|
||||
|
||||
// Add a few Jbpm invitations to check they dont' interfere with Activiti invitations.
|
||||
workflowAdminService.setJbpmEngineEnabled(false);
|
||||
workflowAdminService.setJBPMEngineEnabled(false);
|
||||
|
||||
String invitee = USER_ONE;
|
||||
Invitation.ResourceType resourceType = Invitation.ResourceType.WEB_SITE;
|
||||
@@ -60,6 +60,6 @@ public class JbpmInvitationServiceImplTests extends AbstractInvitationServiceImp
|
||||
|
||||
// Disable Jbpm and enable Activiti
|
||||
workflowAdminService.setActivitiEngineEnabled(false);
|
||||
workflowAdminService.setJbpmEngineEnabled(true);
|
||||
workflowAdminService.setJBPMEngineEnabled(true);
|
||||
}
|
||||
}
|
||||
|
@@ -79,6 +79,7 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT
|
||||
protected TestPersonManager personManager;
|
||||
protected TestGroupManager groupManager;
|
||||
protected NodeService nodeService;
|
||||
protected WorkflowAdminServiceImpl workflowAdminService;
|
||||
private NodeRef companyHome;
|
||||
|
||||
public void testDeployWorkflowDefinition()
|
||||
@@ -1151,6 +1152,10 @@ public abstract class AbstractWorkflowServiceIntegrationTest extends BaseSpringT
|
||||
|
||||
authenticationComponent.setSystemUserAsCurrentUser();
|
||||
|
||||
// for the purposes of the tests make sure JBPM workflow definitions are visible
|
||||
this.workflowAdminService = (WorkflowAdminServiceImpl) applicationContext.getBean("workflowAdminService");
|
||||
this.workflowAdminService.setJBPMWorkflowDefinitionsVisible(true);
|
||||
|
||||
// create test users
|
||||
this.personManager = new TestPersonManager(authenticationService, personService, nodeService);
|
||||
this.groupManager = new TestGroupManager(authorityService, searchService);
|
||||
|
@@ -32,19 +32,31 @@ public class WorkflowAdminServiceImpl implements WorkflowAdminService
|
||||
{
|
||||
public static final String NAME = "workflowAdminService";
|
||||
|
||||
private boolean jbpmEngineEnabled = true;
|
||||
private boolean activitiEngineEnabled = true;
|
||||
|
||||
public void setJbpmEngineEnabled(boolean jbpmEngineEnabled)
|
||||
{
|
||||
this.jbpmEngineEnabled = jbpmEngineEnabled;
|
||||
}
|
||||
private boolean jbpmEngineEnabled = true;
|
||||
private boolean jbpmDefinitionsVisible = false;
|
||||
|
||||
public void setActivitiEngineEnabled(boolean activitiEngineEnabled)
|
||||
{
|
||||
this.activitiEngineEnabled = activitiEngineEnabled;
|
||||
}
|
||||
|
||||
public void setJBPMEngineEnabled(boolean jbpmEngineEnabled)
|
||||
{
|
||||
this.jbpmEngineEnabled = jbpmEngineEnabled;
|
||||
}
|
||||
|
||||
public void setJBPMWorkflowDefinitionsVisible(boolean jbpmDefinitionsVisible)
|
||||
{
|
||||
this.jbpmDefinitionsVisible = jbpmDefinitionsVisible;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isJBPMWorkflowDefinitionsVisible()
|
||||
{
|
||||
return this.jbpmDefinitionsVisible;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEngineEnabled(String engineId)
|
||||
{
|
||||
|
@@ -54,6 +54,7 @@ import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
|
||||
import org.alfresco.service.cmr.search.SearchService;
|
||||
import org.alfresco.service.cmr.security.AuthorityType;
|
||||
import org.alfresco.service.cmr.security.PersonService;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowAdminService;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDeployment;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowException;
|
||||
@@ -126,6 +127,7 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine
|
||||
protected AuthorityDAO authorityDAO;
|
||||
protected JbpmTemplate jbpmTemplate;
|
||||
protected SearchService unprotectedSearchService;
|
||||
protected WorkflowAdminService workflowAdminService;
|
||||
|
||||
// Company Home
|
||||
protected StoreRef companyHomeStore;
|
||||
@@ -281,6 +283,15 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine
|
||||
this.unprotectedSearchService = unprotectedSearchService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Workflow Admin Service
|
||||
*
|
||||
* @param workflowAdminService
|
||||
*/
|
||||
public void setWorkflowAdminService(WorkflowAdminService workflowAdminService)
|
||||
{
|
||||
this.workflowAdminService = workflowAdminService;
|
||||
}
|
||||
|
||||
//
|
||||
// Workflow Definition...
|
||||
@@ -402,6 +413,8 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<WorkflowDefinition> getDefinitions()
|
||||
{
|
||||
if (workflowAdminService.isJBPMWorkflowDefinitionsVisible())
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -441,6 +454,11 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine
|
||||
throw new WorkflowException(msg, e);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return Collections.<WorkflowDefinition>emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
@@ -450,6 +468,8 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<WorkflowDefinition> getAllDefinitions()
|
||||
{
|
||||
if (workflowAdminService.isJBPMWorkflowDefinitionsVisible())
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -489,6 +509,11 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine
|
||||
throw new WorkflowException(msg, e);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return Collections.<WorkflowDefinition>emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
|
@@ -32,11 +32,13 @@ import org.alfresco.repo.content.MimetypeMap;
|
||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||
import org.alfresco.repo.workflow.BPMEngineRegistry;
|
||||
import org.alfresco.repo.workflow.TaskComponent;
|
||||
import org.alfresco.repo.workflow.WorkflowAdminServiceImpl;
|
||||
import org.alfresco.repo.workflow.WorkflowComponent;
|
||||
import org.alfresco.repo.workflow.WorkflowModel;
|
||||
import org.alfresco.repo.workflow.WorkflowPackageComponent;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.security.PersonService;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowAdminService;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDeployment;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowException;
|
||||
@@ -68,6 +70,7 @@ public class JBPMEngineTest extends BaseAlfrescoSpringTest
|
||||
private WorkflowPackageComponent packageComponent;
|
||||
private PersonService personService;
|
||||
private WorkflowDefinition testWorkflowDef;
|
||||
private WorkflowAdminServiceImpl workflowAdminService;
|
||||
private NodeRef person1;
|
||||
private NodeRef person2;
|
||||
private NodeRef person3;
|
||||
@@ -88,6 +91,10 @@ public class JBPMEngineTest extends BaseAlfrescoSpringTest
|
||||
taskComponent = registry.getTaskComponent(JBPMEngine.ENGINE_ID);
|
||||
packageComponent = (WorkflowPackageComponent)applicationContext.getBean("workflowPackageImpl");
|
||||
|
||||
// for the purposes of the tests make sure JBPM workflow definitions are visible
|
||||
this.workflowAdminService = (WorkflowAdminServiceImpl) applicationContext.getBean("workflowAdminService");
|
||||
this.workflowAdminService.setJBPMWorkflowDefinitionsVisible(true);
|
||||
|
||||
// deploy test process messages
|
||||
I18NUtil.registerResourceBundle("jbpmresources/test-messages");
|
||||
|
||||
@@ -560,6 +567,31 @@ public class JBPMEngineTest extends BaseAlfrescoSpringTest
|
||||
assertNotNull(updatedTask);
|
||||
}
|
||||
|
||||
public void testWorkflowDefinitionVisibility()
|
||||
{
|
||||
// retrieve workflow definitions
|
||||
List<WorkflowDefinition> defs = workflowComponent.getDefinitions();
|
||||
List<WorkflowDefinition> allDefs = workflowComponent.getAllDefinitions();
|
||||
|
||||
// make sure both lists are populated (only if the JBPM engine is enabled)
|
||||
if (workflowAdminService.isEngineEnabled(JBPMEngine.ENGINE_ID))
|
||||
{
|
||||
assertFalse(defs.isEmpty());
|
||||
assertFalse(allDefs.isEmpty());
|
||||
}
|
||||
|
||||
// turn off workflow definition visibility
|
||||
this.workflowAdminService.setJBPMWorkflowDefinitionsVisible(false);
|
||||
|
||||
// retrieve workflow definitions again
|
||||
defs = workflowComponent.getDefinitions();
|
||||
allDefs = workflowComponent.getAllDefinitions();
|
||||
|
||||
// ensure the list of workflow definitions are empty
|
||||
assertTrue(defs.isEmpty());
|
||||
assertTrue(allDefs.isEmpty());
|
||||
}
|
||||
|
||||
// public void testAssignTaskVariablesWithScript() throws Exception
|
||||
// {
|
||||
// WorkflowDefinition definition = workflowComponent.getDefinitionByName("jbpm$testwf:testTaskVarScriptAssign");
|
||||
|
@@ -34,4 +34,15 @@ public interface WorkflowAdminService
|
||||
* @return true if the engine id is valid and is enabled
|
||||
*/
|
||||
public boolean isEngineEnabled(String engineId);
|
||||
|
||||
/**
|
||||
* Determines whether the JBPM workflow definitions are visible
|
||||
* when the JBPM engine is enabled.
|
||||
*
|
||||
* NOTE: Workflow definitions can always be retrieved directly
|
||||
* i.e. via name or id
|
||||
*
|
||||
* @return true if the definitions are visible
|
||||
*/
|
||||
public boolean isJBPMWorkflowDefinitionsVisible();
|
||||
}
|
||||
|
Reference in New Issue
Block a user