コード例 #1
0
        protected internal virtual void ParseValidation(Element formField, FormFieldHandler formFieldHandler,
                                                        BpmnParse bpmnParse, ExpressionManager expressionManager)
        {
            var validationElement = formField.ElementNs(BpmnParse.CamundaBpmnExtensionsNs, "validation");

            if (validationElement != null)
            {
                var constraintElements = validationElement.ElementsNS(
                    BpmnParse.CamundaBpmnExtensionsNs.NamespaceUri, "constraint");

                foreach (var property in constraintElements)
                {
                    var validator = Context.ProcessEngineConfiguration.FormValidators.CreateValidator(property,
                                                                                                      bpmnParse, expressionManager);

                    var validatorName   = property.GetAttributeValue("name");
                    var validatorConfig = property.GetAttributeValue("config");

                    if (validator != null)
                    {
                        var handler = new FormFieldValidationConstraintHandler();
                        handler.Name      = validatorName;
                        handler.Config    = validatorConfig;
                        handler.Validator = validator;
                        formFieldHandler.ValidationHandlers.Add(handler);
                    }
                }
            }
        }
コード例 #2
0
 public DefaultFormFieldValidatorContext(IVariableScope variableScope, string configuration,
                                         IVariableMap submittedValues, FormFieldHandler formFieldHandler)
 {
     this.variableScope    = variableScope;
     this.configuration    = configuration;
     this.submittedValues  = submittedValues;
     this.formFieldHandler = formFieldHandler;
 }
コード例 #3
0
        protected internal virtual void ParseFormField(Element formField, BpmnParse bpmnParse,
                                                       ExpressionManager expressionManager)
        {
            var formFieldHandler = new FormFieldHandler();

            // parse Id
            var id = formField.GetAttributeValue("id");

            if (ReferenceEquals(id, null) || (id.Length == 0))
            {
                bpmnParse.AddError("attribute id must be set for FormFieldGroup and must have a non-empty value",
                                   formField);
            }
            else
            {
                formFieldHandler.Id = id;
            }

            if (id.Equals(BusinessKeyFieldId))
            {
                formFieldHandler.BusinessKey = true;
            }

            // parse name
            var name = formField.GetAttributeValue("label");

            if (!ReferenceEquals(name, null))
            {
                IExpression nameExpression = (Bpm.Engine.Impl.EL.IExpression)expressionManager.CreateExpression(name);
                formFieldHandler.Label = nameExpression;
            }

            // parse properties
            ParseProperties(formField, formFieldHandler, bpmnParse, expressionManager);

            // parse validation
            ParseValidation(formField, formFieldHandler, bpmnParse, expressionManager);

            // parse type
            var formTypes = FormTypes;
            var formType  = formTypes.ParseFormPropertyType(formField, bpmnParse);

            formFieldHandler.SetType(formType);

            // parse default value
            var defaultValue = formField.GetAttributeValue("defaultValue");

            if (!ReferenceEquals(defaultValue, null))
            {
                IExpression defaultValueExpression = (Bpm.Engine.Impl.EL.IExpression)expressionManager.CreateExpression(defaultValue);
                formFieldHandler.DefaultValueExpression = defaultValueExpression;
            }

            FormFieldHandlers.Add(formFieldHandler);
        }
コード例 #4
0
        // submit /////////////////////////////////

        public virtual void Validate(object submittedValue, IVariableMap submittedValues,
                                     FormFieldHandler formFieldHandler, IVariableScope variableScope)
        {
            try
            {
                IFormFieldValidatorContext context = new DefaultFormFieldValidatorContext(variableScope, config,
                                                                                          submittedValues, formFieldHandler);
                if (!validator.Validate(submittedValue, context))
                {
                    throw new FormFieldValidatorException(formFieldHandler.Id, name, config, submittedValue,
                                                          "Invalid value submitted for form field '" + formFieldHandler.Id + "': validation of " + this +
                                                          " failed.");
                }
            }
            catch (FormFieldValidationException e)
            {
                throw new FormFieldValidatorException(formFieldHandler.Id, name, config, submittedValue,
                                                      "Invalid value submitted for form field '" + formFieldHandler.Id + "': validation of " + this +
                                                      " failed.", e);
            }
        }
コード例 #5
0
        protected internal virtual void ParseProperties(Element formField, FormFieldHandler formFieldHandler,
                                                        BpmnParse bpmnParse, ExpressionManager expressionManager)
        {
            var propertiesElement = formField.ElementNs(BpmnParse.CamundaBpmnExtensionsNs, "properties");

            if (propertiesElement != null)
            {
                var propertyElements = propertiesElement.ElementsNS(BpmnParse.CamundaBpmnExtensionsNs,
                                                                    "property");

                // use linked hash map to preserve item ordering as provided in XML
                IDictionary <string, string> propertyMap = new Dictionary <string, string>();
                foreach (var property in propertyElements)
                {
                    var id    = property.GetAttributeValue("id");
                    var value = property.GetAttributeValue("value");
                    propertyMap[id] = value;
                }

                formFieldHandler.Properties = propertyMap;
            }
        }