Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
dfb24cbd1f | |||
7a67634cfb | |||
41b5271617 | |||
cc14a59959 |
2
pom.xml
2
pom.xml
@@ -11,7 +11,7 @@
|
|||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>mq-activiti-ext</artifactId>
|
<artifactId>mq-activiti-ext</artifactId>
|
||||||
<version>1.0.4</version>
|
<version>1.0.5</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>MQ Activiti Extension</name>
|
<name>MQ Activiti Extension</name>
|
||||||
|
@@ -3087,8 +3087,7 @@
|
|||||||
"mq_prioritypackage",
|
"mq_prioritypackage",
|
||||||
"mq_payloadpackage",
|
"mq_payloadpackage",
|
||||||
"mq_replyQueueNamepackage",
|
"mq_replyQueueNamepackage",
|
||||||
"mq_statusQueueNamepackage",
|
"mq_statusQueueNamepackage"
|
||||||
"mq_metadataProcessScopepackage"
|
|
||||||
],
|
],
|
||||||
"hiddenPropertyPackages": [
|
"hiddenPropertyPackages": [
|
||||||
"multiinstance_typepackage",
|
"multiinstance_typepackage",
|
||||||
|
@@ -54,12 +54,7 @@ public class MqDelegateExecution {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void setMqVariable(String varName, Object value) {
|
protected void setMqVariable(String varName, Object value) {
|
||||||
varName = this.formulateVariableName(varName);
|
this.execution.setVariable(varName, value);
|
||||||
if (this.task.doWriteToProcessScope()) {
|
|
||||||
this.execution.setVariable(varName, value);
|
|
||||||
} else {
|
|
||||||
this.execution.setVariableLocal(varName, value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String formulateVariableName(String varName) {
|
public String formulateVariableName(String varName) {
|
||||||
@@ -67,11 +62,19 @@ public class MqDelegateExecution {
|
|||||||
varName += "_" + this.getMessageNameFromModel();
|
varName += "_" + this.getMessageNameFromModel();
|
||||||
return varName;
|
return varName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Always pull from the process scope.
|
||||||
|
* @param correlationId
|
||||||
|
*/
|
||||||
public String getCorrelationId() {
|
public String getCorrelationId() {
|
||||||
return this.execution.getVariable(this.formulateVariableName(Constants.VARIABLE_CORRELATION_ID), String.class);
|
return this.execution.getVariable(this.formulateVariableName(Constants.VARIABLE_CORRELATION_ID), String.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Always set at process scope.
|
||||||
|
* @param correlationId
|
||||||
|
*/
|
||||||
public void setCorrelationId(String correlationId) {
|
public void setCorrelationId(String correlationId) {
|
||||||
this.execution.setVariable(this.formulateVariableName(Constants.VARIABLE_CORRELATION_ID), correlationId);
|
this.execution.setVariable(this.formulateVariableName(Constants.VARIABLE_CORRELATION_ID), correlationId);
|
||||||
}
|
}
|
||||||
|
@@ -70,26 +70,62 @@ public class MqServiceTask {
|
|||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
protected <T> T getFieldValueFromModel(String fieldName, Class<T> type, VariableScope varscope, boolean forceExpressionProcessing) {
|
protected <T> T getFieldValueFromModel(String fieldName, Class<T> type, VariableScope varscope, boolean forceExpressionProcessing) {
|
||||||
|
Object value = this.getFieldValueFromModel(fieldName, varscope, forceExpressionProcessing);
|
||||||
|
|
||||||
|
if (value == null) {
|
||||||
|
return null;
|
||||||
|
} else if (String.class.isAssignableFrom(type)) {
|
||||||
|
if (value instanceof String) {
|
||||||
|
return (T) value;
|
||||||
|
} else {
|
||||||
|
return (T) value.toString();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
Method method = type.getMethod("valueOf", value.getClass());
|
||||||
|
return (T) method.invoke(null, value);
|
||||||
|
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
|
||||||
|
String strvalue;
|
||||||
|
if (value instanceof String) {
|
||||||
|
strvalue = (String) value;
|
||||||
|
} else {
|
||||||
|
strvalue = value.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
Method method = type.getMethod("valueOf", String.class);
|
||||||
|
return (T) method.invoke(null, strvalue);
|
||||||
|
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e2) {
|
||||||
|
throw new IllegalArgumentException("The target type '" + type + "' has no 'valueOf' method for String or type: " + value.getClass());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Object getFieldValueFromModel(String fieldName, VariableScope varscope, boolean forceExpressionProcessing) {
|
||||||
FieldExtension field = this.fieldMap.get(fieldName);
|
FieldExtension field = this.fieldMap.get(fieldName);
|
||||||
if (field == null) {
|
if (field == null) {
|
||||||
return null;
|
return null;
|
||||||
} else if (field.getExpression() != null && field.getExpression().length() > 0) {
|
} else if (field.getExpression() != null && field.getExpression().length() > 0) {
|
||||||
|
this.logger.trace("Field value is recognized as an expression by the Activity framework: {}: {}", fieldName, field.getExpression());
|
||||||
ExpressionManager exprman = Context.getProcessEngineConfiguration().getExpressionManager();
|
ExpressionManager exprman = Context.getProcessEngineConfiguration().getExpressionManager();
|
||||||
Expression expr = exprman.createExpression(field.getExpression());
|
Expression expr = exprman.createExpression(field.getExpression());
|
||||||
return (T) expr.getValue(varscope);
|
return expr.getValue(varscope);
|
||||||
|
} else if (field.getStringValue() == null) {
|
||||||
|
this.logger.trace("Field value is null: {}", fieldName);
|
||||||
|
return null;
|
||||||
} else if (forceExpressionProcessing) {
|
} else if (forceExpressionProcessing) {
|
||||||
|
this.logger.trace("Field value will be processed as potentially having expression(s): {}", fieldName);
|
||||||
ExpressionManager exprman = Context.getProcessEngineConfiguration().getExpressionManager();
|
ExpressionManager exprman = Context.getProcessEngineConfiguration().getExpressionManager();
|
||||||
Expression expr = exprman.createExpression(field.getStringValue());
|
Expression expr = exprman.createExpression(field.getStringValue());
|
||||||
return (T) expr.getValue(varscope);
|
return expr.getValue(varscope);
|
||||||
} else if (String.class.isAssignableFrom(type)) {
|
} else if (field.getStringValue().startsWith("${") && field.getStringValue().endsWith("}")) {
|
||||||
return (T) field.getStringValue();
|
this.logger.trace("Field value is recognized as an expression by the MQ extension: {}: {}", fieldName, field.getStringValue());
|
||||||
|
ExpressionManager exprman = Context.getProcessEngineConfiguration().getExpressionManager();
|
||||||
|
Expression expr = exprman.createExpression(field.getStringValue());
|
||||||
|
return expr.getValue(varscope);
|
||||||
} else {
|
} else {
|
||||||
try {
|
return field.getStringValue();
|
||||||
Method method = type.getMethod("valueOf", String.class);
|
|
||||||
return (T) method.invoke(null, field.getStringValue());
|
|
||||||
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
|
|
||||||
throw new IllegalArgumentException(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -8,6 +8,15 @@ public class MqSubscribeDelegateExecution extends MqDelegateExecution {
|
|||||||
public MqSubscribeDelegateExecution(ProcessEngine services, MqServiceTaskService msts, DelegateExecution execution) {
|
public MqSubscribeDelegateExecution(ProcessEngine services, MqServiceTaskService msts, DelegateExecution execution) {
|
||||||
super(services, msts, execution);
|
super(services, msts, execution);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void setMqVariable(String varName, Object value) {
|
||||||
|
varName = this.formulateVariableName(varName);
|
||||||
|
if (this.task.doWriteToProcessScope()) {
|
||||||
|
this.execution.setVariable(varName, value);
|
||||||
|
} else {
|
||||||
|
this.execution.setVariableLocal(varName, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Integer getConcurrencyFromModel() {
|
public Integer getConcurrencyFromModel() {
|
||||||
return this.getFieldValueFromModel(Constants.FIELD_CONCURRENCY, Integer.class);
|
return this.getFieldValueFromModel(Constants.FIELD_CONCURRENCY, Integer.class);
|
||||||
|
Reference in New Issue
Block a user