Sure, you can do that. It would be easiest if you used a “Spot” Panel whose main element was the Shape or was another Panel holding that Shape, and whose other elements were the port elements that you positioned (by setting GraphObject.alignment) at whatever spots you like.
But are you sure that you want to have independent port elements at various spots along the outer border of those Shapes? How are you going to determine how many ports there should be and where they should be?
Perhaps you don’t need to have a variable bunch of port elements belonging to each Node, but instead you just have Shapes at the end(s) of the Links, belonging to the Links rather than to the Nodes.