public override IEventLogEntryEntity GenerateEventLogEntry(CommandContext <IEventLogEntryEntity> commandContext) { IActivitiVariableEvent variableEvent = (IActivitiVariableEvent)@event; IDictionary <string, object> data = createData(variableEvent); return(CreateEventLogEntry(variableEvent.ProcessDefinitionId, variableEvent.ProcessInstanceId, variableEvent.ExecutionId, variableEvent.TaskId, data)); }
protected internal virtual IDictionary <string, object> createData(IActivitiVariableEvent variableEvent) { IDictionary <string, object> data = new Dictionary <string, object>(); PutInMapIfNotNull(data, FieldsFields.NAME, variableEvent.VariableName); PutInMapIfNotNull(data, FieldsFields.PROCESS_DEFINITION_ID, variableEvent.ProcessDefinitionId); PutInMapIfNotNull(data, FieldsFields.PROCESS_INSTANCE_ID, variableEvent.ProcessInstanceId); PutInMapIfNotNull(data, FieldsFields.EXECUTION_ID, variableEvent.ExecutionId); PutInMapIfNotNull(data, FieldsFields.VALUE, variableEvent.VariableValue); IVariableType variableType = variableEvent.VariableType; if (variableType is BooleanType) { PutInMapIfNotNull(data, FieldsFields.VALUE_BOOLEAN, (bool?)variableEvent.VariableValue); PutInMapIfNotNull(data, FieldsFields.VALUE, variableEvent.VariableValue); PutInMapIfNotNull(data, FieldsFields.VARIABLE_TYPE, TYPE_BOOLEAN); } else if (variableType is StringType || variableType is LongStringType) { PutInMapIfNotNull(data, FieldsFields.VALUE_STRING, (string)variableEvent.VariableValue); PutInMapIfNotNull(data, FieldsFields.VARIABLE_TYPE, TYPE_STRING); } else if (variableType is ShortType) { short?value = (short?)variableEvent.VariableValue; PutInMapIfNotNull(data, FieldsFields.VALUE_SHORT, value); PutInMapIfNotNull(data, FieldsFields.VARIABLE_TYPE, TYPE_SHORT); if (value != null) { PutInMapIfNotNull(data, FieldsFields.VALUE_INTEGER, value.Value); PutInMapIfNotNull(data, FieldsFields.VALUE_LONG, value.Value); PutInMapIfNotNull(data, FieldsFields.VALUE_DOUBLE, value.Value); } } else if (variableType is IntegerType) { int?value = (int?)variableEvent.VariableValue; PutInMapIfNotNull(data, FieldsFields.VALUE_INTEGER, value); PutInMapIfNotNull(data, FieldsFields.VARIABLE_TYPE, TYPE_INTEGER); if (value != null) { PutInMapIfNotNull(data, FieldsFields.VALUE_LONG, value.Value); PutInMapIfNotNull(data, FieldsFields.VALUE_DOUBLE, value.Value); } } else if (variableType is LongType) { long?value = (long?)variableEvent.VariableValue; PutInMapIfNotNull(data, FieldsFields.VALUE_LONG, value); PutInMapIfNotNull(data, FieldsFields.VARIABLE_TYPE, TYPE_LONG); if (value != null) { PutInMapIfNotNull(data, FieldsFields.VALUE_DOUBLE, value.Value); } } else if (variableType is DoubleType) { double?value = (double?)variableEvent.VariableValue; PutInMapIfNotNull(data, FieldsFields.VALUE_DOUBLE, value); PutInMapIfNotNull(data, FieldsFields.VARIABLE_TYPE, TYPE_DOUBLE); if (value != null) { PutInMapIfNotNull(data, FieldsFields.VALUE_INTEGER, value.Value); PutInMapIfNotNull(data, FieldsFields.VALUE_LONG, value.Value); } } else if (variableType is DateType) { DateTime value = (DateTime)variableEvent.VariableValue; PutInMapIfNotNull(data, FieldsFields.VALUE_DATE, value != null ? (long?)value.Ticks : null); PutInMapIfNotNull(data, FieldsFields.VARIABLE_TYPE, TYPE_DATE); } else if (variableType is UUIDType) { string value = null; if (variableEvent.VariableValue is System.Guid) { value = ((System.Guid)variableEvent.VariableValue).ToString(); } else { value = (string)variableEvent.VariableValue; } PutInMapIfNotNull(data, FieldsFields.VALUE_UUID, value); PutInMapIfNotNull(data, FieldsFields.VALUE_STRING, value); PutInMapIfNotNull(data, FieldsFields.VARIABLE_TYPE, TYPE_UUID); } else if (variableType is SerializableType || (variableEvent.VariableValue != null && (variableEvent.VariableValue is object))) { // Last try: serialize it to json ObjectMapper objectMapper = new ObjectMapper(); try { string value = objectMapper.WriteValueAsString(variableEvent.VariableValue); PutInMapIfNotNull(data, FieldsFields.VALUE_JSON, value); PutInMapIfNotNull(data, FieldsFields.VARIABLE_TYPE, TYPE_JSON); PutInMapIfNotNull(data, FieldsFields.VALUE, value); } catch (Exception) { // Nothing to do about it log.LogDebug("Could not serialize variable value " + variableEvent.VariableValue); } } return(data); }
/// <summary> /// /// </summary> public override IProcessEngineEvent From(IActivitiEvent @event) { IActivitiVariableEvent variableEvent = (IActivitiVariableEvent)@event; return(new VariableCreatedEventImpl(RuntimeBundleProperties.AppName, RuntimeBundleProperties.AppVersion, RuntimeBundleProperties.ServiceName, RuntimeBundleProperties.ServiceFullName, RuntimeBundleProperties.ServiceType, RuntimeBundleProperties.ServiceVersion, @event.ExecutionId, @event.ProcessDefinitionId, @event.ProcessInstanceId, variableEvent.VariableName, (variableEvent.VariableValue != null) ? variableEvent.VariableValue.ToString() : "", (variableEvent.VariableType != null) ? variableEvent.VariableType.TypeName : "", variableEvent.TaskId)); }