J'ai une action de callopération dans mon diagramme d'activité. Comment obtenir l'opération définie sur l'action d'utilisation d'appel via DB ou via API.

enter image description here

0
BIndu_Madhav 4 mai 2021 à 11:39

1 réponse

Meilleure réponse

Si vous associez votre callopération à une opération réelle dans le modèle, cela ressemble à ceci:

enter image description here

Vous pouvez sélectionner l'opération à l'aide de l'onglet Comportement dans les propriétés.

enter image description here

L'API n'expose pas cette information, vous devez donc le trouver vous-même.

Le GUID de l'opération est stocké dans le champ de base de données t_object.Classifier_guid. Vous pouvez utiliser la méthode EA.Repository.GetMethodByGuid() pour vous rendre à l'opération.

Ici, comment il est mis en œuvre dans mon cadre

        /// <summary>
        /// The operation to be invoked by the action execution.
        /// </summary>
        public UML.Classes.Kernel.Operation operation { 
            get{
                // first get the operations guid which is stored in the Classifier_guid column
                XmlDocument operationGUIDxml = this.EAModel.SQLQuery(@"select o.Classifier_guid from t_object o
                                    where o.Object_ID = " + this.id.ToString());
                XmlNode operationGUIDNode = operationGUIDxml.SelectSingleNode(this.EAModel.formatXPath("//Classifier_guid"));
                return this.EAModel.getOperationByGUID(operationGUIDNode.InnerText);
            }
            set{
                // no API method available, so we need to update the database directly
//              this.model.executeSQL(@"update t_object
//                                      set Classifier_guid = "+ ((Operation)value).GUID
//                                    + "where Object_ID = " + this.id.ToString();
                //TODO add GUID property to Operation
                throw new NotImplementedException();
                }
        }
1
Geert Bellekens 4 mai 2021 à 09:46