提交 155357f5 编写于 作者: J Joram Barrez

Merge branch 'master' of https://github.com/Activiti/Activiti

...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<property file="${user.home}/.activiti/build.properties" /> <property file="${user.home}/.activiti/build.properties" />
<property name="activiti.version" value="5.15.1-SNAPSHOT" /> <property name="activiti.version" value="5.16-SNAPSHOT" />
<property name="target.distro.root" value="target/zip/activiti-${activiti.version}" /> <property name="target.distro.root" value="target/zip/activiti-${activiti.version}" />
<property name="activiti.website" value="../../activiti-website" /> <property name="activiti.website" value="../../activiti-website" />
...@@ -63,6 +63,9 @@ ...@@ -63,6 +63,9 @@
<fileset dir="../modules/activiti-bpmn-converter/target"> <fileset dir="../modules/activiti-bpmn-converter/target">
<include name="activiti-bpmn-converter-*.jar" /> <include name="activiti-bpmn-converter-*.jar" />
</fileset> </fileset>
<fileset dir="../modules/activiti-process-validation/target">
<include name="activiti-process-validation-*.jar" />
</fileset>
<fileset dir="../modules/activiti-bpmn-layout/target"> <fileset dir="../modules/activiti-bpmn-layout/target">
<include name="activiti-bpmn-layout-*.jar" /> <include name="activiti-bpmn-layout-*.jar" />
</fileset> </fileset>
......
...@@ -35,6 +35,14 @@ ...@@ -35,6 +35,14 @@
<h1>Activiti Release Notes</h1> <h1>Activiti Release Notes</h1>
<h3>Release Notes - Activiti - Version 5.15.1</h3>
<h4>Highlights</h4>
<ul>
<li>Bug fix release for a MySQL upgrade issue (more details <a href="http://forums.activiti.org/content/important-activiti-515-and-mysql-56-users">here</a>)</li>
<li>Some small improvements from pull requests</li>
</ul>
<h3>Release Notes - Activiti - Version 5.15</h3> <h3>Release Notes - Activiti - Version 5.15</h3>
<h4>Highlights</h4> <h4>Highlights</h4>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<build> <build>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
......
...@@ -61,6 +61,18 @@ public class BusinessProcessBeanTest extends CdiActivitiTestCase { ...@@ -61,6 +61,18 @@ public class BusinessProcessBeanTest extends CdiActivitiTestCase {
assertNull(processEngine.getRuntimeService().createProcessInstanceQuery().singleResult()); assertNull(processEngine.getRuntimeService().createProcessInstanceQuery().singleResult());
} }
@Test
@Deployment
public void testProcessWithoutWaitState() {
BusinessProcess businessProcess = getBeanInstance(BusinessProcess.class);
// start the process
businessProcess.startProcessByKey("businessProcessBeanTest").getId();
// assert that the process is ended:
assertNull(processEngine.getRuntimeService().createProcessInstanceQuery().singleResult());
}
@Test @Test
@Deployment(resources = "org/activiti/cdi/test/api/BusinessProcessBeanTest.test.bpmn20.xml") @Deployment(resources = "org/activiti/cdi/test/api/BusinessProcessBeanTest.test.bpmn20.xml")
......
<?xml version="1.0" encoding="UTF-8"?>
<definitions id="taskAssigneeExample"
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn"
targetNamespace="Examples">
<process id="businessProcessBeanTest">
<startEvent id="startEvent" name="StartEvent" />
<endEvent id="endEvent" name="EndEvent" />
<sequenceFlow targetRef="endEvent" sourceRef="startEvent" />
</process>
</definitions>
\ No newline at end of file
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -55,7 +55,6 @@ public class ProcessInstanceHighlightsResource extends SecuredResource { ...@@ -55,7 +55,6 @@ public class ProcessInstanceHighlightsResource extends SecuredResource {
responseJSON.put("processDefinitionId", processInstance.getProcessDefinitionId()); responseJSON.put("processDefinitionId", processInstance.getProcessDefinitionId());
List<String> highLightedActivities = runtimeService.getActiveActivityIds(processInstanceId); List<String> highLightedActivities = runtimeService.getActiveActivityIds(processInstanceId);
System.out.println(highLightedActivities);
List<String> highLightedFlows = getHighLightedFlows(processDefinition, processInstanceId); List<String> highLightedFlows = getHighLightedFlows(processDefinition, processInstanceId);
for (String activityId : highLightedActivities) { for (String activityId : highLightedActivities) {
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>
......
...@@ -49,7 +49,7 @@ package org.activiti.engine; ...@@ -49,7 +49,7 @@ package org.activiti.engine;
public interface ProcessEngine extends EngineServices { public interface ProcessEngine extends EngineServices {
/** the version of the activiti library */ /** the version of the activiti library */
public static String VERSION = "5.15.1-SNAPSHOT"; public static String VERSION = "5.16-SNAPSHOT";
/** The name as specified in 'process-engine-name' in /** The name as specified in 'process-engine-name' in
* the activiti.cfg.xml configuration file. * the activiti.cfg.xml configuration file.
......
...@@ -96,7 +96,7 @@ public abstract class ProcessEngineConfiguration implements EngineServices { ...@@ -96,7 +96,7 @@ public abstract class ProcessEngineConfiguration implements EngineServices {
public static final String NO_TENANT_ID = ""; public static final String NO_TENANT_ID = "";
protected String processEngineName = ProcessEngines.NAME_DEFAULT; protected String processEngineName = ProcessEngines.NAME_DEFAULT;
protected int idBlockSize = 100; protected int idBlockSize = 2500;
protected String history = HistoryLevel.AUDIT.getKey(); protected String history = HistoryLevel.AUDIT.getKey();
protected boolean jobExecutorActivate; protected boolean jobExecutorActivate;
......
...@@ -26,6 +26,8 @@ import org.apache.commons.mail.Email; ...@@ -26,6 +26,8 @@ import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException; import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail; import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.SimpleEmail; import org.apache.commons.mail.SimpleEmail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** /**
* @author Joram Barrez * @author Joram Barrez
...@@ -36,6 +38,8 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior { ...@@ -36,6 +38,8 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private static final Logger LOG = LoggerFactory.getLogger(MailActivityBehavior.class);
protected Expression to; protected Expression to;
protected Expression from; protected Expression from;
protected Expression cc; protected Expression cc;
...@@ -46,39 +50,47 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior { ...@@ -46,39 +50,47 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior {
protected Expression html; protected Expression html;
protected Expression htmlVar; protected Expression htmlVar;
protected Expression charset; protected Expression charset;
protected Expression ignoreException;
protected Expression exceptionVariableName;
public void execute(ActivityExecution execution) { public void execute(ActivityExecution execution) {
String toStr = getStringFromField(to, execution);
String fromStr = getStringFromField(from, execution); boolean doIgnoreException = Boolean.parseBoolean(getStringFromField(ignoreException, execution));
String ccStr = getStringFromField(cc, execution); String exceptionVariable = getStringFromField(exceptionVariableName, execution);
String bccStr = getStringFromField(bcc, execution); Email email = null;
String subjectStr = getStringFromField(subject, execution);
String textStr = textVar == null ? getStringFromField(text, execution)
: getStringFromField(getExpression(execution, textVar), execution);
String htmlStr = htmlVar == null ? getStringFromField(html, execution)
: getStringFromField(getExpression(execution, htmlVar), execution);
String charSetStr = getStringFromField(charset, execution);
Email email = createEmail(textStr, htmlStr);
addTo(email, toStr);
setFrom(email, fromStr);
addCc(email, ccStr);
addBcc(email, bccStr);
setSubject(email, subjectStr);
setMailServerProperties(email);
setCharset(email, charSetStr);
try { try {
String toStr = getStringFromField(to, execution);
String fromStr = getStringFromField(from, execution);
String ccStr = getStringFromField(cc, execution);
String bccStr = getStringFromField(bcc, execution);
String subjectStr = getStringFromField(subject, execution);
String textStr = textVar == null ? getStringFromField(text, execution)
: getStringFromField(getExpression(execution, textVar), execution);
String htmlStr = htmlVar == null ? getStringFromField(html, execution)
: getStringFromField(getExpression(execution, htmlVar), execution);
String charSetStr = getStringFromField(charset, execution);
email = createEmail(textStr, htmlStr);
addTo(email, toStr);
setFrom(email, fromStr);
addCc(email, ccStr);
addBcc(email, bccStr);
setSubject(email, subjectStr);
setMailServerProperties(email);
setCharset(email, charSetStr);
email.send(); email.send();
} catch (ActivitiException e) {
handleException(execution, e.getMessage(), e, doIgnoreException, exceptionVariable);
} catch (EmailException e) { } catch (EmailException e) {
throw new ActivitiException("Could not send e-mail", e); handleException(execution, "Could not send e-mail in execution " + execution.getId(), e, doIgnoreException, exceptionVariable);
} }
leave(execution); leave(execution);
} }
protected Email createEmail(String text, String html) { protected Email createEmail(String text, String html) {
if (html != null) { if (html != null) {
return createHtmlEmail(text, html); return createHtmlEmail(text, html);
...@@ -222,7 +234,7 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior { ...@@ -222,7 +234,7 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior {
} }
protected String getStringFromField(Expression expression, DelegateExecution execution) { protected String getStringFromField(Expression expression, DelegateExecution execution) {
if(expression != null) { if (expression != null) {
Object value = expression.getValue(execution); Object value = expression.getValue(execution);
if(value != null) { if(value != null) {
return value.toString(); return value.toString();
...@@ -237,4 +249,18 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior { ...@@ -237,4 +249,18 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior {
.createExpression(variable); .createExpression(variable);
} }
protected void handleException(ActivityExecution execution, String msg, Exception e, boolean doIgnoreException, String exceptionVariable) {
if (doIgnoreException) {
LOG.info("Ignoring email send error: " + msg, e);
if (exceptionVariable != null && exceptionVariable.length() > 0) {
execution.setVariable(exceptionVariable, msg);
}
} else {
if (e instanceof ActivitiException) {
throw (ActivitiException) e;
} else {
throw new ActivitiException(msg, e);
}
}
}
} }
...@@ -197,6 +197,7 @@ import org.activiti.engine.impl.variable.EntityManagerSession; ...@@ -197,6 +197,7 @@ import org.activiti.engine.impl.variable.EntityManagerSession;
import org.activiti.engine.impl.variable.EntityManagerSessionFactory; import org.activiti.engine.impl.variable.EntityManagerSessionFactory;
import org.activiti.engine.impl.variable.IntegerType; import org.activiti.engine.impl.variable.IntegerType;
import org.activiti.engine.impl.variable.JPAEntityVariableType; import org.activiti.engine.impl.variable.JPAEntityVariableType;
import org.activiti.engine.impl.variable.LongStringType;
import org.activiti.engine.impl.variable.LongType; import org.activiti.engine.impl.variable.LongType;
import org.activiti.engine.impl.variable.NullType; import org.activiti.engine.impl.variable.NullType;
import org.activiti.engine.impl.variable.SerializableType; import org.activiti.engine.impl.variable.SerializableType;
...@@ -1129,7 +1130,8 @@ public abstract class ProcessEngineConfigurationImpl extends ProcessEngineConfig ...@@ -1129,7 +1130,8 @@ public abstract class ProcessEngineConfigurationImpl extends ProcessEngineConfig
} }
} }
variableTypes.addType(new NullType()); variableTypes.addType(new NullType());
variableTypes.addType(new StringType()); variableTypes.addType(new StringType(4000));
variableTypes.addType(new LongStringType(4001));
variableTypes.addType(new BooleanType()); variableTypes.addType(new BooleanType());
variableTypes.addType(new ShortType()); variableTypes.addType(new ShortType());
variableTypes.addType(new IntegerType()); variableTypes.addType(new IntegerType());
......
...@@ -57,13 +57,21 @@ public class ExpressionManager { ...@@ -57,13 +57,21 @@ public class ExpressionManager {
public ExpressionManager() { public ExpressionManager() {
this(null); this(null);
}
public ExpressionManager(boolean initFactory) {
this(null, false);
} }
public ExpressionManager(Map<Object, Object> beans) { public ExpressionManager(Map<Object, Object> beans) {
// Use the ExpressionFactoryImpl in activiti build in version of juel, with parametrised method expressions enabled this(beans, true);
expressionFactory = new ExpressionFactoryImpl(); }
this.beans = beans;
public ExpressionManager(Map<Object, Object> beans, boolean initFactory) {
// Use the ExpressionFactoryImpl in activiti build in version of juel, with parametrised method expressions enabled
expressionFactory = new ExpressionFactoryImpl();
this.beans = beans;
} }
......
...@@ -248,7 +248,12 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut ...@@ -248,7 +248,12 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("Child execution {} created with parent ", createdExecution, this); log.debug("Child execution {} created with parent ", createdExecution, this);
} }
if (Context.getProcessEngineConfiguration() != null && Context.getProcessEngineConfiguration().getEventDispatcher().isEnabled()) {
Context.getProcessEngineConfiguration().getEventDispatcher().dispatchEvent(
ActivitiEventBuilder.createEntityEvent(ActivitiEventType.ENTITY_CREATED, createdExecution));
}
return createdExecution; return createdExecution;
} }
...@@ -262,7 +267,12 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut ...@@ -262,7 +267,12 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut
// Initialize the new execution // Initialize the new execution
subProcessInstance.setProcessDefinition((ProcessDefinitionImpl) processDefinition); subProcessInstance.setProcessDefinition((ProcessDefinitionImpl) processDefinition);
subProcessInstance.setProcessInstance(subProcessInstance); subProcessInstance.setProcessInstance(subProcessInstance);
if (Context.getProcessEngineConfiguration() != null && Context.getProcessEngineConfiguration().getEventDispatcher().isEnabled()) {
Context.getProcessEngineConfiguration().getEventDispatcher().dispatchEvent(
ActivitiEventBuilder.createEntityEvent(ActivitiEventType.ENTITY_CREATED, subProcessInstance));
}
Context.getCommandContext().getHistoryManager() Context.getCommandContext().getHistoryManager()
.recordSubProcessInstanceStart(this, subProcessInstance); .recordSubProcessInstanceStart(this, subProcessInstance);
...@@ -278,11 +288,6 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut ...@@ -278,11 +288,6 @@ public class ExecutionEntity extends VariableScopeImpl implements ActivityExecut
newExecution.setTenantId(getTenantId()); newExecution.setTenantId(getTenantId());
} }
if(Context.getProcessEngineConfiguration() != null && Context.getProcessEngineConfiguration().getEventDispatcher().isEnabled()) {
Context.getProcessEngineConfiguration().getEventDispatcher().dispatchEvent(
ActivitiEventBuilder.createEntityEvent(ActivitiEventType.ENTITY_CREATED, newExecution));
}
Context Context
.getCommandContext() .getCommandContext()
.getDbSqlSession() .getDbSqlSession()
......
/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.engine.impl.variable;
/**
* @author Martin Grofcik
*/
public class LongStringType extends SerializableType {
private final int minLength;
public LongStringType(int minLength) {this.minLength = minLength;}
public String getTypeName() {
return "longString";
}
public boolean isAbleToStore(Object value) {
if (value==null) {
return false;
}
if (String.class.isAssignableFrom(value.getClass())) {
String stringValue = (String) value;
return stringValue.length() >= minLength;
}
return false;
}
}
...@@ -19,7 +19,9 @@ package org.activiti.engine.impl.variable; ...@@ -19,7 +19,9 @@ package org.activiti.engine.impl.variable;
*/ */
public class StringType implements VariableType { public class StringType implements VariableType {
private static final long serialVersionUID = 1L; private final int maxLength;
public StringType(int maxLength) {this.maxLength = maxLength;}
public String getTypeName() { public String getTypeName() {
return "string"; return "string";
...@@ -41,6 +43,10 @@ public class StringType implements VariableType { ...@@ -41,6 +43,10 @@ public class StringType implements VariableType {
if (value==null) { if (value==null) {
return true; return true;
} }
return String.class.isAssignableFrom(value.getClass()); if (String.class.isAssignableFrom(value.getClass())) {
String stringValue = (String) value;
return stringValue.length() <= maxLength;
}
return false;
} }
} }
...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY ( ...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY (
); );
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.version', '5.15.1-SNAPSHOT', 1); values ('schema.version', '5.16-SNAPSHOT', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.history', 'create(5.15.1-SNAPSHOT)', 1); values ('schema.history', 'create(5.16-SNAPSHOT)', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('next.dbid', '1', 1); values ('next.dbid', '1', 1);
......
...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY ( ...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY (
); );
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.version', '5.15.1-SNAPSHOT', 1); values ('schema.version', '5.16-SNAPSHOT', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.history', 'create(5.15.1-SNAPSHOT)', 1); values ('schema.history', 'create(5.16-SNAPSHOT)', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('next.dbid', '1', 1); values ('next.dbid', '1', 1);
......
...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY ( ...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY (
); );
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.version', '5.15.1-SNAPSHOT', 1); values ('schema.version', '5.16-SNAPSHOT', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.history', 'create(5.15.1-SNAPSHOT)', 1); values ('schema.history', 'create(5.16-SNAPSHOT)', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('next.dbid', '1', 1); values ('next.dbid', '1', 1);
......
...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY ( ...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY (
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.version', '5.15.1-SNAPSHOT', 1); values ('schema.version', '5.16-SNAPSHOT', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.history', 'create(5.15.1-SNAPSHOT)', 1); values ('schema.history', 'create(5.16-SNAPSHOT)', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('next.dbid', '1', 1); values ('next.dbid', '1', 1);
......
...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY ( ...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY (
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin; ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.version', '5.15.1-SNAPSHOT', 1); values ('schema.version', '5.16-SNAPSHOT', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.history', 'create(5.15.1-SNAPSHOT)', 1); values ('schema.history', 'create(5.16-SNAPSHOT)', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('next.dbid', '1', 1); values ('next.dbid', '1', 1);
......
...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY ( ...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY (
); );
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.version', '5.15.1-SNAPSHOT', 1); values ('schema.version', '5.16-SNAPSHOT', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.history', 'create(5.15.1-SNAPSHOT)', 1); values ('schema.history', 'create(5.16-SNAPSHOT)', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('next.dbid', '1', 1); values ('next.dbid', '1', 1);
......
...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY ( ...@@ -6,10 +6,10 @@ create table ACT_GE_PROPERTY (
); );
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.version', '5.15.1-SNAPSHOT', 1); values ('schema.version', '5.16-SNAPSHOT', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('schema.history', 'create(5.15.1-SNAPSHOT)', 1); values ('schema.history', 'create(5.16-SNAPSHOT)', 1);
insert into ACT_GE_PROPERTY insert into ACT_GE_PROPERTY
values ('next.dbid', '1', 1); values ('next.dbid', '1', 1);
......
...@@ -67,6 +67,7 @@ ...@@ -67,6 +67,7 @@
<result property="processInstanceId" column="PROC_INST_ID_" jdbcType="VARCHAR" /> <result property="processInstanceId" column="PROC_INST_ID_" jdbcType="VARCHAR" />
<result property="url" column="URL_" jdbcType="VARCHAR" /> <result property="url" column="URL_" jdbcType="VARCHAR" />
<result property="contentId" column="CONTENT_ID_" jdbcType="VARCHAR" /> <result property="contentId" column="CONTENT_ID_" jdbcType="VARCHAR" />
<result property="userId" column="USER_ID_" jdbcType="VARCHAR" />
</resultMap> </resultMap>
<!-- ATTACHMENT SELECT --> <!-- ATTACHMENT SELECT -->
......
...@@ -13,12 +13,17 @@ ...@@ -13,12 +13,17 @@
package org.activiti.engine.test.api.event; package org.activiti.engine.test.api.event;
import org.activiti.engine.delegate.event.ActivitiEvent; import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventListener;
import org.activiti.engine.delegate.event.ActivitiEventType; import org.activiti.engine.delegate.event.ActivitiEventType;
import org.activiti.engine.delegate.event.ActivitiEntityEvent; import org.activiti.engine.delegate.event.ActivitiEntityEvent;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.impl.test.PluggableActivitiTestCase; import org.activiti.engine.impl.test.PluggableActivitiTestCase;
import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.test.Deployment; import org.activiti.engine.test.Deployment;
import java.util.ArrayList;
import java.util.List;
/** /**
* Test case for all {@link ActivitiEvent}s related to process instances. * Test case for all {@link ActivitiEvent}s related to process instances.
* *
...@@ -26,7 +31,7 @@ import org.activiti.engine.test.Deployment; ...@@ -26,7 +31,7 @@ import org.activiti.engine.test.Deployment;
*/ */
public class ProcessInstanceEventsTest extends PluggableActivitiTestCase { public class ProcessInstanceEventsTest extends PluggableActivitiTestCase {
private TestActivitiEntityEventListener listener; private TestInitializedEntityEventListener listener;
/** /**
* Test create, update and delete events of process instances. * Test create, update and delete events of process instances.
...@@ -34,9 +39,9 @@ public class ProcessInstanceEventsTest extends PluggableActivitiTestCase { ...@@ -34,9 +39,9 @@ public class ProcessInstanceEventsTest extends PluggableActivitiTestCase {
@Deployment(resources= {"org/activiti/engine/test/api/runtime/oneTaskProcess.bpmn20.xml"}) @Deployment(resources= {"org/activiti/engine/test/api/runtime/oneTaskProcess.bpmn20.xml"})
public void testProcessInstanceEvents() throws Exception { public void testProcessInstanceEvents() throws Exception {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess"); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
assertNotNull(processInstance); assertNotNull(processInstance);
// Check create-event // Check create-event
assertEquals(1, listener.getEventsReceived().size()); assertEquals(1, listener.getEventsReceived().size());
assertTrue(listener.getEventsReceived().get(0) instanceof ActivitiEntityEvent); assertTrue(listener.getEventsReceived().get(0) instanceof ActivitiEntityEvent);
...@@ -48,7 +53,7 @@ public class ProcessInstanceEventsTest extends PluggableActivitiTestCase { ...@@ -48,7 +53,7 @@ public class ProcessInstanceEventsTest extends PluggableActivitiTestCase {
assertEquals(processInstance.getId(), event.getExecutionId()); assertEquals(processInstance.getId(), event.getExecutionId());
assertEquals(processInstance.getProcessDefinitionId(), event.getProcessDefinitionId()); assertEquals(processInstance.getProcessDefinitionId(), event.getProcessDefinitionId());
listener.clearEventsReceived(); listener.clearEventsReceived();
// Check update event when suspended/activated // Check update event when suspended/activated
runtimeService.suspendProcessInstanceById(processInstance.getId()); runtimeService.suspendProcessInstanceById(processInstance.getId());
runtimeService.activateProcessInstanceById(processInstance.getId()); runtimeService.activateProcessInstanceById(processInstance.getId());
...@@ -108,14 +113,24 @@ public class ProcessInstanceEventsTest extends PluggableActivitiTestCase { ...@@ -108,14 +113,24 @@ public class ProcessInstanceEventsTest extends PluggableActivitiTestCase {
assertEquals(processInstance.getProcessDefinitionId(), event.getProcessDefinitionId()); assertEquals(processInstance.getProcessDefinitionId(), event.getProcessDefinitionId());
listener.clearEventsReceived(); listener.clearEventsReceived();
} }
/**
@Override * Test process with signals start.
*/
@Deployment(resources = {"org/activiti/engine/test/bpmn/event/signal/SignalEventTest.testSignalWithGlobalScope.bpmn20.xml"})
public void testSignalProcessInstanceStart() throws Exception {
this.runtimeService.startProcessInstanceByKey("processWithSignalCatch");
listener.clearEventsReceived();
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("processWithSignalThrow");
listener.clearEventsReceived();
}
@Override
protected void initializeServices() { protected void initializeServices() {
super.initializeServices(); super.initializeServices();
this.listener = new TestInitializedEntityEventListener();
listener = new TestActivitiEntityEventListener(ProcessInstance.class); processEngineConfiguration.getEventDispatcher().addEventListener(this.listener);
processEngineConfiguration.getEventDispatcher().addEventListener(listener);
} }
@Override @Override
...@@ -127,4 +142,38 @@ public class ProcessInstanceEventsTest extends PluggableActivitiTestCase { ...@@ -127,4 +142,38 @@ public class ProcessInstanceEventsTest extends PluggableActivitiTestCase {
processEngineConfiguration.getEventDispatcher().removeEventListener(listener); processEngineConfiguration.getEventDispatcher().removeEventListener(listener);
} }
} }
private class TestInitializedEntityEventListener implements ActivitiEventListener {
private List<ActivitiEvent> eventsReceived;
public TestInitializedEntityEventListener() {
eventsReceived = new ArrayList<ActivitiEvent>();
}
public List<ActivitiEvent> getEventsReceived() {
return eventsReceived;
}
public void clearEventsReceived() {
eventsReceived.clear();
}
@Override
public void onEvent(ActivitiEvent event) {
if (event instanceof ActivitiEntityEvent && ProcessInstance.class.isAssignableFrom(((ActivitiEntityEvent) event).getEntity().getClass())) {
// check whether entity in the event is initialized before adding to the list.
assertNotNull(((ExecutionEntity) ((ActivitiEntityEvent) event).getEntity()).getId());
eventsReceived.add(event);
}
}
@Override
public boolean isFailOnException() {
return true;
}
}
} }
...@@ -49,8 +49,22 @@ public class RuntimeServiceTest extends PluggableActivitiTestCase { ...@@ -49,8 +49,22 @@ public class RuntimeServiceTest extends PluggableActivitiTestCase {
Task task = taskService.createTaskQuery().includeProcessVariables().singleResult(); Task task = taskService.createTaskQuery().includeProcessVariables().singleResult();
assertNotNull(task.getProcessVariables()); assertNotNull(task.getProcessVariables());
} }
@Deployment(resources = {"org/activiti/engine/test/api/oneTaskProcess.bpmn20.xml"})
public void testStartProcessInstanceWithLongStringVariable() {
Map<String, Object> vars = new HashMap<String, Object>();
StringBuilder longString = new StringBuilder();
for (int i=0; i<4001; i++) {
longString.append("c");
}
vars.put("longString", longString.toString());
runtimeService.startProcessInstanceByKey("oneTaskProcess", vars);
Task task = taskService.createTaskQuery().includeProcessVariables().singleResult();
assertNotNull(task.getProcessVariables());
assertEquals( longString.toString(), task.getProcessVariables().get("longString"));
}
public void testStartProcessInstanceByKeyNullKey() { public void testStartProcessInstanceByKeyNullKey() {
try { try {
runtimeService.startProcessInstanceByKey(null); runtimeService.startProcessInstanceByKey(null);
......
...@@ -26,6 +26,7 @@ import javax.activation.DataHandler; ...@@ -26,6 +26,7 @@ import javax.activation.DataHandler;
import javax.mail.MessagingException; import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.impl.util.CollectionUtil; import org.activiti.engine.impl.util.CollectionUtil;
import org.activiti.engine.test.Deployment; import org.activiti.engine.test.Deployment;
import org.subethamail.wiser.WiserMessage; import org.subethamail.wiser.WiserMessage;
...@@ -115,6 +116,30 @@ public class EmailSendTaskTest extends EmailTestCase { ...@@ -115,6 +116,30 @@ public class EmailSendTaskTest extends EmailTestCase {
assertEmailSend(messages.get(0), true, "Test", "Mr. <b>Kermit</b>", "activiti@localhost", Arrays.asList("kermit@activiti.org"), null); assertEmailSend(messages.get(0), true, "Test", "Mr. <b>Kermit</b>", "activiti@localhost", Arrays.asList("kermit@activiti.org"), null);
} }
@Deployment
public void testInvalidAddress() throws Exception {
try {
runtimeService.startProcessInstanceByKey("invalidAddress").getId();
fail("An Invalid email address should not execute");
} catch(ActivitiException e) {
// fine
} catch(Exception e) {
fail("Only an ActivitiException is expected here but not: " + e);
}
}
@Deployment
public void testInvalidAddressWithoutException() throws Exception {
String piId = runtimeService.startProcessInstanceByKey("invalidAddressWithoutException").getId();
assertNotNull(historyService.createHistoricVariableInstanceQuery().processInstanceId(piId).variableName("emailError").singleResult());
}
@Deployment
public void testInvalidAddressWithoutExceptionVariableName() throws Exception {
String piId = runtimeService.startProcessInstanceByKey("invalidAddressWithoutException").getId();
assertNull(historyService.createHistoricVariableInstanceQuery().processInstanceId(piId).variableName("emailError").singleResult());
}
// Helper // Helper
private void assertEmailSend(WiserMessage emailMessage, boolean htmlMail, String subject, String message, private void assertEmailSend(WiserMessage emailMessage, boolean htmlMail, String subject, String message,
......
...@@ -26,6 +26,7 @@ import javax.activation.DataHandler; ...@@ -26,6 +26,7 @@ import javax.activation.DataHandler;
import javax.mail.MessagingException; import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessage;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.impl.util.CollectionUtil; import org.activiti.engine.impl.util.CollectionUtil;
import org.activiti.engine.test.Deployment; import org.activiti.engine.test.Deployment;
import org.subethamail.wiser.WiserMessage; import org.subethamail.wiser.WiserMessage;
...@@ -128,6 +129,30 @@ public class EmailServiceTaskTest extends EmailTestCase { ...@@ -128,6 +129,30 @@ public class EmailServiceTaskTest extends EmailTestCase {
assertEmailSend(messages.get(0), true, "Test", "Mr. <b>Kermit</b>", "activiti@localhost", Arrays.asList("kermit@activiti.org"), null); assertEmailSend(messages.get(0), true, "Test", "Mr. <b>Kermit</b>", "activiti@localhost", Arrays.asList("kermit@activiti.org"), null);
} }
@Deployment
public void testInvalidAddress() throws Exception {
try {
runtimeService.startProcessInstanceByKey("invalidAddress").getId();
fail("An Invalid email address should not execute");
} catch(ActivitiException e) {
// fine
} catch(Exception e) {
fail("Only an ActivitiException is expected here but not: " + e);
}
}
@Deployment
public void testInvalidAddressWithoutException() throws Exception {
String piId = runtimeService.startProcessInstanceByKey("invalidAddressWithoutException").getId();
assertNotNull(historyService.createHistoricVariableInstanceQuery().processInstanceId(piId).variableName("emailError").singleResult());
}
@Deployment
public void testInvalidAddressWithoutExceptionVariableName() throws Exception {
String piId = runtimeService.startProcessInstanceByKey("invalidAddressWithoutException").getId();
assertNull(historyService.createHistoricVariableInstanceQuery().processInstanceId(piId).variableName("emailError").singleResult());
}
// Helper // Helper
public static void assertEmailSend(WiserMessage emailMessage, boolean htmlMail, String subject, String message, public static void assertEmailSend(WiserMessage emailMessage, boolean htmlMail, String subject, String message,
......
<definitions
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti="http://activiti.org/bpmn"
targetNamespace="Examples">
<process id="simpleTextOnly" >
<startEvent id="theStart" />
<sequenceFlow sourceRef="theStart" targetRef="sendMail" />
<sendTask id="sendMail" activiti:type="mail">
<extensionElements>
<activiti:field name="to">
<activiti:string>kermit@activiti.org@org</activiti:string>
</activiti:field>
<activiti:field name="subject">
<activiti:string>Hello Kermit!</activiti:string>
</activiti:field>
<activiti:field name="text">
<activiti:string>This a text only e-mail.</activiti:string>
</activiti:field>
</extensionElements>
</sendTask>
<sequenceFlow sourceRef="sendMail" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
</definitions>
\ No newline at end of file
<definitions
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti="http://activiti.org/bpmn"
targetNamespace="Examples">
<process id="invalidAddressWithoutException" >
<startEvent id="theStart" />
<sequenceFlow sourceRef="theStart" targetRef="sendMail" />
<sendTask id="sendMail" activiti:type="mail">
<extensionElements>
<activiti:field name="ignoreException" stringValue="true" />
<activiti:field name="exceptionVariableName" stringValue="emailError" />
<activiti:field name="to">
<activiti:string>kermit@activiti.org@org</activiti:string>
</activiti:field>
<activiti:field name="subject">
<activiti:string>Hello Kermit!</activiti:string>
</activiti:field>
<activiti:field name="text">
<activiti:string>This a text only e-mail.</activiti:string>
</activiti:field>
</extensionElements>
</sendTask>
<sequenceFlow sourceRef="sendMail" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
</definitions>
\ No newline at end of file
<definitions
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti="http://activiti.org/bpmn"
targetNamespace="Examples">
<process id="invalidAddressWithoutException" >
<startEvent id="theStart" />
<sequenceFlow sourceRef="theStart" targetRef="sendMail" />
<sendTask id="sendMail" activiti:type="mail">
<extensionElements>
<activiti:field name="ignoreException" stringValue="true" />
<activiti:field name="to">
<activiti:string>kermit@activiti.org@org</activiti:string>
</activiti:field>
<activiti:field name="subject">
<activiti:string>Hello Kermit!</activiti:string>
</activiti:field>
<activiti:field name="text">
<activiti:string>This a text only e-mail.</activiti:string>
</activiti:field>
</extensionElements>
</sendTask>
<sequenceFlow sourceRef="sendMail" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
</definitions>
\ No newline at end of file
<definitions
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti="http://activiti.org/bpmn"
targetNamespace="Examples">
<process id="simpleTextOnly" >
<startEvent id="theStart" />
<sequenceFlow sourceRef="theStart" targetRef="sendMail" />
<sendTask id="sendMail" activiti:type="mail">
<extensionElements>
<activiti:field name="to">
<activiti:string>kermit@activiti.org@org</activiti:string>
</activiti:field>
<activiti:field name="subject">
<activiti:string>Hello Kermit!</activiti:string>
</activiti:field>
<activiti:field name="text">
<activiti:string>This a text only e-mail.</activiti:string>
</activiti:field>
</extensionElements>
</sendTask>
<sequenceFlow sourceRef="sendMail" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
</definitions>
\ No newline at end of file
<definitions
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti="http://activiti.org/bpmn"
targetNamespace="Examples">
<process id="invalidAddressWithoutException" >
<startEvent id="theStart" />
<sequenceFlow sourceRef="theStart" targetRef="sendMail" />
<sendTask id="sendMail" activiti:type="mail">
<extensionElements>
<activiti:field name="ignoreException" stringValue="true" />
<activiti:field name="exceptionVariableName" stringValue="emailError" />
<activiti:field name="to">
<activiti:string>kermit@activiti.org@org</activiti:string>
</activiti:field>
<activiti:field name="subject">
<activiti:string>Hello Kermit!</activiti:string>
</activiti:field>
<activiti:field name="text">
<activiti:string>This a text only e-mail.</activiti:string>
</activiti:field>
</extensionElements>
</sendTask>
<sequenceFlow sourceRef="sendMail" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
</definitions>
\ No newline at end of file
<definitions
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:activiti="http://activiti.org/bpmn"
targetNamespace="Examples">
<process id="invalidAddressWithoutException" >
<startEvent id="theStart" />
<sequenceFlow sourceRef="theStart" targetRef="sendMail" />
<sendTask id="sendMail" activiti:type="mail">
<extensionElements>
<activiti:field name="ignoreException" stringValue="true" />
<activiti:field name="to">
<activiti:string>kermit@activiti.org@org</activiti:string>
</activiti:field>
<activiti:field name="subject">
<activiti:string>Hello Kermit!</activiti:string>
</activiti:field>
<activiti:field name="text">
<activiti:string>This a text only e-mail.</activiti:string>
</activiti:field>
</extensionElements>
</sendTask>
<sequenceFlow sourceRef="sendMail" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
</definitions>
\ No newline at end of file
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<build> <build>
......
...@@ -79,10 +79,10 @@ public class BlueprintBasicTest { ...@@ -79,10 +79,10 @@ public class BlueprintBasicTest {
@Configuration @Configuration
public Option[] createConfiguration() { public Option[] createConfiguration() {
Option[] coreBundles = options( Option[] coreBundles = options(
mavenBundle().groupId("org.activiti").artifactId("activiti-bpmn-model").version("5.15.1-SNAPSHOT"), mavenBundle().groupId("org.activiti").artifactId("activiti-bpmn-model").version("5.16-SNAPSHOT"),
mavenBundle().groupId("org.activiti").artifactId("activiti-bpmn-converter").version("5.15.1-SNAPSHOT"), mavenBundle().groupId("org.activiti").artifactId("activiti-bpmn-converter").version("5.16-SNAPSHOT"),
mavenBundle().groupId("org.activiti").artifactId("activiti-process-validation").version("5.15.1-SNAPSHOT"), mavenBundle().groupId("org.activiti").artifactId("activiti-process-validation").version("5.16-SNAPSHOT"),
mavenBundle().groupId("org.activiti").artifactId("activiti-engine").version("5.15.1-SNAPSHOT"), mavenBundle().groupId("org.activiti").artifactId("activiti-engine").version("5.16-SNAPSHOT"),
mavenBundle().groupId("org.apache.commons").artifactId("commons-lang3").version("3.1"), mavenBundle().groupId("org.apache.commons").artifactId("commons-lang3").version("3.1"),
mavenBundle().groupId("org.codehaus.jackson").artifactId("jackson-core-asl").version("1.9.9"), mavenBundle().groupId("org.codehaus.jackson").artifactId("jackson-core-asl").version("1.9.9"),
mavenBundle().groupId("log4j").artifactId("log4j").version("1.2.17"), mavenBundle().groupId("log4j").artifactId("log4j").version("1.2.17"),
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -59,10 +59,10 @@ import org.activiti.rest.service.api.engine.variable.IntegerRestVariableConverte ...@@ -59,10 +59,10 @@ import org.activiti.rest.service.api.engine.variable.IntegerRestVariableConverte
import org.activiti.rest.service.api.engine.variable.LongRestVariableConverter; import org.activiti.rest.service.api.engine.variable.LongRestVariableConverter;
import org.activiti.rest.service.api.engine.variable.QueryVariable; import org.activiti.rest.service.api.engine.variable.QueryVariable;
import org.activiti.rest.service.api.engine.variable.RestVariable; import org.activiti.rest.service.api.engine.variable.RestVariable;
import org.activiti.rest.service.api.engine.variable.RestVariable.RestVariableScope;
import org.activiti.rest.service.api.engine.variable.RestVariableConverter; import org.activiti.rest.service.api.engine.variable.RestVariableConverter;
import org.activiti.rest.service.api.engine.variable.ShortRestVariableConverter; import org.activiti.rest.service.api.engine.variable.ShortRestVariableConverter;
import org.activiti.rest.service.api.engine.variable.StringRestVariableConverter; import org.activiti.rest.service.api.engine.variable.StringRestVariableConverter;
import org.activiti.rest.service.api.engine.variable.RestVariable.RestVariableScope;
import org.activiti.rest.service.api.form.FormDataResponse; import org.activiti.rest.service.api.form.FormDataResponse;
import org.activiti.rest.service.api.form.RestEnumFormProperty; import org.activiti.rest.service.api.form.RestEnumFormProperty;
import org.activiti.rest.service.api.form.RestFormProperty; import org.activiti.rest.service.api.form.RestFormProperty;
...@@ -79,10 +79,10 @@ import org.activiti.rest.service.api.identity.UserResponse; ...@@ -79,10 +79,10 @@ import org.activiti.rest.service.api.identity.UserResponse;
import org.activiti.rest.service.api.management.JobResponse; import org.activiti.rest.service.api.management.JobResponse;
import org.activiti.rest.service.api.management.TableResponse; import org.activiti.rest.service.api.management.TableResponse;
import org.activiti.rest.service.api.repository.DeploymentResourceResponse; import org.activiti.rest.service.api.repository.DeploymentResourceResponse;
import org.activiti.rest.service.api.repository.DeploymentResourceResponse.DeploymentResourceType;
import org.activiti.rest.service.api.repository.DeploymentResponse; import org.activiti.rest.service.api.repository.DeploymentResponse;
import org.activiti.rest.service.api.repository.ModelResponse; import org.activiti.rest.service.api.repository.ModelResponse;
import org.activiti.rest.service.api.repository.ProcessDefinitionResponse; import org.activiti.rest.service.api.repository.ProcessDefinitionResponse;
import org.activiti.rest.service.api.repository.DeploymentResourceResponse.DeploymentResourceType;
import org.activiti.rest.service.api.runtime.process.ExecutionResponse; import org.activiti.rest.service.api.runtime.process.ExecutionResponse;
import org.activiti.rest.service.api.runtime.process.ProcessInstanceResponse; import org.activiti.rest.service.api.runtime.process.ProcessInstanceResponse;
import org.activiti.rest.service.api.runtime.task.TaskResponse; import org.activiti.rest.service.api.runtime.task.TaskResponse;
...@@ -430,6 +430,7 @@ public class RestResponseFactory { ...@@ -430,6 +430,7 @@ public class RestResponseFactory {
result.setId(processInstance.getId()); result.setId(processInstance.getId());
result.setProcessDefinitionId(processInstance.getProcessDefinitionId()); result.setProcessDefinitionId(processInstance.getProcessDefinitionId());
result.setProcessDefinitionUrl(securedResource.createFullResourceUrl(RestUrls.URL_PROCESS_DEFINITION, processInstance.getProcessDefinitionId())); result.setProcessDefinitionUrl(securedResource.createFullResourceUrl(RestUrls.URL_PROCESS_DEFINITION, processInstance.getProcessDefinitionId()));
result.setEnded(processInstance.isEnded());
result.setSuspended(processInstance.isSuspended()); result.setSuspended(processInstance.isSuspended());
result.setUrl(securedResource.createFullResourceUrl(RestUrls.URL_PROCESS_INSTANCE, processInstance.getId())); result.setUrl(securedResource.createFullResourceUrl(RestUrls.URL_PROCESS_INSTANCE, processInstance.getId()));
result.setTenantId(processInstance.getTenantId()); result.setTenantId(processInstance.getTenantId());
......
...@@ -115,7 +115,7 @@ public class ExecutionVariableCollectionResource extends BaseExecutionVariableRe ...@@ -115,7 +115,7 @@ public class ExecutionVariableCollectionResource extends BaseExecutionVariableRe
RestVariable[] restVariables = getConverterService().toObject(representation, RestVariable[].class, this); RestVariable[] restVariables = getConverterService().toObject(representation, RestVariable[].class, this);
if(restVariables == null || restVariables.length == 0) { if(restVariables == null || restVariables.length == 0) {
throw new ActivitiIllegalArgumentException("Request didn't cantain a list of variables to create."); throw new ActivitiIllegalArgumentException("Request didn't contain a list of variables to create.");
} }
RestVariableScope sharedScope = null; RestVariableScope sharedScope = null;
......
...@@ -87,7 +87,7 @@ public class ProcessInstanceResource extends SecuredResource { ...@@ -87,7 +87,7 @@ public class ProcessInstanceResource extends SecuredResource {
} }
ActivitiUtil.getRuntimeService().suspendProcessInstanceById(processInstance.getId()); ActivitiUtil.getRuntimeService().suspendProcessInstanceById(processInstance.getId());
ProcessInstanceResponse response = getApplication(ActivitiRestServicesApplication.class).getRestResponseFactory() ProcessInstanceResponse response = getApplication(ActivitiRestServicesApplication.class).getRestResponseFactory()
.createProcessInstanceResponse(this, processInstance); .createProcessInstanceResponse(this, processInstance);
// No need to re-fetch the instance, just alter the suspended state of the result-object // No need to re-fetch the instance, just alter the suspended state of the result-object
......
...@@ -26,6 +26,7 @@ public class ProcessInstanceResponse { ...@@ -26,6 +26,7 @@ public class ProcessInstanceResponse {
protected String url; protected String url;
protected String businessKey; protected String businessKey;
protected boolean suspended; protected boolean suspended;
protected boolean ended;
protected String processDefinitionId; protected String processDefinitionId;
protected String processDefinitionUrl; protected String processDefinitionUrl;
protected String activityId; protected String activityId;
...@@ -64,6 +65,14 @@ public class ProcessInstanceResponse { ...@@ -64,6 +65,14 @@ public class ProcessInstanceResponse {
this.suspended = suspended; this.suspended = suspended;
} }
public boolean isEnded() {
return ended;
}
public void setEnded(boolean ended) {
this.ended = ended;
}
public String getProcessDefinitionId() { public String getProcessDefinitionId() {
return processDefinitionId; return processDefinitionId;
} }
......
...@@ -86,7 +86,7 @@ public class TaskVariableCollectionResource extends TaskVariableBaseResource { ...@@ -86,7 +86,7 @@ public class TaskVariableCollectionResource extends TaskVariableBaseResource {
RestVariable[] restVariables = getConverterService().toObject(representation, RestVariable[].class, this); RestVariable[] restVariables = getConverterService().toObject(representation, RestVariable[].class, this);
if(restVariables == null || restVariables.length == 0) { if(restVariables == null || restVariables.length == 0) {
throw new ActivitiIllegalArgumentException("Request didn't cantain a list of variables to create."); throw new ActivitiIllegalArgumentException("Request didn't contain a list of variables to create.");
} }
RestVariableScope sharedScope = null; RestVariableScope sharedScope = null;
......
...@@ -298,6 +298,11 @@ public class ProcessInstanceCollectionResourceTest extends BaseRestTestCase { ...@@ -298,6 +298,11 @@ public class ProcessInstanceCollectionResourceTest extends BaseRestTestCase {
client.post(requestNode); client.post(requestNode);
assertEquals(Status.SUCCESS_CREATED, client.getResponse().getStatus()); assertEquals(Status.SUCCESS_CREATED, client.getResponse().getStatus());
JsonNode responseNode = objectMapper.readTree(client.getResponseEntity().getStream());
assertEquals("processTask", responseNode.get("activityId").asText());
assertEquals(false, responseNode.get("ended").asBoolean());
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().singleResult(); ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().singleResult();
assertNotNull(processInstance); assertNotNull(processInstance);
......
...@@ -257,7 +257,7 @@ public class ProcessInstanceVariablesCollectionResourceTest extends BaseRestTest ...@@ -257,7 +257,7 @@ public class ProcessInstanceVariablesCollectionResourceTest extends BaseRestTest
fail("Exception expected"); fail("Exception expected");
} catch (ResourceException expected) { } catch (ResourceException expected) {
assertEquals(Status.CLIENT_ERROR_BAD_REQUEST, expected.getStatus()); assertEquals(Status.CLIENT_ERROR_BAD_REQUEST, expected.getStatus());
assertEquals("Request didn't cantain a list of variables to create.", expected.getStatus().getDescription()); assertEquals("Request didn't contain a list of variables to create.", expected.getStatus().getDescription());
} }
// Test passing in object instead of array // Test passing in object instead of array
...@@ -267,7 +267,7 @@ public class ProcessInstanceVariablesCollectionResourceTest extends BaseRestTest ...@@ -267,7 +267,7 @@ public class ProcessInstanceVariablesCollectionResourceTest extends BaseRestTest
fail("Exception expected"); fail("Exception expected");
} catch (ResourceException expected) { } catch (ResourceException expected) {
assertEquals(Status.CLIENT_ERROR_BAD_REQUEST, expected.getStatus()); assertEquals(Status.CLIENT_ERROR_BAD_REQUEST, expected.getStatus());
assertEquals("Request didn't cantain a list of variables to create.", expected.getStatus().getDescription()); assertEquals("Request didn't contain a list of variables to create.", expected.getStatus().getDescription());
} }
} }
......
...@@ -400,7 +400,7 @@ public class TaskVariablesCollectionResourceTest extends BaseRestTestCase { ...@@ -400,7 +400,7 @@ public class TaskVariablesCollectionResourceTest extends BaseRestTestCase {
fail("Exception expected"); fail("Exception expected");
} catch (ResourceException expected) { } catch (ResourceException expected) {
assertEquals(Status.CLIENT_ERROR_BAD_REQUEST, expected.getStatus()); assertEquals(Status.CLIENT_ERROR_BAD_REQUEST, expected.getStatus());
assertEquals("Request didn't cantain a list of variables to create.", expected.getStatus().getDescription()); assertEquals("Request didn't contain a list of variables to create.", expected.getStatus().getDescription());
} }
// Test passing in object instead of array // Test passing in object instead of array
...@@ -410,7 +410,7 @@ public class TaskVariablesCollectionResourceTest extends BaseRestTestCase { ...@@ -410,7 +410,7 @@ public class TaskVariablesCollectionResourceTest extends BaseRestTestCase {
fail("Exception expected"); fail("Exception expected");
} catch (ResourceException expected) { } catch (ResourceException expected) {
assertEquals(Status.CLIENT_ERROR_BAD_REQUEST, expected.getStatus()); assertEquals(Status.CLIENT_ERROR_BAD_REQUEST, expected.getStatus());
assertEquals("Request didn't cantain a list of variables to create.", expected.getStatus().getDescription()); assertEquals("Request didn't contain a list of variables to create.", expected.getStatus().getDescription());
} }
} finally { } finally {
// Clean adhoc-tasks even if test fails // Clean adhoc-tasks even if test fails
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<build> <build>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<build> <build>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
</parent> </parent>
<packaging>pom</packaging> <packaging>pom</packaging>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.framework.version>3.2.7.RELEASE</spring.framework.version> <spring.framework.version>3.2.7.RELEASE</spring.framework.version>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<property file="${user.home}/.activiti/build.properties" /> <property file="${user.home}/.activiti/build.properties" />
<property file="../distro/src/setup/build.properties" /> <property file="../distro/src/setup/build.properties" />
<property name="activiti.version" value="5.15.1-SNAPSHOT" /> <property name="activiti.version" value="5.16-SNAPSHOT" />
<property name="activiti.home" value="../distro/target/activiti-${activiti.version}" /> <property name="activiti.home" value="../distro/target/activiti-${activiti.version}" />
<property name="macos.browser" value="/usr/bin/open" /> <property name="macos.browser" value="/usr/bin/open" />
<property name="windows.browser" value="C:/Program Files/Mozilla Firefox/firefox.exe" /> <property name="windows.browser" value="C:/Program Files/Mozilla Firefox/firefox.exe" />
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<artifactId>activiti-dbclean</artifactId> <artifactId>activiti-dbclean</artifactId>
<packaging>pom</packaging> <packaging>pom</packaging>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
<dependencies> <dependencies>
<dependency> <dependency>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<project name="activiti.qa.upgrade" default="upgrade"> <project name="activiti.qa.upgrade" default="upgrade">
<property file="${user.home}/.activiti/build.properties" /> <property file="${user.home}/.activiti/build.properties" />
<property name="activiti.version" value="5.15.1-SNAPSHOT" /> <property name="activiti.version" value="5.16-SNAPSHOT" />
<property name="database" value="h2" /> <property name="database" value="h2" />
<property name="activiti.old.version" value="5.0" /> <property name="activiti.old.version" value="5.0" />
<property name="downloads.dir" value="${user.home}/.activiti/downloads" /> <property name="downloads.dir" value="${user.home}/.activiti/downloads" />
......
...@@ -6,13 +6,13 @@ ...@@ -6,13 +6,13 @@
<name>Activiti - Upgrade Fetcher</name> <name>Activiti - Upgrade Fetcher</name>
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-upgrade-fetcher</artifactId> <artifactId>activiti-upgrade-fetcher</artifactId>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
<parent> <parent>
<groupId>org.activiti</groupId> <groupId>org.activiti</groupId>
<artifactId>activiti-root</artifactId> <artifactId>activiti-root</artifactId>
<relativePath>../..</relativePath> <relativePath>../..</relativePath>
<version>5.15.1-SNAPSHOT</version> <version>5.16-SNAPSHOT</version>
</parent> </parent>
<dependencies> <dependencies>
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<book> <book>
<bookinfo><title>Activiti 5.15.1-SNAPSHOT User Guide</title></bookinfo> <bookinfo><title>Activiti 5.16-SNAPSHOT User Guide</title></bookinfo>
<toc /> <toc />
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册