@Override public PlanItemDelegateExpressionActivityBehavior createPlanItemDelegateExpressionActivityBehavior(PlanItem planItem, ServiceTask task) { return new PlanItemDelegateExpressionActivityBehavior(task.getImplementation(), task.getFieldExtensions()); }
@Override public CmmnClassDelegate createCmmnClassDelegate(PlanItem planItem, ServiceTask task) { return classDelegateFactory.create(task.getImplementation(), task.getFieldExtensions()); }
@Override public CmmnActivityBehavior createHttpActivityBehavior(PlanItem planItem, ServiceTask task) { try { Class<?> theClass = null; FieldExtension behaviorExtension = null; for (FieldExtension fieldExtension : task.getFieldExtensions()) { if ("httpActivityBehaviorClass".equals(fieldExtension.getFieldName()) && StringUtils.isNotEmpty(fieldExtension.getStringValue())) { theClass = Class.forName(fieldExtension.getStringValue()); behaviorExtension = fieldExtension; break; } } if (behaviorExtension != null) { task.getFieldExtensions().remove(behaviorExtension); } // Default Http behavior class if (theClass == null) { theClass = Class.forName("org.flowable.http.cmmn.impl.CmmnHttpActivityBehaviorImpl"); } return (CmmnActivityBehavior) classDelegateFactory.defaultInstantiateDelegate(theClass, task); } catch (ClassNotFoundException e) { throw new FlowableException("Could not find org.flowable.http.HttpActivityBehavior: ", e); } }
((ServiceTask) currentCmmnElement).getFieldExtensions().add(extension);
protected static Object defaultInstantiateDelegate(String className, ServiceTask serviceTask) { Object object = ReflectUtil.instantiate(className); for (FieldExtension extension : serviceTask.getFieldExtensions()) { String value; if (StringUtils.isEmpty(extension.getStringValue())) { value = extension.getExpression(); } else { value = extension.getStringValue(); } ReflectUtil.invokeSetterOrField(object, extension.getFieldName(), value, false); } if (serviceTask != null) { ReflectUtil.invokeSetterOrField(object, "serviceTask", serviceTask, false); } return object; }