2015-10-20 78 views
0

有没有什么办法从IBM Rhapsody Statechart图中获得state table从状态图到状态表

打开生成的文件.rpy并试图手动生成一个不是个好主意......

+1

为什么downvote? –

回答

0

是的,有可能以表格格式查看状态图。 您需要将状态图属性 StatechartDiagram::StateDiagram::DefaultView更改为Tabular view

此功能自Rhapsody V7.5起可用。

enter image description here

详情:here

+0

如何将'TabulawView'导出到某种'.txt'文件? 'Reporter/ReporterPLUS'没有这个选项(它不会导出表格本身,我只有'定型/对象模型图/组件信息' –

+0

@MariusMarusanici您可以打印它为'.pdf'。我不熟悉记者,也许你应该问一个新问题。 – sergej

0

可以利用的Rhapsody Java API和编写一段代码来获得任何给定的状态图的元素的细节。 提供Creating a table matrix for statechart elements的示例代码。

import com.telelogic.rhapsody.core.IRPApplication; 
import com.telelogic.rhapsody.core.IRPModelElement; 
import com.telelogic.rhapsody.core.IRPProject; 
import com.telelogic.rhapsody.core.IRPStateVertex; 
import com.telelogic.rhapsody.core.IRPStatechart; 
import com.telelogic.rhapsody.core.IRPTransition; 
import com.telelogic.rhapsody.core.RhapsodyAppServer; 

public class Statechart_Info 
{ 
    public static void main(String[] args) 
    { 
     IRPApplication app = RhapsodyAppServer.getActiveRhapsodyApplication(); 
     IRPProject prj = app.activeProject(); 
     IRPModelElement moEle = app.getSelectedElement(); 
     IRPStatechart mySC = (IRPStatechart) moEle; 
     String defTran=null; 
     for (Object obj : mySC.getNestedElementsRecursive().toList()) 
     { 
      if(obj instanceof IRPTransition) 
      { 
       IRPTransition myTran = (IRPTransition) obj; 
       if(myTran.isDefaultTransition()==1) 
        defTran = myTran.getName(); 
      } 
     } 
     for (Object obj : mySC.getNestedElementsRecursive().toList()) 
     { 
      if(obj instanceof IRPStateVertex) 
      { 
       IRPStateVertex mySV = (IRPStateVertex) obj; 
       System.out.println("State: " + mySV.getName()); 
       System.out.println("\nIncoming Transition(s) to " + mySV.getName()); 
       for(Object obj1 : mySV.getInTransitions().toList()) 
       { 
        IRPTransition myTran = (IRPTransition) obj1; 
        System.out.println("Transition: " + myTran.getName()); 
       } 
       System.out.println("\nOutgoing Transition(s) from " + mySV.getName()); 
       for(Object obj1 : mySV.getOutTransitions().toList()) 
       { 
        IRPTransition myTran = (IRPTransition) obj1; 
        System.out.println("Transition: " + myTran.getName()); 
       } 
       if(mySV.getName().equals("ROOT")) 
        System.out.println("Transition: " + defTran); 
       System.out.println("\n"); 
      } 
     } 
    } 
}