Support for n-ary connectors

Does Syside currently support n-ary connectors? I defined one that does not seem to be recognized when using it. Maybe I defined it wrong though.

 connection def ManagedPerformerConnection {
                doc
                /* Every pair of source and target performers is connected through the (only one) information 
                 * management performer through the performer interface.
                 * Both performers exchange a refernce to a viewpoint at a particular branch and commit.
                 * Both performers can only visualize the viewpoint through the managed interface with the 
                 * information management performer, who retain information ownership.
                 */
                end [*] part sourcePerformer : SystemLifeCycleManagementPerformer {

                }
                end [*] part targetPerformer : SystemLifeCycleManagementPerformer {

                }
                end [1] part informationService : InformationManagementPerformer {

                }

                interface performerInterface defined by PerformerInterface
                    connect sourcePort references sourcePerformer.performerInteractionPort
                    to targetPort references targetPerformer.performerInteractionPort;
                interface sourceInformationInterface : ManagedInformationInterface
                    connect sourcePort references sourcePerformer.performerInteractionPort
                    to managedInformationPort
                            references informationService.performerInteractionPort;
                interface targetInformationInterface : ManagedInformationInterface
                    connect sourcePort references targetPerformer.performerInteractionPort
                    to managedInformationPort
                            references informationService.performerInteractionPort;
            }

            interface def PerformerInterface {
                doc
                /* The flow of information are purely refernces to a particular viewpoiint and
                 * the branch and commit where the information resides, that needs to be retrieved.
                 */
                end port sourcePort : OperationalPorts::PerformerInteractionPort;
                end port targetPort : ~OperationalPorts::PerformerInteractionPort;
                flow of SystemLifeCycleModelViews [0..*]
                    from sourcePort.operationalInformationArtifact
                    to targetPort.operationalInformationArtifact;
                flow of SystemLifeCycleDocuments [0..*]
                    from sourcePort.operationalInformationArtifact
                    to targetPort.operationalInformationArtifact;
            }
            interface def ManagedInformationInterface {
                doc
                /* The flow of information is a data populated model view. */
                end port sourcePort : OperationalPorts::PerformerInteractionPort;
                end port managedInformationPort : ~OperationalPorts::PerformerInteractionPort;
                flow of SystemLifeCycleModelViews [0..*]
                    from sourcePort.operationalInformationArtifact
                    to managedInformationPort.operationalInformationArtifact;
                flow of SystemLifeCycleDocuments [0..*]
                    from sourcePort.operationalInformationArtifact
                    to managedInformationPort.operationalInformationArtifact;
            }

when calling it with three parties i got an error message.

connection disposalOfSystem2disposalFinalization subsets managedPerformerConnections [1]
            connect (sourcePerformer references disposalOfSystemPerformer, 
                targetPerformer references disposalFinalizationPerformer,
                informationService references informationManagementPerformer);

Error: Binary connector cannot have more than two ends

Hi,

This is validated according to the specification and happens because a nary connection disposalOfSystem2disposalFinalization subsets a binary connection managedPerformerConnections.

See also connector-binary-specialization

1 Like