最近のアクセス:
コードスニペットを作成する方法

同じコードを頻繁に入力する場合は、任意の GeneXus オブジェクトコードスニペットをテンプレートとして再利用すると便利です。コードスニペットを挿入するには、スニペットツールボックスからドラッグ アンド ドロップするか、ショートカットを使用します。
たとえば、Work With パターンを頻繁に使用しており、そのパターンで自動的に生成される、セキュリティチェック用の次のコードを簡単に再利用したい場合を考えます:
PGetContext.Call(&Context)
IsAuthorized.Call(&PgmName, &IsAuthorized)
If (not &IsAuthorized)
    NotAuthorized.Call(&PgmName)
Endif
オブジェクト間でこのコードをコピーして貼り付けて変数を定義する代わりに、プロシージャーにこのコードを簡単に挿入する方法があります。そのためには、CallFor Each コマンドFor In などの既存のコードスニペットと同じように、このコードをコードスニペットとしてカプセル化し、コマンドとして使用します。 
コードスニペットを作成するには、次の手順に従います:

手順 1: 目的のコードを含むスニペットファイルを作成する

GeneXus X Evolution 1 のインストールフォルダには、既定のコードスニペット用のフォルダ (<GeneXus のインストールフォルダ>\Snippets) があります。
独自のコードスニペットを作成する一番簡単な方法は、既存のスニペットをコピーして、必要な変更を加えることです。このアプローチを使用します。
既存のコマンドのスニペットのいずれかをコピーして、名前を変更します。この場合は、Check Security command.snippet という名前にします。
イメージ:10726.gif
その中身を次のコードに置き換えます:
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>Check Security Sample</Title>
            <Shortcut>css</Shortcut>
            <Description>Reuses the security checking generated by the Work With Pattern</Description>
            <Author>Artech</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
                <SnippetType>SurroundsWith</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal Editable="true">
                    <ID>ContextVariable</ID>
                    <ToolTip>Context SDT Variable</ToolTip>
                    <Default>&amp;Context</Default>
                    <Function>
                    </Function>
                </Literal>
                <Literal Editable="true">
                    <ID>IsAuthorizedVariable</ID>
                    <ToolTip>IsAuthorized Boolean Variable</ToolTip>
                    <Default>&amp;IsAuthorized</Default>
                    <Function>
                    </Function>
                </Literal>
            </Declarations>
            <Code Language="">
                <! [ CDATA [ LoadContext.Call($ContextVariable$)
IsAuthorized.Call(&PgmName, $IsAuthorizedVariable$)
If (not $IsAuthorizedVariable$)
    NotAuthorized.Call(&PgmName)
Endif
 ]  ] >
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>
次に、上記のコードについて説明します:
  • Title タグ、および Shortcut タグと Description タグで指定したテキストは、GeneXus IDE で、コードスニペットのタイトル、およびその使い方を示すことになります。この例では:
    • Title タグで指定した Check Security Sample は、スニペットの一覧に表示される、このスニペットのタイトルになります。
    • このスニペットの上にマウスポインターを置くと、スニペットの説明 (Description タグで指定) と css というショートカット (Shortcut タグで指定) が示されます。
                           イメージ:10728.gif
  • Code タグの間にあるのは、挿入するコードのブロックです。この場合は、一番上で示したコードを若干変更して、$ContextVariable$ パラメーターと$IsAuthorizedVariable$ パラメーターを使っています。これらは、実行時に実際の値に置き換えられるリテラルです。
  • Declarations タグの間で、これらの変数の既定値を宣言しています。

手順 2: 作成したスニペットを GeneXus オブジェクトに登録する

スニペットファイルを作成したら、目的の GeneXus オブジェクトに、そのスニペットを登録します。
このためには、GeneXus オブジェクトの XML ファイルにエントリーを追加します。GeneXus オブジェクトには、使用可能なスニペットのセクションごとに config.xml ファイルがあります。
イメージ:10727.gif
ここでは、プロシージャーの [ Source ] エレメントの設定ファイル (<GeneXus のインストールフォルダ>\Snippets\Procedure\Procedure\config.xml) に、次のような Snippet タグを追加します:
<Snippets>
  <Category name="Snippets">
        <Snippet name="Check Security command"/>
        <Snippet name="Call command"/>
......
これで、スニペットの登録完了です。

手順 3: GeneXus を再起動する

GeneXus IDE を再起動します。

手順 4: 新しいスニペットを確認する

プロシージャーの [ Source ] エレメントに新しく登録したカスタムのスニペットが使用できることを確認するには、既存のプロシージャーを開くか、新しいプロシージャーを作成して、スニペットのツールボックスを開きます。新しいスニペットのタイトルの上にマウスポインターを置き、ツールチップが表示されることを確認します。
イメージ:10728.gif

手順 5: スニペットを使用する

新しい Check Security スニペットをドラッグ アンド ドロップするか、ショートカット (css) を入力して Tab キーを押します。前の手順で指定したコードが挿入されるはずです。
イメージ:10729.gif
コードが挿入されたら、&Context 変数と &IsAuthorized 変数 (上の図の緑色の部分) を作成します。
お疲れ様でした!これで、GeneXus でカスタムのコードスニペットを使用できるようになりました。
: GeneXus をアップグレードする場合は、新バージョンをインストールする前に、必ずカスタムのコードスニペットをバックアップしてください。


サブページ
Created: 14/09/18 03:04 by Admin Last update: 24/04/01 20:54 by Admin
カテゴリ
Powered by GXwiki 3.0