protected override void Execute(CodeActivityContext executionContext)
        {
            var error = false;

            try
            {
                var value = Convert.ToDouble(Value.Get <string>(executionContext));

                FloatValue.Set(executionContext, value);

                DecimalValue.Set(executionContext, Convert.ToDecimal(Math.Round(value, 2)));

                MoneyValue.Set(executionContext, new Money {
                    Value = Convert.ToDecimal(Math.Round(value, 2))
                });

                TruncatedValue.Set(executionContext, Convert.ToInt32(Math.Truncate(value)));

                RoundedValue.Set(executionContext, Convert.ToInt32(Math.Round(value, 0)));
            }
            catch
            {
                error = true;
            }

            ProcessingError.Set(executionContext, error);
        }
Пример #2
0
        /// <inheritdoc />
        protected override void Execute(Context context)
        {
            HasValue.Set(context, false);
            ValueType.Set(context, null);
            StringValue.Set(context, null);
            JsonValue.Set(context, null);
            BooleanValue.Set(context, default(bool));
            DateTimeValue.Set(context, default(DateTime));
            DecimalValue.Set(context, default(decimal));
            MoneyValue.Set(context, default(Money));
            DoubleValue.Set(context, default(double));
            IntegerValue.Set(context, default(int));

            var variableName = VariableName.Get(context);

            if (string.IsNullOrWhiteSpace(variableName))
            {
                throw new InvalidWorkflowExecutionException("Variable Name is empty.");
            }

            if (!context.SourceContext.SharedVariables.ContainsKey(variableName))
            {
                return;
            }
            var value = context.SourceContext.SharedVariables[variableName];

            if (value == null)
            {
                ValueType.Set(context, "Null");
                return;
            }

            ValueType.Set(context, value.GetType().Name);

            HasValue.Set(context, true);

            var stringValue = value as string ?? value.ToString();

            StringValue.Set(context, stringValue);

            var booleanValue = value as bool? ?? !(stringValue.Equals("false", StringComparison.OrdinalIgnoreCase) || stringValue.Equals("0") || stringValue.Equals("+0") || stringValue.Equals("-0"));

            BooleanValue.Set(context, booleanValue);

            DateTime dateTimeValue;

            if (value is DateTime)
            {
                DateTimeValue.Set(context, (DateTime)value);
            }
            else if (DateTime.TryParse(stringValue, out dateTimeValue))
            {
                DateTimeValue.Set(context, dateTimeValue);
            }

            decimal decimalValue;

            if (value is decimal)
            {
                decimalValue = (decimal)value;
                DecimalValue.Set(context, decimalValue);
                MoneyValue.Set(context, new Money(decimalValue));
            }
            else if (decimal.TryParse(stringValue, out decimalValue))
            {
                DecimalValue.Set(context, decimalValue);
                MoneyValue.Set(context, new Money(decimalValue));
            }

            var moneyValue = value as Money;

            if (moneyValue != null)
            {
                DecimalValue.Set(context, moneyValue.Value);
                MoneyValue.Set(context, moneyValue);
            }

            double doubleValue;

            if (value is double)
            {
                DoubleValue.Set(context, (double)value);
            }
            else if (double.TryParse(stringValue, out doubleValue))
            {
                DoubleValue.Set(context, doubleValue);
            }

            int integerValue;

            if (value is int)
            {
                IntegerValue.Set(context, (int)value);
            }
            else if (int.TryParse(stringValue, out integerValue))
            {
                IntegerValue.Set(context, integerValue);
            }

            JsonValue.Set(context, JsonConvert.SerializeObject(value, new JsonSerializerSettings
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                DateFormatHandling    = DateFormatHandling.IsoDateFormat,
                NullValueHandling     = NullValueHandling.Ignore
            }));
        }
Пример #3
0
        protected override void Execute(Context context)
        {
            HasValue.Set(context, false);
            StringValue.Set(context, null);
            BooleanValue.Set(context, default(bool));
            DateTimeValue.Set(context, default(DateTime));
            DecimalValue.Set(context, default(decimal));
            MoneyValue.Set(context, default(Money));
            DoubleValue.Set(context, default(double));
            IntegerValue.Set(context, default(int));

            var key = GetKey(context);

            if (!context.SourceContext.SharedVariables.ContainsKey(key))
            {
                return;
            }
            var value = context.SourceContext.SharedVariables[key];

            if (value == null)
            {
                return;
            }

            HasValue.Set(context, true);

            var stringValue = value.ToString().Trim();

            StringValue.Set(context, stringValue);

            var booleanValue = !(stringValue.Equals("false", StringComparison.OrdinalIgnoreCase) || stringValue.Equals("0") || stringValue.Equals("+0") || stringValue.Equals("-0"));

            BooleanValue.Set(context, booleanValue);

            DateTime dateTimeValue;

            if (DateTime.TryParse(stringValue, out dateTimeValue))
            {
                DateTimeValue.Set(context, dateTimeValue);
            }

            decimal decimalValue;

            if (decimal.TryParse(stringValue, out decimalValue))
            {
                DecimalValue.Set(context, decimalValue);
                MoneyValue.Set(context, new Money(decimalValue));
            }

            double doubleValue;

            if (double.TryParse(stringValue, out doubleValue))
            {
                DoubleValue.Set(context, doubleValue);
            }

            int integerValue;

            if (int.TryParse(stringValue, out integerValue))
            {
                IntegerValue.Set(context, integerValue);
            }
        }
Пример #4
0
        protected override void Execute(Context context)
        {
            HasValue.Set(context, false);
            StringValue.Set(context, null);
            BooleanValue.Set(context, default(bool));
            DateTimeValue.Set(context, default(DateTime));
            DecimalValue.Set(context, default(decimal));
            MoneyValue.Set(context, default(Money));
            DoubleValue.Set(context, default(double));
            IntegerValue.Set(context, default(int));

            var json = Json.Get(context);
            Dictionary <string, object> node;

            try
            {
                node = JsonConvert.DeserializeObject <Dictionary <string, object> >(json);
            }
            catch (Exception ex)
            {
                throw new InvalidWorkflowExecutionException($"Не удалось произвести разбор строки JSON. {ex.Message}", ex);
            }

            var names = ValuePath.Get(context).Split('.').ToArray();

            foreach (var name in names.Take(names.Length - 1))
            {
                if (!node.ContainsKey(name))
                {
                    return;
                }
                var jObj = node[name] as JObject;
                if (jObj == null)
                {
                    return;
                }
                node = jObj.ToObject <Dictionary <string, object> >();
                if (node == null)
                {
                    return;
                }
            }

            var lastName = names.Last();

            if (!node.ContainsKey(lastName))
            {
                return;
            }

            var value = node[lastName];

            if (value == null)
            {
                return;
            }

            HasValue.Set(context, true);

            var stringValue = value.ToString().Trim();

            StringValue.Set(context, stringValue);

            var booleanValue = !(stringValue.Equals("false", StringComparison.OrdinalIgnoreCase) || stringValue.Equals("0") || stringValue.Equals("+0") || stringValue.Equals("-0"));

            BooleanValue.Set(context, booleanValue);

            DateTime dateTimeValue;

            if (DateTime.TryParse(stringValue, out dateTimeValue))
            {
                DateTimeValue.Set(context, dateTimeValue);
            }

            decimal decimalValue;

            if (decimal.TryParse(stringValue, out decimalValue))
            {
                DecimalValue.Set(context, decimalValue);
                MoneyValue.Set(context, new Money(decimalValue));
            }

            double doubleValue;

            if (double.TryParse(stringValue, out doubleValue))
            {
                DoubleValue.Set(context, doubleValue);
            }

            int integerValue;

            if (int.TryParse(stringValue, out integerValue))
            {
                IntegerValue.Set(context, integerValue);
            }
        }
Пример #5
0
        /// <summary>
        /// Executes the workflow activity.
        /// </summary>
        /// <param name="executionContext">The execution context.</param>
        protected override void Execute(CodeActivityContext executionContext)
        {
            // Create the tracing service
            ITracingService tracingService = executionContext.GetExtension <ITracingService>();

            if (tracingService == null)
            {
                throw new InvalidPluginExecutionException("Failed to retrieve tracing service.");
            }

            tracingService.Trace("Entered " + _processName + ".Execute(), Activity Instance Id: {0}, Workflow Instance Id: {1}",
                                 executionContext.ActivityInstanceId,
                                 executionContext.WorkflowInstanceId);

            // Create the context
            IWorkflowContext context = executionContext.GetExtension <IWorkflowContext>();

            if (context == null)
            {
                throw new InvalidPluginExecutionException("Failed to retrieve workflow context.");
            }

            tracingService.Trace(_processName + ".Execute(), Correlation Id: {0}, Initiating User: {1}",
                                 context.CorrelationId,
                                 context.InitiatingUserId);

            IOrganizationServiceFactory serviceFactory = executionContext.GetExtension <IOrganizationServiceFactory>();
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(context.UserId);

            try
            {
                string keyName = KeyName.Get(executionContext);

                //look up team template by name
                QueryByAttribute querybyexpression = new QueryByAttribute("new_keyvaluepair");
                querybyexpression.ColumnSet = new ColumnSet("new_name",
                                                            "new_stringvalue",
                                                            "new_decimalvalue",
                                                            "new_integervalue",
                                                            "new_datevalue",
                                                            "new_dateandtimevalue",
                                                            "new_valuetype"
                                                            );
                querybyexpression.Attributes.AddRange("new_name");
                querybyexpression.Values.AddRange(keyName);
                EntityCollection retrieved = service.RetrieveMultiple(querybyexpression);

                //if we find something, we're set
                if (retrieved.Entities.Count > 0)
                {
                    Entity kvp = retrieved.Entities[0];
                    StringValue.Set(executionContext, (string)kvp["new_stringvalue"]);
                    IntegerValue.Set(executionContext, (int)kvp["new_integervalue"]);
                    DecimalValue.Set(executionContext, (decimal)kvp["new_decimalvalue"]);
                    DateValue.Set(executionContext, (DateTime)kvp["new_datevalue"]);
                    DateTimeValue.Set(executionContext, (DateTime)kvp["new_dateandtimevalue"]);
                }
                else
                {
                    //throw exception if unable to find a matching template
                    throw new Exception("could not find key-value pair for: " + keyName);
                }
            }
            catch (FaultException <OrganizationServiceFault> e)
            {
                tracingService.Trace("Exception: {0}", e.ToString());

                // Handle the exception.
                throw;
            }
            catch (Exception e)
            {
                tracingService.Trace("Exception: {0}", e.ToString());
                throw;
            }

            tracingService.Trace("Exiting " + _processName + ".Execute(), Correlation Id: {0}", context.CorrelationId);
        }