public override BaseElement Clone() { FieldExtension clone = new FieldExtension { Values = this }; return(clone); }
public static IExpression GetListenerFieldExpression(IExecutionEntity execution, string fieldName) { FieldExtension fieldExtension = GetListenerField(execution, fieldName); if (fieldExtension != null) { return(CreateExpressionForField(fieldExtension)); } return(null); }
/// <summary> /// Creates an <seealso cref="IExpression"/> for the <seealso cref="FieldExtension"/>. /// </summary> public static IExpression CreateExpressionForField(FieldExtension fieldExtension) { if (!string.IsNullOrWhiteSpace(fieldExtension.Expression)) { ExpressionManager expressionManager = Context.ProcessEngineConfiguration.ExpressionManager; return(expressionManager.CreateExpression(fieldExtension.Expression)); } else { return(new FixedValue(fieldExtension.StringValue)); } }
protected internal virtual IActivityBehavior CreateCamelActivityBehavior(TaskWithFieldExtensions task, IList <FieldExtension> fieldExtensions) { try { Type theClass = null; FieldExtension behaviorExtension = null; foreach (FieldExtension fieldExtension in fieldExtensions) { if ("camelBehaviorClass".Equals(fieldExtension.FieldName) && !string.IsNullOrWhiteSpace(fieldExtension.StringValue)) { theClass = Type.GetType(fieldExtension.StringValue); behaviorExtension = fieldExtension; break; } } if (behaviorExtension != null) { fieldExtensions.Remove(behaviorExtension); } if (theClass == null) { // Default Camel behavior class theClass = Type.GetType("Sys.Workflow.Camel.Impl.CamelBehaviorDefaultImpl"); } IList <FieldDeclaration> fieldDeclarations = CreateFieldDeclarations(fieldExtensions); AddExceptionMapAsFieldDeclaration(fieldDeclarations, task.MapExceptions); return((IActivityBehavior)ClassDelegate.DefaultInstantiateDelegate(theClass, fieldDeclarations)); } catch (Exception e) { throw new ActivitiException("Could not find Sys.Workflow.Camel.CamelBehavior: ", e); } }
public override void ParseChildElement(XMLStreamReader xtr, BaseElement parentElement, BpmnModel model) { if (!Accepts(parentElement)) { return; } FieldExtension extension = new FieldExtension(); BpmnXMLUtil.AddXMLLocation(extension, xtr); extension.FieldName = xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_FIELD_NAME); if (!string.IsNullOrWhiteSpace(xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_FIELD_STRING))) { extension.StringValue = xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_FIELD_STRING); } else if (!string.IsNullOrWhiteSpace(xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_FIELD_EXPRESSION))) { extension.Expression = xtr.GetAttributeValue(BpmnXMLConstants.ATTRIBUTE_FIELD_EXPRESSION); } else { bool readyWithFieldExtension = false; try { while (readyWithFieldExtension == false && xtr.HasNext()) { //xtr.next(); if (xtr.IsStartElement() && BpmnXMLConstants.ELEMENT_FIELD_STRING.Equals(xtr.LocalName, StringComparison.CurrentCultureIgnoreCase)) { extension.StringValue = xtr.ElementText.Trim(); } else if (xtr.IsStartElement() && BpmnXMLConstants.ATTRIBUTE_FIELD_EXPRESSION.Equals(xtr.LocalName, StringComparison.CurrentCultureIgnoreCase)) { extension.Expression = xtr.ElementText.Trim(); } else if (xtr.EndElement && ElementName.Equals(xtr.LocalName, StringComparison.CurrentCultureIgnoreCase)) { readyWithFieldExtension = true; } if (xtr.IsEmptyElement && ElementName.Equals(xtr.LocalName, StringComparison.OrdinalIgnoreCase)) { readyWithFieldExtension = true; } } } catch (Exception e) { log.LogWarning(e, "Error parsing field extension child elements"); } } if (parentElement is ActivitiListener) { ((ActivitiListener)parentElement).FieldExtensions.Add(extension); } else if (parentElement is ServiceTask) { ((ServiceTask)parentElement).FieldExtensions.Add(extension); } else { ((SendTask)parentElement).FieldExtensions.Add(extension); } }