diff --git a/distro/build.xml b/distro/build.xml
index 50a2a19b7854f0cf5a387e692d266daee6047ee7..206fb8c1370fd01fa4b992bb76075bdd02b41c75 100644
--- a/distro/build.xml
+++ b/distro/build.xml
@@ -4,7 +4,7 @@
-
+
@@ -63,6 +63,9 @@
+
+
+
diff --git a/distro/src/readme.html b/distro/src/readme.html
index 93d94b244ef11b0e419cbb72e29ef29db7fa2682..1a6c9c559e3e80c9e1a6e26eeff62c0f7f6491e7 100644
--- a/distro/src/readme.html
+++ b/distro/src/readme.html
@@ -35,6 +35,14 @@
Activiti Release Notes
+ Release Notes - Activiti - Version 5.15.1
+
+ Highlights
+
+ - Bug fix release for a MySQL upgrade issue (more details here)
+ - Some small improvements from pull requests
+
+
Release Notes - Activiti - Version 5.15
Highlights
diff --git a/modules/activiti-bpmn-converter/pom.xml b/modules/activiti-bpmn-converter/pom.xml
index c1703a4a10e52c19a1f3f4a2d98f3c4eb53ca684..ea3eb4f6ab8b26eb25126226dca20b60cb96ec23 100644
--- a/modules/activiti-bpmn-converter/pom.xml
+++ b/modules/activiti-bpmn-converter/pom.xml
@@ -10,7 +10,7 @@
org.activiti
activiti-root
../..
- 5.15.1-SNAPSHOT
+ 5.16-SNAPSHOT
diff --git a/modules/activiti-bpmn-layout/pom.xml b/modules/activiti-bpmn-layout/pom.xml
index dec39ba0ed657709ce626e136b8a24f38dafecd1..19688da6d232eff2ab270351151e1f545b8836b9 100644
--- a/modules/activiti-bpmn-layout/pom.xml
+++ b/modules/activiti-bpmn-layout/pom.xml
@@ -10,7 +10,7 @@
org.activiti
activiti-root
../..
- 5.15.1-SNAPSHOT
+ 5.16-SNAPSHOT
diff --git a/modules/activiti-bpmn-model/pom.xml b/modules/activiti-bpmn-model/pom.xml
index ed56cc6ce60c137f17322a54f2fa509328ae4cb0..d9e366c3129d76ba1549cd72f349c1a00eeefeb6 100644
--- a/modules/activiti-bpmn-model/pom.xml
+++ b/modules/activiti-bpmn-model/pom.xml
@@ -10,7 +10,7 @@
org.activiti
activiti-root
../..
- 5.15.1-SNAPSHOT
+ 5.16-SNAPSHOT
diff --git a/modules/activiti-camel/pom.xml b/modules/activiti-camel/pom.xml
index 3fd761e73bafb9cd982a98644c6315cb327f47f3..0010074e0bce4b06d715b1ced8fec400fef0169a 100644
--- a/modules/activiti-camel/pom.xml
+++ b/modules/activiti-camel/pom.xml
@@ -11,7 +11,7 @@
org.activiti
activiti-root
../..
- 5.15.1-SNAPSHOT
+ 5.16-SNAPSHOT
diff --git a/modules/activiti-cdi/pom.xml b/modules/activiti-cdi/pom.xml
index 47b4ad27950558221aaa5a4dfa866a9adf8c68aa..d136c8fc492db6359c47306755b1254eba89ed4b 100755
--- a/modules/activiti-cdi/pom.xml
+++ b/modules/activiti-cdi/pom.xml
@@ -11,7 +11,7 @@
org.activiti
activiti-root
../..
- 5.15.1-SNAPSHOT
+ 5.16-SNAPSHOT
diff --git a/modules/activiti-cdi/src/test/java/org/activiti/cdi/test/api/BusinessProcessBeanTest.java b/modules/activiti-cdi/src/test/java/org/activiti/cdi/test/api/BusinessProcessBeanTest.java
index 9c281d48d1b057cf26c96d98d99ce462cdbe374a..345e9e72f8e7f95642e6c3efa9631f1a1de2719d 100644
--- a/modules/activiti-cdi/src/test/java/org/activiti/cdi/test/api/BusinessProcessBeanTest.java
+++ b/modules/activiti-cdi/src/test/java/org/activiti/cdi/test/api/BusinessProcessBeanTest.java
@@ -61,6 +61,18 @@ public class BusinessProcessBeanTest extends CdiActivitiTestCase {
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
@Deployment(resources = "org/activiti/cdi/test/api/BusinessProcessBeanTest.test.bpmn20.xml")
diff --git a/modules/activiti-cdi/src/test/resources/org/activiti/cdi/test/api/BusinessProcessBeanTest.testProcessWithoutWaitState.bpmn20.xml b/modules/activiti-cdi/src/test/resources/org/activiti/cdi/test/api/BusinessProcessBeanTest.testProcessWithoutWaitState.bpmn20.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d1da8aa03d667a1934ab82079e438ffbae306eaa
--- /dev/null
+++ b/modules/activiti-cdi/src/test/resources/org/activiti/cdi/test/api/BusinessProcessBeanTest.testProcessWithoutWaitState.bpmn20.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/activiti-common-rest/pom.xml b/modules/activiti-common-rest/pom.xml
index 46e33522ff49c3a356ddfcb859f89f7807408f71..68ad1f1ce27f97221959082d78f7802a9437833a 100644
--- a/modules/activiti-common-rest/pom.xml
+++ b/modules/activiti-common-rest/pom.xml
@@ -11,7 +11,7 @@
org.activiti
activiti-root
../..
- 5.15.1-SNAPSHOT
+ 5.16-SNAPSHOT
diff --git a/modules/activiti-cxf/pom.xml b/modules/activiti-cxf/pom.xml
index ce31db853521d51e92cd5b7e1fea2a25ec9089e6..f82d36d62cd6c196936d40f7a1cf58abf96376c3 100644
--- a/modules/activiti-cxf/pom.xml
+++ b/modules/activiti-cxf/pom.xml
@@ -10,7 +10,7 @@
org.activiti
activiti-root
../..
- 5.15.1-SNAPSHOT
+ 5.16-SNAPSHOT
diff --git a/modules/activiti-diagram-rest/pom.xml b/modules/activiti-diagram-rest/pom.xml
index 4708129e3df43c135a629ef02c023b8de15e0fce..f95e4a06a77fccbfd96d948af6ffc15f264e3f5e 100644
--- a/modules/activiti-diagram-rest/pom.xml
+++ b/modules/activiti-diagram-rest/pom.xml
@@ -11,7 +11,7 @@
org.activiti
activiti-root
../..
- 5.15.1-SNAPSHOT
+ 5.16-SNAPSHOT
diff --git a/modules/activiti-diagram-rest/src/main/java/org/activiti/rest/diagram/services/ProcessInstanceHighlightsResource.java b/modules/activiti-diagram-rest/src/main/java/org/activiti/rest/diagram/services/ProcessInstanceHighlightsResource.java
index caeb9573e227a45b205e996dd99b851243053285..241f93733b69229c83f6538be3f211db847ace3e 100644
--- a/modules/activiti-diagram-rest/src/main/java/org/activiti/rest/diagram/services/ProcessInstanceHighlightsResource.java
+++ b/modules/activiti-diagram-rest/src/main/java/org/activiti/rest/diagram/services/ProcessInstanceHighlightsResource.java
@@ -55,7 +55,6 @@ public class ProcessInstanceHighlightsResource extends SecuredResource {
responseJSON.put("processDefinitionId", processInstance.getProcessDefinitionId());
List highLightedActivities = runtimeService.getActiveActivityIds(processInstanceId);
- System.out.println(highLightedActivities);
List highLightedFlows = getHighLightedFlows(processDefinition, processInstanceId);
for (String activityId : highLightedActivities) {
diff --git a/modules/activiti-engine/pom.xml b/modules/activiti-engine/pom.xml
index f27bfc4fefc278d79aead35ced5a82a54b0bd6af..e70d0b35bb3ad85b7a43ae95d29b50929a57244e 100755
--- a/modules/activiti-engine/pom.xml
+++ b/modules/activiti-engine/pom.xml
@@ -10,7 +10,7 @@
org.activiti
activiti-root
../..
- 5.15.1-SNAPSHOT
+ 5.16-SNAPSHOT
diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/ProcessEngine.java b/modules/activiti-engine/src/main/java/org/activiti/engine/ProcessEngine.java
index 60a5b97b366911327aca50220ca3d151ac8eed54..63c1490dd4f06701eb7cf85e5136b32f16940b34 100644
--- a/modules/activiti-engine/src/main/java/org/activiti/engine/ProcessEngine.java
+++ b/modules/activiti-engine/src/main/java/org/activiti/engine/ProcessEngine.java
@@ -49,7 +49,7 @@ package org.activiti.engine;
public interface ProcessEngine extends EngineServices {
/** 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 activiti.cfg.xml configuration file.
diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/ProcessEngineConfiguration.java b/modules/activiti-engine/src/main/java/org/activiti/engine/ProcessEngineConfiguration.java
index c4cc51083574d37939064bdbfc686d63a31b77f9..787f3f6390b926519da13ee550a68d5e1f689cb0 100644
--- a/modules/activiti-engine/src/main/java/org/activiti/engine/ProcessEngineConfiguration.java
+++ b/modules/activiti-engine/src/main/java/org/activiti/engine/ProcessEngineConfiguration.java
@@ -96,7 +96,7 @@ public abstract class ProcessEngineConfiguration implements EngineServices {
public static final String NO_TENANT_ID = "";
protected String processEngineName = ProcessEngines.NAME_DEFAULT;
- protected int idBlockSize = 100;
+ protected int idBlockSize = 2500;
protected String history = HistoryLevel.AUDIT.getKey();
protected boolean jobExecutorActivate;
diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/behavior/MailActivityBehavior.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/behavior/MailActivityBehavior.java
index e094c7589f3d5d52acdb7f660570a61389850c03..cb16dc6e8acbb1dc39abf8b43066f9884b72c6d1 100644
--- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/behavior/MailActivityBehavior.java
+++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/bpmn/behavior/MailActivityBehavior.java
@@ -26,6 +26,8 @@ import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.SimpleEmail;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author Joram Barrez
@@ -36,6 +38,8 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior {
private static final long serialVersionUID = 1L;
+ private static final Logger LOG = LoggerFactory.getLogger(MailActivityBehavior.class);
+
protected Expression to;
protected Expression from;
protected Expression cc;
@@ -46,39 +50,47 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior {
protected Expression html;
protected Expression htmlVar;
protected Expression charset;
+ protected Expression ignoreException;
+ protected Expression exceptionVariableName;
public void execute(ActivityExecution execution) {
- 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 email = createEmail(textStr, htmlStr);
-
- addTo(email, toStr);
- setFrom(email, fromStr);
- addCc(email, ccStr);
- addBcc(email, bccStr);
- setSubject(email, subjectStr);
- setMailServerProperties(email);
- setCharset(email, charSetStr);
-
+
+ boolean doIgnoreException = Boolean.parseBoolean(getStringFromField(ignoreException, execution));
+ String exceptionVariable = getStringFromField(exceptionVariableName, execution);
+ Email email = null;
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();
+
+ } catch (ActivitiException e) {
+ handleException(execution, e.getMessage(), e, doIgnoreException, exceptionVariable);
} 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);
}
-
-
protected Email createEmail(String text, String html) {
if (html != null) {
return createHtmlEmail(text, html);
@@ -222,7 +234,7 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior {
}
protected String getStringFromField(Expression expression, DelegateExecution execution) {
- if(expression != null) {
+ if (expression != null) {
Object value = expression.getValue(execution);
if(value != null) {
return value.toString();
@@ -237,4 +249,18 @@ public class MailActivityBehavior extends AbstractBpmnActivityBehavior {
.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);
+ }
+ }
+ }
}
diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/ProcessEngineConfigurationImpl.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/ProcessEngineConfigurationImpl.java
index d712e3967e2e9bf7d2df7e4c070669901f6ee8f0..0ef2527e5e68e040a64f3c52f323739b59b7a3a1 100644
--- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/ProcessEngineConfigurationImpl.java
+++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/cfg/ProcessEngineConfigurationImpl.java
@@ -197,6 +197,7 @@ import org.activiti.engine.impl.variable.EntityManagerSession;
import org.activiti.engine.impl.variable.EntityManagerSessionFactory;
import org.activiti.engine.impl.variable.IntegerType;
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.NullType;
import org.activiti.engine.impl.variable.SerializableType;
@@ -1129,7 +1130,8 @@ public abstract class ProcessEngineConfigurationImpl extends ProcessEngineConfig
}
}
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 ShortType());
variableTypes.addType(new IntegerType());
diff --git a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/el/ExpressionManager.java b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/el/ExpressionManager.java
index 51852f22813270ddee7d3a0b91f6dd26e59156c2..49cc91b3e69ba79befd1be1fd5b42676c01d7b34 100644
--- a/modules/activiti-engine/src/main/java/org/activiti/engine/impl/el/ExpressionManager.java
+++ b/modules/activiti-engine/src/main/java/org/activiti/engine/impl/el/ExpressionManager.java
@@ -57,13 +57,21 @@ public class ExpressionManager {
public ExpressionManager() {
- this(null);
+ this(null);
+ }
+
+ public ExpressionManager(boolean initFactory) {
+ this(null, false);
}
public ExpressionManager(Map