naobe @ ウィキ

iLOG TGO

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可
IBMに戻る

プログラムからオブジェクトを追加・削除・更新する

追加

       IltDefaultDataSource dataSource;
  
       networkComponent.setDataSource(dataSource);
       IltLink link = new IltLink("LinkSO4");
       link.setFrom((IltObject) dataSource.getObject("SW4"));
       link.setName("linkSO4");
       link.setTo((IltObject) dataSource.getObject("OTN4"));
       link.setMedia(IltLink.Media.Fiber);
       link.setObjectState(new IltSONETObjectState());
       dataSource.addObject(link);


削除


更新


CSS

グラフィックコンポーネントの外観(大きさ、スタイル、色など)を設定するときはCSSを使う。

  • リンクのプロパティを指定して色を変える。
 object."ilog.tgo.model.IltLink"[media=CNET] {
   foreground: seagreen;
 }

  • 特定のリンク(名前がLink01)のスタイルを変える
 #Link01 {
    lineStyle: "5.000001, 3.000001";
 }

最初の要素がフォアグラウンドのピクセル、次の要素はバックグラウンンドのピクセル。

  • リンクの矢印
CSSのhasToArrowを使う。マニュアルのStyling--Customize Line--Customize Line Representaion参照


CSSルール

IBM ILOG JViews TGO V8.7 > Programmers documentation > Styling > Introducing cascading style sheets > Getting started with JViews TGO style sheets > Specializing CSS rules参照

ビジネスクラスとのマッチ

 object."ilog.tgo.model.IltObject" {
   label: @name;
 }

@nameの意味 : IltObjectのattributeであるnameの値をlabelに設定する。

ビジネスクラス属性とのマッチ

 object."Alarm/identifier" {
   label: @identifier;
 }

オブジェクトIDとのマッチ


 #RJLed0 {
   foreground: yellow;
 }

RJLed0がオブジェクトID。


CSSルールの優先順位

先頭から上書き。

 object.Alarm {
   label: @identifier;
   labelBackground: white;
 }
 
 object.Alarm[perceivedSeverity=0] {
   labelBackground: yellow;
 }

perceivedSeverity=0のアラームのラベルの背景は黄色、perceivedSeverity!=0のアラームのラベルの背景は白。


CSSの再帰

 object."Alarm/creationTime" {
   toolTipText: "@#tooltipFormatBean";
   label: @creationTime;
 }
 Subobject#toolTipFormatBean {
   class:"ilog.cpl.util.text.IlpSimpleDataFormat";
   pattern: "HH:mm:ss z";
 }

Alarm/creationTimeのtoolTipTextには、HH:mm:ss zフォーマットの時刻を表示する??。labelには、属性のcreationTimeの値を表示する。

@=は、同じインスタンスを共有する。最初は、@#と同じだが、連続した同じ値へのアクセスは同じインスタンスを返す。
@+は、@#に似ているが、無駄なオブジェクトを生成を避ける。宣言に関連したプロパティの値が定義されているかnullか判定する。nullなら@#と同じ。

表現

@|で、数式、文字列結合などの表現が可能。

 @|3+2*5                -> 13
 @|true&&(true||!true)  -> true
 @|start+end            -> "startend"

模擬クラスと模擬エレメント(Pseudo-classes and pseudo-elements)

CSSのオブジェクトに対して、':'で付加したもの?? デフォルトで、selected, :focus, :expanded の模擬クラスがある??

カスタム模擬クラス


 object."ServiceManagedObject" {
       foreground: black;
       background: #00000000;
 }
 object."ServiceManagedObject":highlight {
       background: yellow;
 }

highlightは、ServiceManagedObjectの模擬クラス


プログラムからCSSを使う

networkComponent.getView().getMutableStyleSheet()を使うと、CSSファイルで設定した内容を見れない。追加の設定だけ可能。

networkComponent.getView().getStyleSheets()でCSSを見ると、CSSファイルのリストを出力する。


リンクの太さを修正

       // Reinitialize mutable style sheet
       IlpMutableStyleSheet sampleMutableStyleSheet = networkComponent
                       .getView().getMutableStyleSheet();
 
       sampleMutableStyleSheet.setAdjusting(true);
       sampleMutableStyleSheet.setUpdateMask(IlpStylable.UPDATE_NONE_MASK);
       // Remove all rules that are currently in the mutable style sheet
       sampleMutableStyleSheet.removeAllRules();
       // Initialize the mutable style via some declarations
       sampleMutableStyleSheet.setDeclaration("#LinkSO1", "lineWidth", "1");
       sampleMutableStyleSheet.setAdjusting(false);  
       // Now load the configuration in the component view and adapter
       try {
           // Reset view configuration
           String[] css = new String[] {
                           sampleConfigurationFile,//設定CSSファイル名
                           sampleMutableStyleSheet.toString()
           };
           networkComponent.getView().setStyleSheets(css);
           // Reset adapter configuration
           networkComponent.getAdapter().setStyleSheets(new String[] {
               sampleAdapterConfigurationFile
           });
       } catch (Exception e) {
           e.printStackTrace();
       }

メニュー(フレーム・ポップアップ)

ポップアップ

以下のソース参照。tutorial Main.javaのstep8()
 private class PopupListener implements ActionListener {
     private String objName;
 
     private Frame owner;
 
     public PopupListener(String objName, Frame owner) {
         this.objName = objName;
         this.owner = owner;
     }
 
     public void actionPerformed(ActionEvent e) {
         dbg("menuKeyPressed !! " + objName);
         JOptionPane.showMessageDialog(owner, objName + "を選択しました。", "コンポーネント情報", JOptionPane.INFORMATION_MESSAGE);
     }
 }
 
 
   IlpPopupMenuFactory popupMenuFactory = new IlpAbstractPopupMenuFactory(){
     // Add the identifier of each of the selected objects to the menu
     public JPopupMenu createPopupMenu (IlpObjectSelectionModel ilpSelectionModel)
     {
       // Create an empty popup menu
       JPopupMenu menu = new JPopupMenu();
       // Access the selected objects from the selection model
       Collection selectedObjects = ilpSelectionModel.getSelectedObjects();
       // suna modify
       if(selectedObjects.size() == 1) {
           final String objName = 
               ((IlpObject)selectedObjects.iterator().next()).getIdentifier().toString();
           
           JMenuItem item = new JMenuItem(objName);
           item.addActionListener(new PopupListener(objName, (Frame) getTopLevelAncestor()));
           menu.add(item);
       }
       return menu;
     }
   };
   
   IlpViewInteractor networkInteractor = networkComponent.getViewInteractor();
   
   networkInteractor.setPopupMenuFactory(popupMenuFactory);

フレームメニュー

通常のSWINGと同じ

プログラムからサブマップを開く

 jviews-tgo-all.jarの中のilog/cp;/logging.propertiesのログレベルと、JDKのlogging.propertiesbのログレベルをALLに修正して、サンプルアプリを起動。
 画面からビルをクリックすると以下のログ出力

    [java] 2010/07/22 16:34:06 ilog.cpl.graph.IlpGraphController expandObject
    [java] 詳細レベル (低): >> expandObject ilog.cpl.network.IlpDefaultNetworkNode@577c5e[ilog.tgo.model.IltRectGroup Buil1[name=Buil1]]

上記ログから、推定してプログラム作成。以下を実行すると、ビルが展開する。

   IltDefaultDataSource mainDataSource;
   IlpNetwork networkComponent;
   
   IltRectGroup rect = (IltRectGroup) mainDataSource.getObject("Buil1");
   IlpRepresentationObject repobj = 
             networkComponent.getAdapter().getRepresentationObject(rect);
   networkComponent.getController().expandObject(repobj);

expandObjectメソッドを、collapseObjectメソッドに変更すれば、展開したビルを縮小する。

マップ拡大・縮小


アラームでノード変更


アラームをテーブルに表示


パスの色を変更する

既存のiLogの仕組みを変えないで、パスに色を設定する。
リンクに対して、新たなプロパティを追加できれば、そのプロパティに対してCSSを設定し色を変える。IltLink.setProperty()はinternal useでできない。
IltLinkを継承したクラスを作成しては? ==> NG(色が変わらない。線は描く)
technologyは新たに作成してtechnologyに対して色を設定すれば可能。IBM ILOG JViews TGO V8.7 > Programmers documentation > Styling > Customizing links > Customizing link technology 参照。

XML

 <addObject id="WP_NE71_NE91">
    <class>ilog.tgo.model.IltLink</class>
    <link>
     <from>NE71</from>
     <to>NE91</to>
   </link>
   <attribute name="name">WP_NE71_NE91</attribute>
   <attribute name="technology">WaveLengthPath</attribute>
 </addObject>

CSS

 object."ilog.tgo.model.IltLink" {
   labelVisible: false;
   technologyColorVisible: true;
   baseStyleEnabled: false;
 }

プログラム

       IltLink.Technology waveLengthPath = new IltLink.Technology("WaveLengthPath");
       IltSettings.SetValue("Link.Technology.WaveLengthPath.Color", new
                           Color(128,196,210));


State

IBM ILOG JViews TGO V8.7 > Programmers documentation > Business objects and data sources > States 参照。
機器の状態、アラームの状況を表す。これによって画面上の表現(色、形状)が変化する。

NE状態の基本表現

  • OOS(Out Of Service)
  • NT(No Traffic)
  • CT(Carrying Traffic)

OSI状態では、stateの状態の組み合わせで、OOS/NT/CTが決定する。
IBM ILOG JViews TGO V8.7 > Programmers documentation > Business objects and data sources > Lookup tables for state visuals > The OSI state dictionary visuals > Graphical representation of the OSI primary states 参照。

リンク状態の基本表現

  • disabled
  • inactive
  • active

アラーム状態

  • 新たにアラーム発生
  • アラームがacknowledge

受動デバイス

Object Stateを持たないデバイスは受動デバイス。CSSのpassiveIconVisibleをtrueにすると、受動デバイスのときに×印のアイコンを表示する。

State Dictionary

Telecom標準に従った作りこみの状態を持つ。
  • OSI状態
  • Bellcore状態
  • SNMP状態
  • SONET状態
  • MISC状態
  • パフォーマンス状態
  • SAN状態
  • アラーム状態
  • トラップ状態

プライマリ/セカンダリ状態

OSI, Bellcore, SNMP, SONET状態辞書は、プライマリ/セカンダリ状態を持つ。プライマリ状態は、たかだか1個で、セカンダリ状態は複数ある。

辞書体系

状態の種類によって、プライマリ状態とセカンダリ状態は異なる。

辞書 プライマリ セカンダリ
Bellcore,SNMP primary state secondary state
OSI state status
SONET protection switch request indicators

OSI状態

NEの状態? XML形式は以下。

 [<state>
   <administrative>AAA</administrative>
   <operational>OOO</operational>
   <usage>UUU</usage>
 </state>]
 [<procedural [operation="add"|"remove"]>ppp</procedural>]*
 [<availability [operation="add"|"remove"]>aaa</availability>]*
 [<control [operation="add"|"remove"]>ccc</control>]*
 [<standby [operation="add"|"remove"]>sss</standy>]*
 [<repair [operation="add"|"remove"]>rrr</repair>]*

APIのIltOSIObjectStateSAXInfoを参照。

設定例

 <addObject id="NE13">
  <class>ilog.tgo.model.IltNetworkElement</class>
  <parent>Buil1</parent> 
  <attribute name="name">NE13</attribute>
  <attribute name="type">BSC_Image</attribute>
  <attribute name="position" javaClass="ilog.cpl.graphic.IlpPoint">
    <x>222.0</x>
    <y>21.0</y>
  </attribute>
  <attribute name="objectState" javaClass="ilog.tgo.model.IltOSIObjectState">
    <state>
      <operational>Disabled </operational>
      <usage>Idle</usage>
      <administrative>Unlocked</administrative>
    </state>
    <procedural operation="add">InitializationRequired</procedural>
    <procedural operation="add">Initializing</procedural>
    <procedural operation="add">Terminating</procedural>
  </attribute>
 </addObject>


administrative, operational, usageの値の組み合わせと、アイコン表現については、IBM ILOG JViews TGO V8.7 > Programmers documentation > Business objects and data sources > States > The OSI state dictionaryを参照。

procedural、availability、・・・は、statusを表す。


Stateの設定

  • ビジネスオブジェクト(IltObjectのサブクラス)のコンストラクタで設定する。






マップと地図の連携

jviews-tgo87/samples/network/geopositioning参照。サンプルの特徴は以下。
  • マウスをマップに置くと、その位置の緯度、経度を画面左下に表示
  • ヘルシンキノードアイコンの情報ウィンドウを開くと内部状態を表示
  • マップを拡大、縮小すると画面右下にスケールを表示
サンプルプログラムでは、緯度、経度を求めてマウスの位置を表示するための専用のクラスがあって、パネルにはりつけているだけ。


複数のマップ


マップ移動


サブマップ

オブジェクトに親子関係を持たせると、親がサブマップになる。CSSに以下の設定が必要。

 object."ilog.tgo.model.IltNetworkElement" {
   expansion: IN_PLACE;
 }

用語

項目 説明
selector CSSの項目名。 #LinkSO1など
rule
ObjectState
Controller ビューパラメータ(マップのレイアウト、背景など)を設定する
Adapter データソースとグラフィックコンポーネントとの間のブリッジ


Controller

目的

  • ビューインタラクタの管理
  • グラフィックビューの設定を作成し、グラフィックビューにセットする。
  • ユーザ操作またはモデル更新により発生しトリガされたイベント用の外部コンポーネントを登録する。
  • オブジェクトのフィルタとソート

Adapter



attribute

IltLink

    [java] attribute name:name def val:null
    [java] attribute name:graphicRepresentation def val:<VALUE NOT SET>
    [java] attribute name:objectState def val:null
    [java] attribute name:position def val:<VALUE NOT SET>
    [java] attribute name:newAlarmCount def val:<VALUE NOT SET>
    [java] attribute name:newAlarmCountNumber def val:<VALUE NOT SET>
    [java] attribute name:alarmCount def val:<VALUE NOT SET>
    [java] attribute name:alarmCountNumber def val:<VALUE NOT SET>
    [java] attribute name:newAlarmHighestSeverity def val:<VALUE NOT SET>
    [java] attribute name:alarmHighestSeverity def val:<VALUE NOT SET>
    [java] attribute name:ackAlarmHighestSeverity def val:<VALUE NOT SET>
    [java] attribute name:newImpactAlarmCount def val:<VALUE NOT SET>
    [java] attribute name:newImpactAlarmCountNumber def val:<VALUE NOT SET>
    [java] attribute name:impactAlarmCount def val:<VALUE NOT SET>
    [java] attribute name:impactAlarmCountNumber def val:<VALUE NOT SET>
    [java] attribute name:newImpactAlarmHighestSeverity def val:<VALUE NOT SET>
    [java] attribute name:impactAlarmHighestSeverity def val:<VALUE NOT SET>
    [java] attribute name:ackImpactAlarmHighestSeverity def val:<VALUE NOT SET>
    [java] attribute name:primaryState def val:<VALUE NOT SET>
    [java] attribute name:secondaryStates def val:<VALUE NOT SET>
    [java] attribute name:logicalType def val:<VALUE NOT SET>
    [java] attribute name:tinyType def val:<VALUE NOT SET>
    [java] attribute name:fromPort def val:<VALUE NOT SET>
    [java] attribute name:toPort def val:<VALUE NOT SET>
    [java] attribute name:media def val:null
    [java] attribute name:technology def val:null
    [java] attribute name:type def val:Standard

IltElement

    [java] attribute name:name def val:null
    [java] attribute name:graphicRepresentation def val:<VALUE NOT SET>
    [java] attribute name:objectState def val:null
    [java] attribute name:position def val:<VALUE NOT SET>
    [java] attribute name:newAlarmCount def val:<VALUE NOT SET>
    [java] attribute name:newAlarmCountNumber def val:<VALUE NOT SET>
    [java] attribute name:alarmCount def val:<VALUE NOT SET>
    [java] attribute name:alarmCountNumber def val:<VALUE NOT SET>
    [java] attribute name:newAlarmHighestSeverity def val:<VALUE NOT SET>
    [java] attribute name:alarmHighestSeverity def val:<VALUE NOT SET>
    [java] attribute name:ackAlarmHighestSeverity def val:<VALUE NOT SET>
    [java] attribute name:newImpactAlarmCount def val:<VALUE NOT SET>
    [java] attribute name:newImpactAlarmCountNumber def val:<VALUE NOT SET>
    [java] attribute name:impactAlarmCount def val:<VALUE NOT SET>
    [java] attribute name:impactAlarmCountNumber def val:<VALUE NOT SET>
    [java] attribute name:newImpactAlarmHighestSeverity def val:<VALUE NOT SET>
    [java] attribute name:impactAlarmHighestSeverity def val:<VALUE NOT SET>
    [java] attribute name:ackImpactAlarmHighestSeverity def val:<VALUE NOT SET>
    [java] attribute name:primaryState def val:<VALUE NOT SET>
    [java] attribute name:secondaryStates def val:<VALUE NOT SET>
    [java] attribute name:logicalType def val:<VALUE NOT SET>
    [java] attribute name:tinyType def val:<VALUE NOT SET>
    [java] attribute name:type def val:NE
    [java] attribute name:function def val:null
    [java] attribute name:family def val:null
    [java] attribute name:partial def val:false
    [java] attribute name:shortcut def val:null

IltRectGroup

    [java] 情報: attribute name:name value:Buil1
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:graphicRepresentation value:ilog.tgo.model.attribute.IltGraphicRepresentationAttributeType@1e140bf
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:objectState value:ilog.tgo.model.IltOSIObjectState@161bfa3
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:position value:100.0 100.0 40.0 20.0
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:newAlarmCount value:2w
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:newAlarmCountNumber value:2
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:alarmCount value:2w
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:alarmCountNumber value:2
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:newAlarmHighestSeverity value:Warning
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:alarmHighestSeverity value:Warning
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:ackAlarmHighestSeverity value:<VALUE NOT SET>
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:newImpactAlarmCount value:<VALUE NOT SET>
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:newImpactAlarmCountNumber value:0
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:impactAlarmCount value:<VALUE NOT SET>
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:impactAlarmCountNumber value:0
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:newImpactAlarmHighestSeverity value:<VALUE NOT SET>
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:impactAlarmHighestSeverity value:<VALUE NOT SET>
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:ackImpactAlarmHighestSeverity value:<VALUE NOT SET>
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:primaryState value:Operational:Enabled; Usage:Active; Administrative:Unlocked
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:secondaryStates value:<VALUE NOT SET>
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:logicalType value:<VALUE NOT SET>
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:tinyType value:<VALUE NOT SET>
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:icon value:null
    [java] 2010/07/22 13:55:04 gettingStarted.Main$6 actionPerformed
    [java] 情報: attribute name:shortcut value:null

アクセス数 -
ウィキ募集バナー