private void OnConnectionAdded(object sender, BpmnElementEvent e) { if (e.Element.Type == "bpmn:SequenceFlow") { _processModelManager.AddSequenceFlow(e.Element.Id, e.Element.Target, e.Element.Source, e.Element.ProcessId); } }
private void OnShapeAdded(object sender, BpmnElementEvent e) { //New process is being added (along with a participant/pool) if (e.Element.Type == "bpmn:Participant") { _processModelManager.AddNewProcess(e.Element.ProcessId, e.Element.Id); if (_processModelManager.TryGetProcess(e.Element.ProcessId, out var process)) { if (_editElementService.EditElement == process) { _editElementService.EditedElementModified(); } else { _editElementService.EditElement = process; } } } //Process element is being added else { OnElementAdded(e); } }
private void OnRootRemoved(object sender, BpmnElementEvent e) { if (e.Element.Type == "bpmn:Process") { _processModelManager.RemoveProcess(e.Element.Id); } }
private void OnElementAdded(BpmnElementEvent e) { var element = _processModelManager.AddElement(e.Element.Type, e.Element.Id, e.Element.ProcessId); if (element != null) { _editElementService.EditElement = element; } }
private void OnConnectionRemoved(object sender, BpmnElementEvent e) { if (e.Element.Type == "bpmn:SequenceFlow") { if (_editElementService.EditElement?.Id == e.Element.Id) { _editElementService.EditElement = null; } _processModelManager.RemoveSequenceFlow(e.Element.Id); } }
private void OnElementIdUpdated(object sender, BpmnElementEvent e) { _processModelManager.UpdateId(e.Element.Id, e.NewId, e.Element.ProcessId); if (_processModelManager.TryRetrieveElementById(e.NewId, e.Element.ProcessId, out var element)) { if (_editElementService.EditElement == element) { _editElementService.EditedElementModified(); } } }
public void HandleBpmnElementEvent(BpmnElementEvent e) { TranslateProcessId(e); switch (e.Type) { case BpmnConstants.BPMN_EVENT_CLICK: ElementClick?.Invoke(this, e); break; case BpmnConstants.BPMN_EVENT_ELEMENT_CHANGED: ElementChanged?.Invoke(this, e); break; case BpmnConstants.BPMN_EVENT_SHAPE_ADDED: ShapeAdded?.Invoke(this, e); break; case BpmnConstants.BPMN_EVENT_SHAPE_REMOVED: ShapeRemoved?.Invoke(this, e); break; case BpmnConstants.BPMN_EVENT_UPDATE_ID: ElementIdUpdated?.Invoke(this, e); break; case BpmnConstants.BPMN_EVENT_CONNECTION_REMOVED: ConnectionRemoved?.Invoke(this, e); break; case BpmnConstants.BPMN_EVENT_CONNECTION_ADDED: ConnectionAdded?.Invoke(this, e); break; case BpmnConstants.BPMN_EVENT_ROOT_ADDED: RootAdded?.Invoke(this, e); break; case BpmnConstants.BPMN_EVENT_ROOT_REMOVED: RootRemoved?.Invoke(this, e); break; } }
public void HandleBpmnElementEvent(BpmnElementEvent e) { switch (e.Type) { case "element.click": ElementClick?.Invoke(this, e); break; case "element.changed": ElementChanged?.Invoke(this, e); break; case "shape.added": ShapeAdded?.Invoke(this, e); break; case "shape.removed": ShapeRemoved?.Invoke(this, e); break; case "element.updateId": ElementIdUpdated?.Invoke(this, e); break; case "connection.removed": ConnectionRemoved?.Invoke(this, e); break; case "connection.added": ConnectionAdded?.Invoke(this, e); break; case "root.added": RootAdded?.Invoke(this, e); break; case "root.removed": RootRemoved?.Invoke(this, e); break; } }
private void OnElementClicked(object sender, BpmnElementEvent e) { if (e.Element.Type == "bpmn:Collaboration" || e.Element.Type == "bpmn:Association" || e.Element.Type == "bpmn:TextAnnotation") { return; } string elementId; //Extract the represented element id if the element is of type label if (e.Element?.Type == "label") { elementId = e.Element.Id.Substring(0, e.Element.Id.Length - "_label".Length); } else { elementId = e.Element.Id; } if (e.Element.Type == "bpmn:Process") { _processModelManager.TryGetProcess(e.Element.Id, out var process); _editElementService.EditElement = process; } else if (e.Element.Type == "bpmn:Participant") { _processModelManager.TryGetProcess(e.Element.ProcessId, out var process); _editElementService.EditElement = process; } else if (_processModelManager.TryRetrieveIElementById(elementId, e.Element.ProcessId, out var element)) { _editElementService.EditElement = element; } else { _editElementService.EditElement = null; } }
private void TranslateProcessId(BpmnElementEvent e) { string procId; if (e.Element.Type == BpmnConstants.BPMN_ELEMENT_PROCESS) { procId = _processModelManager.TranslateBpmnProcessId(e.Element.Id); if (procId != null) { e.Element.Id = procId; } } if (string.IsNullOrEmpty(e.Element.ProcessId)) { return; } procId = _processModelManager.TranslateBpmnProcessId(e.Element.ProcessId); if (procId != null) { e.Element.ProcessId = procId; } }
private void OnShapeRemoved(object sender, BpmnElementEvent e) { if (e.Element.Type == "label" || e.Element.Type == "bpmn:TextAnnotation") { return; } //Process is being removed if (e.Element.Type == "bpmn:Participant") { var processId = _processModelManager.GetProcessIdFromParticipantId(e.Element.Id); _processModelManager.RemoveProcess(processId); } //Process element is being removed else { _processModelManager.RemoveElement(e.Element?.Id); } //Close the sidebar if the deleted element is currently selected if (_editElementService.EditElement?.Id == e.Element.Id || _editElementService.EditElement?.Id == e.Element.ProcessId) { _editElementService.EditElement = null; } }
private void OnElementChanged(object sender, BpmnElementEvent e) { //No process id is defined, or the process does not exist -- the element is in the phase of deletion if (string.IsNullOrEmpty(e.Element.ProcessId) || !_processModelManager.ProcessExists(e.Element.ProcessId)) { return; } IContractElement contractElement = null; if (e.Element.Type == "bpmn:Participant") { _processModelManager.TryGetProcess(e.Element.ProcessId, out var process); process.Name = e.Element.Name; contractElement = process; } if (_processModelManager.TryRetrieveIElementById(e.Element.Id, out var element)) { //Parse element name element.Name = e.Element.Name; //Parse element loop type if (element is Abstraction.Processes.Tasks.Task) { var taskElement = element as Abstraction.Processes.Tasks.Task; if (e.Element.LoopType == "bpmn:MultiInstanceLoopCharacteristics") { if (e.Element.IsSequential) { taskElement.InstanceType = Abstraction.Processes.Tasks.InstanceType.Sequential; } else { taskElement.InstanceType = Abstraction.Processes.Tasks.InstanceType.Parallel; } } else { taskElement.InstanceType = Abstraction.Processes.Tasks.InstanceType.Single; } } if (element is BoundaryEvent) { var boundaryEvent = element as BoundaryEvent; boundaryEvent.AttachedTo = e.Element.AttachedTo; } //Parse incoming and outgoing if processElement if (element is ProcessElement) { var processElement = element as ProcessElement; processElement.Incoming = new List <string>(e.Element.Incoming); processElement.Outgoing = new List <string>(e.Element.Outgoing); } //Parse sequence flow information if (element is SequenceFlow) { var sequenceFlow = element as SequenceFlow; _processModelManager.UpdateSequenceFlowSourceAndTarget(sequenceFlow, e.Element.Source, e.Element.Target, e.Element.ProcessId); } //Check if parent process of the element has changed if (_processModelManager.TryRetrieveProcessOfElement(element.Id, out var process)) { if (process.Id != e.Element.ProcessId) { _processModelManager.ChangeProcessOfElement(element, process.Id, e.Element.ProcessId); } } contractElement = element; } //Notify about element modification if currently selected if (_editElementService.EditElement == contractElement) { _editElementService.EditedElementModified(); } }