Flowable-6.7.2 源码注释地址:https://github.com/solojin/flowable-6.7.2-annotated
ChildTaskActivityBehavior 子任务活动行为类
/**
* 子任务活动行为类
*
* @author Tijs Rademakers
* @author Joram Barrez
*/
public abstract class ChildTaskActivityBehavior extends CoreCmmnTriggerableActivityBehavior {
private static final Logger LOGGER = LoggerFactory.getLogger(ChildTaskActivityBehavior.class);
protected boolean isBlocking;
protected String isBlockingExpression;
protected List<IOParameter> inParameters;
protected List<IOParameter> outParameters;
public ChildTaskActivityBehavior(boolean isBlocking, String isBlockingExpression) {
this.isBlocking = isBlocking;
this.isBlockingExpression = isBlockingExpression;
}
public ChildTaskActivityBehavior(boolean isBlocking, String isBlockingExpression, List<IOParameter> inParameters, List<IOParameter> outParameters) {
this(isBlocking, isBlockingExpression);
this.inParameters = inParameters;
this.outParameters = outParameters;
}
@Override
public void execute(CommandContext commandContext, PlanItemInstanceEntity planItemInstanceEntity) {
execute(commandContext, planItemInstanceEntity, null);
}
public abstract void execute(CommandContext commandContext, PlanItemInstanceEntity planItemInstanceEntity, VariableInfo variableInfo);
protected boolean evaluateIsBlocking(DelegatePlanItemInstance planItemInstance) {
boolean blocking = isBlocking;
if (StringUtils.isNotEmpty(isBlockingExpression)) {
Expression expression = CommandContextUtil.getExpressionManager().createExpression(isBlockingExpression);
blocking = (Boolean) expression.getValue(planItemInstance);
}
return blocking;
}
@Override
public void trigger(CommandContext commandContext, PlanItemInstanceEntity planItemInstance) {
if (!PlanItemInstanceState.ACTIVE.equals(planItemInstance.getState())) {
throw new FlowableIllegalStateException("Can only trigger a plan item that is in the ACTIVE state");
}
CommandContextUtil.getAgenda(commandContext).planCompletePlanItemInstanceOperation(planItemInstance);
}
protected void handleInParameters(PlanItemInstanceEntity planItemInstanceEntity,
CmmnEngineConfiguration cmmnEngineConfiguration, Map<String, Object> inParametersMap,
ExpressionManager expressionManager) {
if (inParameters == null) {
return;
}
for (IOParameter inParameter : inParameters) {
String variableName = null;
if (StringUtils.isNotEmpty(inParameter.getTargetExpression())) {
Expression expression = cmmnEngineConfiguration.getExpressionManager().createExpression(inParameter.getTargetExpression());
Object variableNameValue = expression.getValue(planItemInstanceEntity);
if (variableNameValue != null) {
variableName = variableNameValue.toString();
} else {
LOGGER.warn("In parameter target expression {} did not resolve to a variable name, this is most likely a programmatic error",
inParameter.getTargetExpression());
}
} else if (StringUtils.isNotEmpty(inParameter.getTarget())) {
variableName = inParameter.getTarget();
}
Object variableValue = null;
if (StringUtils<