*=============================================================================
*
* コンポーネント :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