EMF Model Transaction Fehler beim Updaten eines Graphiti-Pictogramms

Mohackl

Mitglied
Hallo Forum,

ich habe folgendes Problem. Ich nutze Eclipse Graphiti um ein Diagramm einer Prozesskette anzuzeigen. Ich habe ein UpdateFeature implementiert, dass mir die Hintergrundfarbe eines Prozess-Pictograms je nach Status des darunter liegenden Business-Objekts ändert. Das klappt sehr gut.

Wächselt der Status nun aber zu schnell bekomme ich eine "Cannot modify resource set without a write transaction" Exception. Dieser auf der Spur wurde klar, dass die EMF Transaction die von Graphiti genutzt wird um das Pictogramm zu ändern keine Schreibberechtigung hat, und daher zurück gerollt wird.

Ist dies, weil eine andere Transaktion noch den Lock hat?

Welchen Lösungsansatz gibt es?

Ist es möglich vor dem setzen des Hintergrundes nachzufragen, ob die Aktion erlaubt ist? Oder gibt es eine Möglichkeit zu warten bis wieder geschrieben werden kann?

Vielen Dank!
 
Graphiti kenne ich bisher nur oberflächlich (wird sich bald ändern), daher ein Schuss ins Blaue:
Manipuliert dein Feature das Modell direkt oder verwendest du ein Command dafür?
EMF hat zb das praktische ChangeCommand mit dem du das Modell weiterhin direkt manipulieren kannst und trotzdem von Commands profitierst.
Falls du sowieso Commands verwendest, bist du sicher das du auf der gleichen Editing Domain wie Graphiti arbeitest?
 
Hallo,

danke für die Antwort. Graphiti ist auch recht neu für mich.

Das Problem taucht tief im Inneren von Graphiti auf. Zum Manipulieren meines EMF Models nutze ich eine RecordingCommand und eine TransactionalEditingDomain. Das funktioniert super.

Java:
TransactionalEditingDomain domain = PartObserverUtil.getEditingDomain(part);
RecordingCommand c = new RecordingCommand(domain) {
                       @Override
			protected void doExecute() {
				part.setActive(status);
			}
};
domain.getCommandStack().execute(c);

Graphiti macht irgendwie die Probleme. Mhmm... ich habe aber noch nicht durchschaut wie genau das Updaten funktioniert. Es wird als Transaction ausgeführt. Diese hat normalerweise Schreibrechte auf das Pictogram-Model... also das EMF Model das von Graphiti verwaltet wird. Nur wenn zu schnell geupdatet wird kommt ein Schluckauf zustande und einige der Transactionen haben nur Leserechte.

Aber, ich denke es ist zu speziell... ich werde mich mal an die Graphiti-Leute wenden.

Danke für die Gedanken!
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben