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); }
/// <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 })); }
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); } }
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); } }
/// <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); }