Edge.java
package org.hammer.audio.workflow;
/**
* Pure workflow edge definition independent of UI, execution and persistence.
*
* @param id stable edge identifier
* @param sourceNodeId source node identifier
* @param sourcePortId source port identifier
* @param targetNodeId target node identifier
* @param targetPortId target port identifier
* @param metadata extensible metadata for visualization or persistence adapters
*/
public record Edge(
String id,
String sourceNodeId,
String sourcePortId,
String targetNodeId,
String targetPortId,
Metadata metadata) {
public Edge {
StableIds.requireStable(id, "id");
StableIds.requireStable(sourceNodeId, "sourceNodeId");
StableIds.requireStable(sourcePortId, "sourcePortId");
StableIds.requireStable(targetNodeId, "targetNodeId");
StableIds.requireStable(targetPortId, "targetPortId");
metadata = metadata == null ? Metadata.empty() : metadata;
}
public Edge(
String id,
String sourceNodeId,
String sourcePortId,
String targetNodeId,
String targetPortId) {
this(id, sourceNodeId, sourcePortId, targetNodeId, targetPortId, Metadata.empty());
}
}