ひとり技術部会

GeneXus,Biz/Browserといった最先端のツールを使った業務開発をしてますが、余りにも参考サイトがないのでつくりましたよと。

GeneXusのExtention開発 -その7-

リリースしてしばらくたったのですが、ブログに書くの完全に忘れてました(汗)



その名も、「KbInfo2」です。

以前、GeneXusのExtention開発 -その1、2- で紹介しましたが、もっと使いやすくしたいとずっと考えておりました。

あれから1年。

ついにやりました。ナレッジベースのHTML出力機能です。
暇な人は見てみてください。

ProjectsEntry

PrijectsEntry













全てではないですが、ナレッジベースのほとんどの情報をHTMLで表示します。
作った主な目的は以下の通り。
・過去のナレッジベースをすぐ参照したい場合
・ライセンスがない場合でも、ナレッジベースを見たい場合
・GeneXusのコンサル時に、相談の際に
・ドメインのEnum(値リスト)をすばやく見たいときに

とはまぁこんな感じです。
作ってみていろいろと楽しかったですねー、あとはたくさん売れれば文句なしなのだが・・・。


ちょっと商売っ気が出てしまいました、失礼。


一旦、これでパターン開発は終了。


もっといいアイディアがあれば、コメントください。
お酒、おごります。。。。




でわでわ













画面制御が全く聞かないオブジェクトがある・・・。

Gxユーザ会に参加したのですが、なかなか愉快な人がたくさんおります。
色んな人と話すのは楽しいですな!



なぜだろうか。
あるオブジェクトに対しての制御(Enabledプロパティ)をEventに記述すると、IISえらーになってしまう・・・。
特定のGeneXusのWebPanel内の部品に対する制御が全くできない。

エラーはこちら。
error_20180122







コレクションに負の値をとかのエラーが書いてあるので、Gridのloadイベントをコメントした上でビルドすると通る・・・。
色々試行錯誤しながらなんとか解決までこぎつけました。。。

今回悩んだのが、FreeStyleGrid内のセルにコンボボックスの変数を配置したことから始まりました。
同一行の値によって、Visible、Enableの制御を切り替える処理を書いたところ、全く消えない!!!!
FreeStypeGridの限界!?とか、セルの中にテーブルを入れすぎたせい!?とか、色々やってみましたが、
効果なし。
さらにやる気を削ってくれるのが、1回にビルドの5分。。。

久しぶりに俺何やってんだろ・・・。って気分を噛みしめることに成功しました。

解決策として、WebForm内のHTMLビューを使ったことで、分かりました。

対象のオブジェクトの情報がめちゃくちゃ多いんですわ。
gxProp="ごちゃごちゃいっぱいありました。"

多分ここが悪さをしているんだろうと睨み、一度削除し、新しく作り直しました。
そしたらあら不思議、キレイに制御が行えているでありませんか。。。

これってGeneXusあるあるなのかは分かりませんが、相変わらずハマると大変ですね。



でわでわ




GXServerのホスト名変更対応

色々忙しく、一悶着。。。
思い通りに行かないのが、人生を楽しませるスパイスなのです。


今回はなかなか体験できないことが出来たので、共有します。
ネットワーク環境の変更により、GXServerのインストールしている端末にホスト名を
変更しなければならないことになってしまいました。。。

なかなか面倒ではありますが、やらなければならない。。。
しゃーないっすね。

Toal 1.5人日くらいかかってしまいましたが、なんとかなりましたので、
メモとしておきます。(もう二度とやらないとは思っている)


1.まず、コンピュータ名を変更してください。

(※ 念には念のためなので、2-3は実施しなくても大丈夫です。)
2.GXServerのインストールしたフォルダをバックアップしてください。
3.GXServerGAMデータベースをバックアップしてください。

4.GXServerをインストールしたフォルダ内をGrep検索で、旧ホスト名を入力
 Hitした全てのファイルをコピー(バックアップ用)し、旧ホスト名を新ホスト名に上書きを行う。
 基本、Config系のファイルを書き換えます。

5.その状態で、IISが正常に起動することを確認してください。
 その場合、ログイン画面がいつもと違い、「GxTechnical」「Local」のリストボックスが存在しませんでした。

6.GXGamのデータベースに接続する。
7.テーブル「RepLogin」の旧ホスト名を新ホスト名に上書きを行う。
8.テーブル「RepLoginAdd」の旧ホスト名を新ホスト名に上書きを行う。


以上です。


終わってしまえばそこまで大したことはしていないのですが、ライセンスの消失・KBの破壊等の恐怖感からなかなかダイナミックにやれませんでした。
また、最初は旧ホスト名をIPアドレスに変更して色々やってみたのですが、あまりうまく行ってないように感じたため、新ホスト名にしました。



久しぶりに書いた記事がこんなマイナーなことになるとは・・・。

でわでわ

GeneXusのExtention開発 -その6-

ひとりで全部やるには時間が足りない。
日常をどれだけ恵まれていると考えるか、外注できると考えるか。。。


次の製品は、SendSubです。
GeneXusのフレームワークを作成する際に、そこそこ使えるかなと。

プロシージャに共通処理(Sub、Event)を作成し、別のオブジェクト(WebPanl、Transaction、Procedure)に配布するExtensionとなります。
出来るだけ共通処理を関数化して、FWに埋め込むのは当然なのですが、関数に渡す値が足りなかった。。。
今から変えたくないけど、変えないと。。。。というときに活躍します。


この製品で、ロジックに対しても操作する術を身につけたというわけです。


もうほぼ完成しておりますが、テスト後に6月リリース予定なので、試したい方は是非サイトから。
株式会社ゼロワンシステム」をよろしくお願いいたします。



次は、作っていく中でドキュメント出力が弱いのは理解しているので、KbInfoのバージョンアップか、別製品の企画→製造に入ります。

アイディアはたくさんあるので、あとは実効あるのみ。



でわでわ




GeneXusのExtention開発 -その5-

エンゼルバンクという漫画を読み返しましたが、やはり面白い。
ところどころ目も当てられない様な部分はあるが、漫画は絵だけじゃないと再認識www


前回の記事で公言した「AloneAttributes」、リリースしました!!!

GeneXus Market Place
http://marketplace.genexus.com/product.aspx?aloneattributes2,en


これが今までにないスピードで審査が通りましたww

KbInfoとかは1ヶ月、TranDesignerは却下されてるのに。。。。
今回のAloneAttributesはなんと、3時間。。。

この差はなんなんだろうか。ビジネス?ユニークさ?

今回は、結構ネタに走ったのですが、それがウルグアイでも受けたのだろうか。。。

申請した内容は、こんな感じ
「テーブルから切り捨てられたアトリビュートは泣いてます。
私が、孤独なアトリビュートを遠くへ送ってあげます。」

それとアイコンを泣いている顔にしただけ。



まぁ通ったんならいいや。


有言実行ナリ




でわでわ







ERR 212 Not enough global stack

最近、体の抵抗力が落ちている気がする・・・。
食事・睡眠・運動を心掛けなければ。。。無理だな。


「ERR 212 Not enough global stack」

このエラーメッセージを見たことはございますでしょうか。
私もGeneXusを8年位やっておりますが、初めてみました。

既存のWebPanelに対して、ForEachを一つ増やしただけなのですが、発生し、ビルドが行えないという自体に陥りました。
増やした部分をコメントするとエラーは発生せず、ForEachの部分を戻すとまた発生するとの状態。

原因を探ったのですが、全くわかりませんでした。
しかし、そうはいっても解決しないと仕事が終わらない orz


追加した部分をProcedureに外出しすることにより、解決しました。


海外でも同様の事象が発生しているようで、全てリビルドで治ったーとかありますが、そんなことでいちいち時間かけてられませんわ。



もし、原因をわかっている人がいれば、教えて下さいませ。


でわでわ






 

GeneXusのExtention開発 -その4-

だんだん今の生活に馴染むことによって、技術的な向上心がなくなっていくような気がする。
モチベーションのあて先が変わってきたのだろうか。


今後は、ふっと思いついた地味なものを作成します。

その名も「AloneAttributes」です。

これは、スペルミスや、不要になったトランザクションを削除した際に残ったAttribute達をチェックするものです。
特に影響も問題もないのですが、たまにコーディングしてるときに候補一覧に現れ、間違えて書いてしまうと、Spec時にエラーになってしまうことが、稀にあります。

「間違えたからもう要らないって、この人でなし!!!」というAttributeたちの声が聞こえてくる気がします。
こんな不憫なオブジェクト達もいないだろうということで、チェック→開放(削除)するExtensionを作ります。

イメージ:
 1.メニューよりチェックし、開放(削除)対象のCSVに吐きます
 2.削除リストとして確認
 3.メニューより削除実行をして、開放(削除)してあげる。さよなら天さん。


という流れにします。


予想所要時間:30分


近いうちに完全フリーでリリースしますので、几帳面な方はどうぞご利用ください。




でわでわ



GeneXusが終了し、開いていたオブジェクトが読み取り専用になった対処法

どこまでが伏線なのか、よく分からない小説は読んでてめんどくさくなってきますね。
読み終わってすっきりした気持ちになれるお話が好きです。




さて、よくありがちなことですが、ビルド中にWebPanelを編集したり、履歴から戻したりした場合にGeneXusが固まり、恐る恐るプロセスを落とすことがございます。

一応私が気をつけている点について、いくつか上げておきます。
「処理中にはなにもしないことを推奨すること」
 ・重いWebPanelに対するHTMLを直接編集→保存時
 ・重いWebPanelに対して、履歴から元に戻す
 ・ビルド中 
 ・GxServerから更新中
 ・「チーム開発」→「元に戻す」
この間に色々触るとろくなことがないです。


まぁそんな感じで GeneXusが固まり、プロセスを落とすとします。
再度GeneXusを起動し、開いていたオブジェクトを開いたとき、「既にユーザーによって開かれているため、読み取りモードになります。」 って、開いてるの俺ーーーー!
となります。


さて、GeneXusのナレッジベースですが、SQLServer内にデータベースとして構成されていることは既知のことだと思います。
読み取りモード等の情報もデータベースにあるはずと思い、探したらありました。

以下のテーブルの行を削除してください。


テーブル:
State

対象条件:
StateName like 'ObjectLock:%'
StateAdditionalInfo = '開いていたオブジェクト名'

※チーム開発時のロック情報も含まれてますので、間違えて消さないように注意してください。

このデータを削除し、GeneXusでオブジェクトを開き直すといつもどおり開けるはずです。

困った人は、お試しあれ。 





でわでわ
 

DB上にリレーション(外部キー)を張らない方法

現場が見えないのに現場に指示を出す人の心境というのはどのような気持ちになんだろうか。
管理者は現場に出てはならないとは思うが、現場をしっかり把握してないのは職務怠慢なのかな?
中間管理職は大変そうです。



GeneXusにおいてテーブル間のリレーション(外部キー)をしっかりと管理することによって
正規化されたDB、システムが作れます。

しかし、正規化することによるデメリットも存在します。
例えばあるデータを消したいとき。
 リレーションを張っているため、あるデータを消すために他のテーブルのデータを消してからじゃないと消せない。
例えばデータ移行したいとき。
 リレーションを張っているため、データを挿入する順番を考慮してからじゃないと正しいデータが入らない。

などどいったことが起こります。
主に、データ移行が大変になります。


そこで、DB上にはリレーションを張らず、アプリケーション上のみ擬似リレーションを貼ることが出来ます。


Declare referential integrityプロパティ
物理外部キー


ただ、このプロパティを有効にし、正規化されたデータを削除し、不整合のデータをアプリケーションから
触ったらどうなるのでしょうか。

試しては無いですが、注意してご利用くださいませ。



でわでわ

GeneXusのExtention開発 -その3-

肩こりがだんだんきつくなってきてしまった。。。
サウナに行きたいです。。。


前回の記事からそれほど時間は立っていないのですが、なかなかいいのが作れました。
その名も「TranDesigner」 です。

機能は完成したので、後日Market Placeへ公開します。

まぁExcelからTransaction周りのオブジェクトを作ります。
追加だけではなく、部分的な更新も出来るようにしました。


これ、いいんじゃね?って感じで作りましたが、いいっすねww 
作っておきながら 過去の自分に渡してあげたい。

機能的には以下のとおりです。
「取り込むオブジェクト(追加・更新)」
 ドメイン
 アトリビュート
 トランザクション

「ドメイン設定項目」
基本プロパティ:
 名称
 Description
 型
 長さ(小数も含む)
数値プロパティ:
 小数点設定
 マイナス設定
 ValueRange(値の範囲制限)
 ↑エラー時のメッセージ
文字プロパティ
 パスワード設定
 正規表現
 ↑エラー時のメッセージ
 
「アトリビュート設定項目」
 空白の許可

「トランザクション設定項目」
 基本プロパティのみ


これをExcel上に入力して、更新列に「True」と書き込んでGeneXusのツールバーから取り込むとあら簡単。
オブジェクトが作られてます。
Excelの方にはインポート結果が書き込まれます。
「OK 2017/02/14 18:55:00」 というような感じで。

インポートは当然ですが、更新も出来るように仕上げているので、
結構使い勝手はいいかなと。

実は一つだけやり残しが。。。

Formulaプロパティがどうしても設定できず、今回は見送る形に。。。
誰か、設定方法教えてください。orz

Formulaプロパティが設定できるなら購入する人も募集です。



HPの方でも固い感じでページ書きますが、こんな感じです。
活用シーン等も作らねば。



でわでわ
記事検索
訪問者カウンター
  • 今日:
  • 昨日:
  • 累計:

アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

プロフィール

どせいさん

  • ライブドアブログ