private EventVertex CreateVertexEvent(InternalEventVertex vertex, int inDegree, int outDegree) { int eventVertexId; if (!verticeIdsMap.TryGetValue(vertex.Id, out eventVertexId)) { verticeIdsMap[vertex.Id] = eventVertexId = verticeNextId; verticeNextId++; } EventVertex eventVertex; if (inDegree == 0) { eventVertex = EventVertex.CreateGraphStart(eventVertexId); } else if (outDegree == 0) { eventVertex = EventVertex.CreateGraphEnd(eventVertexId); } else { eventVertex = EventVertex.Create(eventVertexId); } return(eventVertex); }
private ActivityEdge CreateActivityEdge(EventVertex source, EventVertex target, Activity edgeActivity, bool isCritical) { var edgeUniqueKey = new Tuple <int, int>(source.Id, target.Id); int activityEdgeId; if (!edgesIdsMap.TryGetValue(edgeUniqueKey, out activityEdgeId)) { edgesIdsMap[edgeUniqueKey] = activityEdgeId = edgesNextId; edgesNextId++; } return(new ActivityEdge(activityEdgeId, source, target, edgeActivity, isCritical)); }