예제 #1
0
        public override BaseElement Clone()
        {
            FieldExtension clone = new FieldExtension
            {
                Values = this
            };

            return(clone);
        }
예제 #2
0
        public static IExpression GetListenerFieldExpression(IExecutionEntity execution, string fieldName)
        {
            FieldExtension fieldExtension = GetListenerField(execution, fieldName);

            if (fieldExtension != null)
            {
                return(CreateExpressionForField(fieldExtension));
            }
            return(null);
        }
예제 #3
0
 /// <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);
            }
        }
예제 #5
0
        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);
            }
        }