public void AddFunctionExecutionActivity(string functionName, string invocationId, int concurrency, string executionStage, bool success, long executionTimeSpan, string executionId, DateTime eventTimeStamp, DateTime functionStartTime) { Enum.TryParse(executionStage, out FunctionExecutionStage functionExecutionStage); FunctionActivity activity = new FunctionActivity { FunctionName = functionName, InvocationId = invocationId, Concurrency = concurrency, ExecutionStage = functionExecutionStage, ExecutionId = executionId, IsSucceeded = success, ExecutionTimeSpanInMs = executionTimeSpan, EventTimeStamp = eventTimeStamp, StartTime = functionStartTime, Tenant = _tenant }; if (!_functionActivities.TryAdd(activity)) { _logger.LogWarning($"Buffer for function activities is full with {_functionActivities.Count} elements. Dropping current batch of function activities"); DrainActivities(_currentFunctionActivities, _functionActivities); } _logger.LogDebug($"Added function activity : {functionName} {invocationId} {concurrency} {executionStage} {success} {executionTimeSpan}"); }
private void ProcessNewActivity(FunctionActivity activity) { if (activity == null) { return; } var viewFactory = ActivityViewFactories.FirstOrDefault(f => f.Metadata.TargetType == activity.GetType()); if (viewFactory == null) { return; } var view = viewFactory.CreateExport().Value; view.Caption = viewFactory.Metadata.Caption; view.Activity = activity; var position = (activity.IsPropertyDefined(DesignProperties.PositionX) && activity.IsPropertyDefined(DesignProperties.PositionY)) ? new Point(Convert.ToDouble(activity.GetValue(DesignProperties.PositionX)), Convert.ToDouble(activity.GetValue(DesignProperties.PositionY))) : new Point(0, 0); var host = new ActivityHost(activity.Id, view, position); _surface.Children.Add(host); }
public void RemoveItem(FunctionActivity item) { if (item == null) { return; } Workflow.RemoveItem(item); }
private void ProcessDeletedActivity(FunctionActivity activity) { if (activity == null) { return; } var host = _surface.Children.OfType <ActivityHost>().FirstOrDefault(h => h.Id == activity.Id); if (host == null) { return; } host.IncomingLinks.ToList().ForEach(incoming => RemoveItem(incoming.WorkflowLink)); host.OutgoingLinks.ToList().ForEach(outgoing => RemoveItem(outgoing.WorkflowLink)); _surface.Children.Remove(host); }