Visual LANSA フレームワーク ガイド > アドバンスド・トピック > Visual LANSAフレームワークのオブジェクトに関するクエリーの記述 > > UF_TRVRS - VLFオブジェクトのシグナル送信
UF_TRVRS - VLFオブジェクトのシグナル送信
  • *=============================================================================
    *
    * コンポーネント   :UF_TRVRS
    * タイプ        :再利用可能コンポーネント
    * 祖先    :PRIM_OBJT
    *
    * 注意事項:  この UF_ (ユーザー・フレームワーク) コンポーネントは、フレームワーク提供のバージョンです。
    * 修正することも可能ですが、その場合はこのコンポーネントのソースコードを自分のコンポーネントにコピーし、
    * そのコピーを変更するようにしてください。
    * そうすることで、Visual LANSA フレームワークをアッップグレードした場合に、自分が加えた変更が
    * 意に反して失われてしまうことを防げます。
    * このコンポーネントの独自のバージョンを作成する際の詳細は、このコンポーネントの最後の部分を
    * 参照してください。
    *
    * 以下はサンプル・コードです。 - 明示的にも暗示的にも保証されません。
    * このプログラムやこの派生物のいずれも、実稼働やエンドユーザーの環境で使用することは一切できません。
    *
    *
    * =============================================================================
    *
    * この再利用可能パーツを利用して、VLF オブジェクトに信号送信できます。 - UF_QRY01, 02 03 を参照
    * =============================================================================

    FUNCTION OPTIONS(*DIRECT)
    Begin_Com Role(*EXTENDS #PRIM_OBJT)

    Define_Com Class(#VF_SY001) Name(#USYSTEM) Reference(*dynamic) scope(*Application)
    Define_Com Class(#VF_FP001) Name(#UFRAMEWORK) Reference(*dynamic) scope(*Application)

    Define_Com #VF_AC009 #TempVF_AC009 Reference(*Dynamic)

    Define_Com #VF_FP001 #TempVF_FP001 Reference(*Dynamic)
    Define_Com #VF_FP002 #TempVF_FP002 Reference(*Dynamic)
    Define_Com #VF_FP003 #TempVF_FP003 Reference(*Dynamic)

    Define_Com #VF_FPM09 #TempVF_FPM09 Reference(*Dynamic)
    Define_Com #VF_FPM10 #TempVF_FPM10 Reference(*Dynamic)
    Define_Com #VF_FPM14 #TempVF_FPM14 Reference(*Dynamic)

    Define_Com #VF_FP025 #TempVF_FP025 Reference(*Dynamic)
    Define_Com #VF_FP026 #TempVF_FP026 Reference(*Dynamic)

    Define_Com #VF_FPM27 #TempVF_FPM27 Reference(*Dynamic)
    Define_Com #VF_FPM28 #TempVF_FPM28 Reference(*Dynamic)
    Define_Com #VF_FPM29 #TempVF_FPM29 Reference(*Dynamic)
    Define_Com #VF_FPM30 #TempVF_FPM30 Reference(*Dynamic)

    * =======================================================================
    * 別タイプのオブジェクトが見つかる度にユーザー・アプリケーションに信号を送り返すイベント
    * =======================================================================

    Define_evt Framework
    define_map *input #VF_FP001 #Reference Pass(*By_Reference)

    Define_evt Application
    define_map *input #VF_FP002 #Reference Pass(*By_Reference)
    define_map *input #VF_FP001 #VisParent1 Pass(*By_Reference)

    Define_evt BusinessObject
    define_map *input #VF_FP003 #Reference Pass(*By_Reference)
    define_map *input #VF_FP001 #VisParent1 Pass(*By_Reference)
    define_map *input #VF_FP002 #VisParent2 Pass(*By_Reference)

    Define_evt CommandDefinition
    define_map *input #VF_FPM09 #Reference Pass(*By_Reference)

    Define_evt CommandReference
    define_map *input #VF_FPM10 #Reference Pass(*By_Reference)
    define_map *input #VF_FPM09 #CommandDefinition Pass(*By_Reference)
    define_map *input #VF_FP001 #VisParent1 Pass(*By_Reference)
    define_map *input #VF_FP002 #VisParent2 Pass(*By_Reference)
    define_map *input #VF_FP003 #VisParent3 Pass(*By_Reference)


    Define_evt Filter
    define_map *input #VF_FPM14 #Reference Pass(*By_Reference)
    define_map *input #VF_FP001 #VisParent1 Pass(*By_Reference)
    define_map *input #VF_FP002 #VisParent2 Pass(*By_Reference)
    define_map *input #VF_FP003 #VisParent3 Pass(*By_Reference)

    define_evt RAMPContainer
    define_map *input #VF_FP025 #Reference Pass(*By_Reference)

    define_evt RAMPSession
    define_map *input #VF_FP026 #Reference Pass(*By_Reference)

    define_evt RAMPDestination
    define_map *input #VF_FPM27 #Reference Pass(*By_Reference)

    define_evt RAMPJunction
    define_map *input #VF_FPM28 #Reference Pass(*By_Reference)

    define_evt RAMPSpecial
    define_map *input #VF_FPM29 #Reference Pass(*By_Reference)

    define_evt RAMPScript
    define_map *input #VF_FPM30 #Reference Pass(*By_Reference)

    * =======================================================================
    * ユーザー・アプリケーションに公開されているメソッド
    * =======================================================================

    Mthroutine Name(uTraverseFramework)

    Invoke #Com_Owner.uEnumerateOBJECT Reference(#uFramework) Parent(*null)

    Invoke #Com_Owner.uEnumerateOBJECT Reference(#uSystem.uNodeContainer) Parent(*null)

    Endroutine

    * =======================================================================
    * 非公開の内部メソッド
    * =======================================================================

    Mthroutine Name(uEnumerateOBJECT) Access(*PRIVATE)
    Define_Map For(*input) Class(#VF_AC001) Name(#Reference) Pass(*By_Reference)
    Define_Map For(*input) Class(#VF_AC001) Name(#Parent) Pass(*By_Reference)

    Define_com #vf_elindx #EnumIndex
    Define_com #vf_elmbri #EnumMemberGUID

    If_ref #Reference is_not(*null)

    * Handle this object bvy signalling each type found

    Case #Reference.uClass

    * フレームワーク

    When (= VF_FP001)
    set_ref #TempVF_FP001 (*Dynamic #Reference)
    Signal Framework Reference(#TempVF_FP001)

    * アプリケーション

    When (= VF_FP002)
    set_ref #TempVF_FP002 (*Dynamic #Reference)
    set_ref #TempVF_FP001 (*Dynamic #TempVF_FP002.uAuthorityParent)
    Signal Application Reference(#TempVF_FP002) VisParent1(#TempVF_FP001)

    * ビジネス・オブジェクト

    When (= VF_FP003)
    set_ref #TempVF_FP003 (*Dynamic #Reference)
    set_ref #TempVF_FP002 (*Dynamic #TempVF_FP003.uAuthorityParent)
    set_ref #TempVF_FP001 (*Dynamic #TempVF_FP002.uAuthorityParent)

    Signal BusinessObject Reference(#TempVF_FP003) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002)

    * RAMP コンテナ

    When (= VF_FP025)
    set_ref #TempVF_FP025 (*Dynamic #Reference)
    Signal RAMPContainer Reference(#TempVF_FP025)

    * RAMP セッション

    When (= VF_FP026)
    set_ref #TempVF_FP026 (*Dynamic #Reference)
    Signal RAMPSession Reference(#TempVF_FP026)

    Endcase

    * すべてのメンバーをエミュレート

    If_ref #Reference.ecMemberManagers is_not(*null)
    For #Manager #Reference.ecMemberManagers

    #EnumIndex := 0

    Dowhile (#Manager.Enumerate_MEMBERS(#Reference #EnumIndex #EnumMemberGUID 7))

    #Manager.Currentmemberguid := #EnumMemberGUID

    Case #Manager.VF_FPNNNClass

    * コマンド定義

    When (= VF_FP009)
    set_ref #TempVF_FPM09 (*Dynamic #Manager)
    Signal CommandDefinition Reference(#TempVF_FPM09)

    * コマンド参照

    When (= VF_FP010)
    set_ref #TempVF_FPM10 (*Dynamic #Manager)
    #uFrameWork.VF_FP009Manager.CurrentmemberGUID := #TempVF_FPM10.uCommandGUID

    set_ref #TempVF_AC009 (*Dynamic #TempVF_FPM10.uLinkedOwner)

    If_Ref Com(#TempVF_AC009) Is(*INSTANCE_OF #VF_FP001)
    * フレームワーク・コマンド
    set_ref #TempVF_FP003 *null
    set_ref #TempVF_FP002 *null
    set_ref #TempVF_FP001 (*Dynamic #TempVF_AC009)
    ENDIF

    If_Ref Com(#TempVF_AC009) Is(*INSTANCE_OF #VF_FP002)
    * アプリケーション・コマンド
    set_ref #TempVF_FP003 *null
    set_ref #TempVF_FP002 (*Dynamic #TempVF_AC009)
    set_ref #TempVF_FP001 (*Dynamic #TempVF_FP002.uAuthorityParent)
    ENDIF

    If_Ref Com(#TempVF_AC009) Is(*INSTANCE_OF #VF_FP003)
    * ビジネス・オブジェクト・コマンド
    set_ref #TempVF_FP003 (*Dynamic #TempVF_AC009)
    set_ref #TempVF_FP002 (*Dynamic #TempVF_FP003.uAuthorityParent)
    set_ref #TempVF_FP001 (*Dynamic #TempVF_FP002.uAuthorityParent)

    ENDIF

    Signal CommandReference Reference(#TempVF_FPM10) CommandDefinition(#uFrameWork.VF_FP009Manager) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002) VisParent3(#TempVF_FP003)

    * フィルター

    When (= VF_FP014)
    set_ref #TempVF_FPM14 (*Dynamic #Manager)
    set_ref #TempVF_FP003 (*Dynamic #Reference)
    set_ref #TempVF_FP002 (*Dynamic #TempVF_FP003.uAuthorityParent)
    set_ref #TempVF_FP001 (*Dynamic #TempVF_FP002.uAuthorityParent)

    Signal Filter Reference(#TempVF_FPM14) VisParent1(#TempVF_FP001) VisParent2(#TempVF_FP002) VisParent3(#TempVF_FP003)

    * RAMP デスティネーション

    When (= VF_FP027)
    set_ref #TempVF_FPM27 (*Dynamic #Manager)
    Signal RAMPDestination Reference(#TempVF_FPM27)

    * RAMP ジャンクション

    When (= VF_FP028)
    set_ref #TempVF_FPM28 (*Dynamic #Manager)
    Signal RAMPJunction Reference(#TempVF_FPM28)

    * RAMP スペシャル

    When (= VF_FP029)
    set_ref #TempVF_FPM29 (*Dynamic #Manager)
    Signal RAMPSpecial Reference(#TempVF_FPM29)

    * RAMP スクリプト

    When (= VF_FP030)
    set_ref #TempVF_FPM30 (*Dynamic #Manager)
    Signal RAMPScript Reference(#TempVF_FPM30)

    Endcase

    Endwhile

    Endfor
    Endif

    * すべての子を再帰的にエミュレート

    If_ref #Reference.ecchildcollection is_not(*null)
    For #Child in(#Reference.ecchildcollection)
    Invoke #Com_Owner.uEnumerateOBJECT Reference(#Child) Parent(#Reference)
    Endfor
    Endif


    Endif

    Endroutine

    END_COM