Technical Capabilities Tech Blog

検証#実装方法#機能紹介:Stub(スタブ)

2024年05月17日

こんにちは、植田です。
今回は大分古く(GeneXusEvolution1 Upgrade 2 以降の .NET と Java のジェネレーター)から実装
されていて、実用的な機能であるStub(スタブ)について紹介します。

スタブ機能とは

GeneXusのスタブとは、1つのプロシージャオブジェクトの中に複数の関数を定義できる機能のことを指します。
例えば、正規表現による入力制御をまとめて管理したい場合や、異なるマスタ情報からそれぞれ似た意味を持つ情報を取得する(名称)等に役立ちます。

定義方法

まず始めにプロシージャオブジェクトを作成します。
今回は発注システムの得意先に関する異なる情報を1つのプロシージャで取得する場面を想定しています。

SourceエレメントにStub XXX([inまたはoutパラメータ(複数記述可)])~EndStubを記述し、その中に処理を記述していきます。
※注意点:Stubを利用する場合、RulesエレメントにParmルールは記述できません。

Stub TokShukka(in:&pTokCode,out:&pTokSkaLeadTime) //出荷リードタイム
	for each
		where TokCode = &pTokCode
		&pTokSkaLeadTime = TokSkaLeadTime
	when none
		&pTokSkaLeadTime = 999
	endfor
endStub

Stub TokHaitatsu(in:&pTokCode,out:&pTokHtsLeadTime) //配達リードタイム
	for each
		where TokCode = &pTokCode
		&pTokHtsLeadTime = TokHtsLeadTime
	when none
		&pTokHtsLeadTime = 999
	endfor
endStub

以上で定義は完了です。

呼び出し

プロシージャに定義されたStubは以下の様にして呼び出すことができます。

CMNGetLeadTimePC.TokShukka(TokCode)

UdpやCallでの呼び出しとは少し異なる点に注意です。
現在の所、WebPanelとProcedureに定義は可能でしたが、グローバル式の方はStub関数を認識しませんでしたのでご注意ください。

まとめ

KBが大きくなると管理する情報も多くなってきたり、配置場所もルールの徹底が必要だったりと「よく使う関数は一括りにしたい」と思う場面が多々あります。
このような時にはStubの機能は大変役に立つと思いますので是非ご活用ください!

最後までご覧いただきありがとうございました!

Tech Blog一覧