GeneXusを使っていると外部のファイルを追加するケースがあります。例えば、独自に作成したJavaScriptファイルやJQueryなどのJavaScriptライブラリ、Log4j.jarなどの各言語ごとのライブラリ、静的なHTMLファイルなどなど。
この外部で作成したファイルをどうやって管理・デプロイしていますか?恐らくファイル自体の管理(バージョン管理)はSubVersionなどのバージョン管理ツールを使っていると思いますが、GeneXusが生成・コンパイルしたファイルとのマージ・デプロイは手作業ではないでしょうか?
こんな時に便利なのがファイルオブジェクトです。ファイルオブジェクトはその名の通り、外部で作成したファイルをそのままオブジェクトとしてナレッジベースの中に格納します。
ツールが全ての問題を解決してくれるわけではない。 でも、ツールは本来人がやらなくても良い作業を効率的に行ってくれる。 そして、人は人にしかできない事により注力すべき。 つまり、それがクリエイティビティ(創造性)。 システム開発におけるクリエイティビティを高めるお手伝いをしています。
2013年3月12日火曜日
2013年3月10日日曜日
ローカル式の挙動に関するあれこれ
GeneXusのコードの中には、記述してあるコードの順序と実際に動作する時の順序(生成されるソースコードの順序)が違っているケースがあります。具体的にはFor eachを使わないローカル式がそれにあたります。
又、Newコマンドの外側でfor each以外のループ処理をしている場合(例えば、カウンタやコレクションによるforコマンド)、1回目のループでは未設定、2回目のループでは1回目の式で取得した値がセットされるという、ループ処理がずれた結果になります。
ケース1と2の対処としては、ローカル式を使用する部分をサブルーチンに分割する事により、明示的に処理の順序を指定することが可能です。
ケース1
ケース2
ケース1.ローカル式の条件に変数を使用している場合
あるコードブロック内にて変数の初期化後にローカル式がある場合、ローカル式が先に評価されるため、条件内の変数が未設定の状態で実行されます。&CustomerId = 1
&Count = Count( InvoiceDate, CustomerId = &CustomerId )
//Countが先に評価されコンディション内の&CustomerIdの値は初期状態
ケース2.Newコマンド内にローカル式を記述した場合
Newコマンド(つまりInsert)が先に評価され、ローカル式の実行はInsertの後になります。結果として、ローカル式の結果をセットしている項目属性は未設定の状態で保存されます。又、Newコマンドの外側でfor each以外のループ処理をしている場合(例えば、カウンタやコレクションによるforコマンド)、1回目のループでは未設定、2回目のループでは1回目の式で取得した値がセットされるという、ループ処理がずれた結果になります。
New
Attribute1 = &val1
Attribute2 = Max( Attribute2, Attribute1 = &val1) + 1
Attribute3 = &val3
Endnew
ケース3.BC(ビジネスコンポーネント)を使ったInsertにローカル式を記述した場合
これは例外ケースです。BCの操作はDBアクセスと認識されないため(DBに対するI/OはBC内に隠蔽かされている為)、ローカル式が先に評価され、取得した値を元にBCを使ったインサートが実行されます。この場合は見た目と同じ挙動になります。&BC.Attribute1 = &val1
&BC.Attribute2 = Max( Attribute2, Attribute1 = &val1)
&BC.Attribute3 = &val3
&BC.Save()
ケース1と2の対処としては、ローカル式を使用する部分をサブルーチンに分割する事により、明示的に処理の順序を指定することが可能です。
ケース1
&CustomerId = 1
Do ‘GetCountInvoice’ //サブルーチン呼び出し
//ローカル式をサブルーチン化
Sub ‘GetCountInvoice’
&Count = Count( InvoiceDate, CustomerId = &CustomerId )
EndSub
ケース2
New
InvoiceId = &InvoiceId
Do ‘GetMaxDetailId’ //サブルーチン呼び出し
InvoiceDetailId = &max + 1
ProductId = &ProductId
//ローカル式をサブルーチン化
Sub ‘GetMaxDetailId’
&max = Max( InvoiceDetailId, InvoiceId = &InvoiceId )
EndSub
2013年3月8日金曜日
GeneXusユーザー事例 : 三菱重工
ブラジルのサイトでGeneXusの事例として日本の三菱重工が掲載されていました。
Mitsubishi Heavy Industries integra Mainframe e SAP com GeneXus
日本のGeneXusユーザー内では三菱重工の事例はかなりポピュラーですが、知らない人の為に過去に書いた投稿を紹介します。(プレゼンの取材記事です。プレゼンの具体的な内容はここでは書いていませんが予めご了承ください)
これは一昨年のGeneXus Day 2011の時に三菱重工の野田さんのスピーチの紹介記事です。
これは昨年ウルグアイで開催されたインターナショナルミーティングでの三菱重工の野田さんのスピーチの紹介記事です。
・2012 GeneXusインターナショナルミーティング [その他のスピーチ]
Mitsubishi Heavy Industries integra Mainframe e SAP com GeneXus
Mitsubishi Heavy Industries integra Mainframe e SAP com GeneXus
A ferramenta garantiu produtividade e redução de custosSalvador, 05 de março de 2013 – A Mitsubishi Heavy Industries (MHI) foi fundada em 1884 e atualmente possui mais de 30 mil funcionários, oito bases de operação, seis centros de pesquisa e desenvolvimento e 14 fábricas em todo o mundo. Em 2003, quando o GeneXus chegou ao Japão, a empresa começou a utilizar a ferramenta para integrar o sistema SAP e o sistema Mainframe e ganhou não só em produtividade, mas também na redução de custos.O vice-diretor responsável pelo desenvolvimento de aplicações em sistemas Mainframe da Yokohama Engineering Center, da MHI, Kyoji Noda, explica que optou por GeneXus porque havia poucos engenheiros com conhecimento em Mainframe, os gastos para atualizar a tecnologia eram altos e também havia dificuldades para desenvolver novas tecnologias. “GeneXus é fácil de aprender, traz alta produtividade de desenvolvimento, é fácil de manter e evolui junto com a tecnologia, não se desatualiza”, destaca.
日本のGeneXusユーザー内では三菱重工の事例はかなりポピュラーですが、知らない人の為に過去に書いた投稿を紹介します。(プレゼンの取材記事です。プレゼンの具体的な内容はここでは書いていませんが予めご了承ください)
これは一昨年のGeneXus Day 2011の時に三菱重工の野田さんのスピーチの紹介記事です。
・GeneXus Day 2011 Winterが開催されました
・2012 GeneXusインターナショナルミーティング [その他のスピーチ]
2013年3月6日水曜日
2012年度 ジェネクサス・ユーザー会 最終報告会がありました
去る3月5日、ジェネクサス・ユーザー会 ユーザーサロン(勉強会) 最終報告会が開催されました。ユーザー会加盟企業から50名を超える参加がありました。
今年度、ジェネクサス・ユーザー会ではユーザーサロン(勉強会)を企画しました。参加者を5つの分科会にチーム分けし、それぞれ研究テーマを考えて一年間活動してきました。そしてその集大成として最終報告会が開催されたのです。
発表会の内容はここでは公開できませんが実装技術、ナレッジベースの管理、ドキュメントなどのテーマがありました。エンドユーザー・ベンダーそれぞれGeneXusを使っている立場で意見を持ち寄り議論し研究されていて、私も色々と勉強になりました。
ユーザーサロンは今年度初めての試みでしたので、各自いろいろと反省点ややり残した事もあるようですが、これも来年度に向けての糧となる事でしょう。
ともあれ、ユーザーサロンに参加された皆様、企画運営された理事会の皆様、そしてバックアップして下さったジェネクサス・ジャパンの方々、本当にお疲れ様でした。
今年度、ジェネクサス・ユーザー会ではユーザーサロン(勉強会)を企画しました。参加者を5つの分科会にチーム分けし、それぞれ研究テーマを考えて一年間活動してきました。そしてその集大成として最終報告会が開催されたのです。
発表会の内容はここでは公開できませんが実装技術、ナレッジベースの管理、ドキュメントなどのテーマがありました。エンドユーザー・ベンダーそれぞれGeneXusを使っている立場で意見を持ち寄り議論し研究されていて、私も色々と勉強になりました。
ユーザーサロンは今年度初めての試みでしたので、各自いろいろと反省点ややり残した事もあるようですが、これも来年度に向けての糧となる事でしょう。
ともあれ、ユーザーサロンに参加された皆様、企画運営された理事会の皆様、そしてバックアップして下さったジェネクサス・ジャパンの方々、本当にお疲れ様でした。
2013年3月5日火曜日
Webサービス用外部オブジェクトのデプロイ
GeneXusにて外部のWebサービス・プロバイダーを呼び出すアプリケーションを作成する場合に外部オブジェクトを使用しますが、呼び出し先(Webサービス・プロバイダー)のURLは外部オブジェクトのプロパティに設定します。
しかし、実際にテスト環境や本番環境で動かす時には開発時のURLとは別のURLを指定しなければいけない場合がほとんどだと思います。GeneXusを使ってビルドを行わずに別のURLを指定する場合は以下の方法となります。
しかし、実際にテスト環境や本番環境で動かす時には開発時のURLとは別のURLを指定しなければいけない場合がほとんどだと思います。GeneXusを使ってビルドを行わずに別のURLを指定する場合は以下の方法となります。
2013年3月4日月曜日
Webサービスを呼び出すアプリケーション(サービス・リクエスタ)の作成 その2
2.外部オブジェクトの利用
前回作成した外部オブジェクトを使ってWebサービスを呼び出す画面を作成します。Webパネル上にユーザーID、パスワードを入力項目として配置し、実行ボタンでWebサービス・プロバイダーを呼び出します。
2013年3月1日金曜日
OperaがWebKitに移行 - ブラウザ戦争の果てに
先日(2/12)、OperaがHTMLレンダリングエンジンを独自のPrestoから、SafariやGoogle Chromeで採用されているWebKitに移行すると発表がありました。
Opera Developer News - 300 million users and move to WebKit
一般の人にはなじみが薄いかもしれませんが、Operaというといち早くタブブラウザを採用したり、マウスジェスチャーや描画スピードの速さなど、通好みのブラウザでした。私も2000年〜2005年ぐらいまでは使っていたと思います。その後、FireFoxやGoogle Chromeなど新しいブラウザーが普及するにつれ段々と使わなくなっていきました。
Opera Developer News - 300 million users and move to WebKit
一般の人にはなじみが薄いかもしれませんが、Operaというといち早くタブブラウザを採用したり、マウスジェスチャーや描画スピードの速さなど、通好みのブラウザでした。私も2000年〜2005年ぐらいまでは使っていたと思います。その後、FireFoxやGoogle Chromeなど新しいブラウザーが普及するにつれ段々と使わなくなっていきました。
登録:
投稿 (Atom)