Как заставить поток управления следовать точному пути, который я указываю?

#modelio

Вопрос:

Я использую Modelio 3.7.

У меня есть две диаграммы активности, которые ссылаются на одни и те же объекты модели. Эти две диаграммы показывают одни и те же объекты, с разными стилями. (т. Е. Они представляют один и тот же поток, с разными цветами, чтобы выразить две разные точки зрения.

Я пытаюсь написать сценарий Jython, который использует одну диаграмму в качестве ссылки для компоновки графики и следит за тем, чтобы соответствующая графика на второй диаграмме отображалась в том же месте и чтобы ссылки на второй графике следовали точно по тому же пути, что и на первой диаграмме.

У меня нет проблем с расположением узлов:

 def syncNodes(ref, target):
    if differentRectangles(ref.getBounds(), target.getBounds()):
        print "=======> ACTION: move bounds from "   target.getBounds().toString()   " to "   ref.getBounds().toString()
        target.setBounds(ref.getBounds())
    else:
        print "=======> NOOP: bounds from "   target.getBounds().toString()   " to "   ref.getBounds().toString()
 

Но ссылки-это совсем другая проблема:

 def syncLinks(ref, target):
    if differentPaths(ref.getPath(), target.getPath()):
        print "=======> ACTION: change path from "   target.getPath().toString()   " to "    ref.getPath().toString()
        target.getPath().setPoints(ref.getPath().getPoints())
    else:
        print "=======> NOOP: change path from "   target.getPath().toString()   " to "    ref.getPath().toString()
    
    if not target.getRouterKind().equals(ref.getRouterKind()):
        print "=======> ACTION: change routerkind from "   target.getRouterKind().toString()   " to "    ref.getRouterKind().toString()
        target.setRouterKind(ref.getRouterKind())
        target.setRouterKind(IDiagramLink.LinkRouterKind.BENDPOINT)
    else:
        print "=======> NOOP: change routerkind from "   target.getRouterKind().toString()   " to "    ref.getRouterKind().toString()
 

Ссылки в конечном итоге проходят через странные места на периферии диаграммы, и точки на пути в конечном итоге отличаются от того, что я задал target.getPath().setPoints(ref.getPath().getPoints()) .

Есть ли способ убедиться, что целевая стрелка следует по тому же пути, что и на эталонной диаграмме?