推定された時間:15 分
ユーザコントロール
!
User Controls ユーザコントロール
ウェブコントロールはアプリケーションの機能と外観を著しく高めるために、どの GeneXus ウェブオブジェ クトのフォームにでも挿入することができます。提供される標準のユーザコントロール(Chart、Image、
Gallery、Map、Treeview)とは別に、GeneXus はユーザコントロールエディターを提供しています。このエデ ィターを使って、既存のユーザコントロールを変更して独自のユーザコントロールを作成することもできま す。
製品の売上チャートを表示させましょう。
この要件を満たすために、GxChart というユーザコントロールを使用しましょう。
GeneXus X: クイックスタート
ページ 51/65
ステップ20:ユーザコントロールの定義
1. SalesxProd と呼ばれるウェブパネル型のオブ ジェクトを新規作成してください。デスクリプショ ンには「製品売り上げ」と入力してください。
図:SalesxProd ウェブパネル 2. 「表示」メニューから「他のツールウィンドウ」の
ツールボックスを表示させてください。
3. ウェブパネルに「GxChart」ユーザコントロール をドラッグしてください。
図:チャート 4. イベントエレメント内に自動生成されたコードは
削除して、次のコードを記述してください。
図:イベント
GeneXus X: クイックスタート
ページ 52/65 イベントエレメント記入内容
Event Start
GxChartControl1.Title = 'ProductSales' For Each
&GxChartData.Categories.Add(ProductName)
&GxChartSerie.Values.Add(InvoiceSubTotal) EndFor
&GxChartData.Series.Add(&GxChartSerie) EndEvent
5. ウェブパネルを保存してください。
6. F5 を押して、アプリケーションを実行してくださ い。
図:アプリケーションの実行
おめでとうございます!
GeneXus で最初のアプリケーションの作成に成功しました。
次の段階では、GeneXus のもう一層深い機能を紹介していきます。
GeneXus X: クイックスタート
ページ 53/65
パート7:プロシージャ
推定された時間:15 分
インタラクティブではないプロセスの設計(プロシージャ)
!
プロシージャ
これまでは、データベースにデータの追加、更新および削除するためにユーザのアクションを 必要とするトランザクションオブジェクトを作成してきました。
しかしながら、ユーザのアクションに頼らずに自動的に処理を実行するケースが必ずあります。
その場合には、別の GeneXus オブジェクトを使用します:
プロシージャ:プロシージャは、データベースの読み取りおよび更新をするインタラクティブ ではない処理を定義するオブジェクトです。 プロシージャは、関数およびサブルーチンを定 義するために使われます。
GeneXus プロシージャの主な機能定義は、トランザクションオブジェクトを定義した
時と同様に知識に基づく方法論が使われます。
プロシージャオブジェクトの定義は、項目属性が保存されるデータベーステーブルに基づいて いるのではなく項目属性の名前に基づいています。
したがって、プロシージャ内に記述される項目属性がナレッジベースにある限りプロシージャの 定義は有効であり続けます。
この次にはすべての請求書を印刷する帳票を作成しましょう。
!
プロシージャの特徴
高レベルのプロセス:プロシージャは、非常に高度な手法で記述されます。実行順序は、
設計者が記述するコントロール、印刷、データへのアクセスおよび他のコマンドを含む単純 なプロセス言語によって決定されます。
知識に基づく:プロシージャのソースに書く項目属性は、物理データベースのテーブルを直 接参照するのではなくナレッジベース内に定義されている項目属性名を参照します:
o 項目属性の物理的な場所は GeneXus に任せます。
o GeneXus は、物理データベースのテーブル間の関連を知っています。
o 式項目属性は、GeneXus により自動的に推論・計算されます。
物理データベースが変化しても、プロシージャの振る舞いに影響を与えません。
合計と共に全ての顧客一覧を印刷するプロシージャと製品を 10%値上げするプロシージャを作成しましょう。
ステップ21:印刷するプロシージャの定義
GeneXus X: クイックスタート
ページ 54/65 1. オブジェクトフォルダを右クリックして「新規」→
「オブジェクト」を選択してください。
2. 作成する「プロシージャ」型オブジェクトを選択 してください。
3. 名前には“Customer_Report” を入力してくださ い。そしてデスクリプションに、 ”顧客一覧”と 入力してください。
4. 作成をクリックしてください
図:CustomerReport プロシージャ
1. 以下のソースを Source エレメントに記述してくださ い:
For each
&Total=SUM(InvoiceTotal) Print printBlock1
Endfor
図:CustomerReport プロシージャのソース 2. レイアウトエレメントへ移動して、ツールバーのメ
ニュ―から「挿入」→「項目属性」から顧客名の項 目属性を挿入してください。
図:プロシージャのレイアウト
GeneXus X: クイックスタート
ページ 55/65 3. ツールバーのメニュ―から「挿入」→「変数」を選
択し、Total と呼ばれる(15.2)桁の数字変数を 挿入してください。
図:変数の挿入 4. ツールボックスを使用してレポートを設計すること
ができます(ラベル、ライン等の挿入) 。 例えば、PrintBlock1 を右クリックし「プリントブロッ クを挿入」で、もう一つの PrintBlock を挿入して
「顧客名」 および 「合計」の見出しをツールボック スのラベルオプションを使用して挿入することがで きます。
それから、マウスで右クリックして表示されるオプ ションを使用して PrintBlock2 を上方へ移動してく ださい。
挿入された変数、項目属性およびテキストの
「Font」プロパティでフォントを「MS 明朝」に変更し てください。
以下のコードをソースエレメントに記述してください:
5. プロシージャを保存してください。
図:プロシージャのレイアウト
GeneXus X: クイックスタート
ページ 56/65 6. 右に表示されるプロシージャ自体のプロパティ内
にある「Main Program」プロパティを TRUE に設定 し、「Call Protocol」を HTTP に設定してください。
図:プロシージャのプロパティ 7. ファイル名と拡張子を指定するために、ルールエ
レメントに以下のコードを記述してください。
Output_file('Customers.PDF','PDF');
図:プロシージャのルール 8. 顧客ごとに合計を印刷するこのプロシージャを呼
び出すために、Invoice トランザクションにボタンを 挿入してください。
まず INVOICE オブジェクトを開きます。
ウェブフォームエレメントを選択し、ツールボックス を開いてボタンをドラッグしてください。
図:Invoice トランザクション
GeneXus X: クイックスタート
ページ 57/65 9. 挿入されたボタンを右クリックして、プロパティを編
集してください。
Caption に「印刷」と入力し、「OnClickEvent」には
「Print」を入力してください。ボタンを右クリックして
「イベントへ行く」を選択してください。
図:ボタンのプロパティ
GeneXus X: クイックスタート
ページ 58/65 10. イベントエレメントには以下のコードを追加してくだ
さい:
Event 'Print'
CustomerReport.Call()
EndEvent
図:トランザクションの実行
11. 保存し、F5 を押して実行してください。
入力された新しい機能を試すために、新しい請求 書を登録してください。
図:プロシージャの実行
GeneXus X: クイックスタート
ページ 59/65
ステップ22:アップデートプロシージャの実施
製品の価格を 10%値下げするプロシージャを作成しましょう。
1. Discount_of_prices と呼ばれる Procedure 型のオ ブジェクトを新規作成してください。デスクリプショ ンには「価格値下げ」と入力してください。
図:価格値下げプロシージャ 2. ソースエレメントに以下のコードを記述してくださ
い:
For each
ProductPrice = ProductPrice-ProductPrice*0.10
Endfor
図:プロシージャソース 3. プロシージャを保存してください。
4. このプロシージャ を呼びだすために、ウェブパネ ルを新規作成してください。
ウェブパネルの名前に「Control_Panel」を入力して ください。デスクリプションには「制御画面」と入力し てください。
図:Control_Panel ウェブパネル
GeneXus X: クイックスタート
ページ 60/65 5. ウェブフォームエレメントでツールボックスからボタ
ンを挿入してください。
図:ウェブフォーム 6. 挿入されたボタンを右クリックしてプロパティを編
集してください。
キャプションに「価格を 10%値下げ」と入力してくださ い。
7. ボタンを右クリックして、「イベントへ行く」オプショ ンでイベントへ移動してください。
プロシージャをイベントから呼びましょう:
Event Enter
Discount_of_prices.call()
EndEvent 図:イベント
8. ウェブパネルを保存し、F5 を押して実行してく ださい。
図:アプリケーションの実行
パート8:マルチプラットフォーム
推定された時間:5 分
GeneXus X: クイックスタート
ページ 61/65
マルチプラットフォーム開発
GeneXus でミッションクリティカルなアプリケーションを複数のプラットホームで生成することが可能です。
一旦アプリケーションが一つの環境で稼働すると、別の環境で同じアプリケーションを稼働させるには新しい 環境を定義するのと同様に簡単にできあがります。
GeneXus トライアルバージョンは、GeneXus .NET ジェネレータのみを提供します。
GeneXus の正規版は市場の主要なプラットホームをサポートしています。GeneXus がサポートする技術の一 覧は次の URL でご覧ください http://www.genexus.com/technologies 。
要約
このチュートリアルで GeneXus の主な機能と利点を経験することができたのではないかと思います。
知識を基にするアプリケーション設計
ナレッジベースを作成することから始まり、アプリケーションの要件をナレッジベースのトランザクションオブジ ェクトと呼ばれる一連のビジネス部分として記述しました。
GeneXus は、記述された情報を基に全てのトランザクションに対応する最適のデータモデル(第三正規形)を 推論しました。
追加したビジネスルールを基に、GeneXus はアプリケーションのビジネスロジックのコードを生成しました。
データベースの自動生成
特定の実行プラットホームを設定して (ウェブ、プログラミング言語、DBMS、その他)、GeneXus は自動的に指 定された DBMS サーバに物理のデータモデルを作成しました。
コードの自動生成と最適なプロトタイプ
アプリケーションプログラムのソースコードを生成し、プロトタイプ環境でアプリケーションをテストすることがで きました。
アプリケーションの保守
GeneXus オブジェクトの修正・追加によるデータモデルの変更が簡単に物理データベースに反映され、影響 を受けたプログラムは再度自動生成されることでアプリケーションが完成することが実感できたと思われます。
インタラクティブでないプロセスの設計
アプリケーションのデータベース構造を意識しないで良いプロシージャの全体的なイメージを提供できたと思 います。
マルチプラットフォーム開発
最後には GeneXus アプリケーションの環境を簡単に移動できることを説明しました。