投稿

2021の投稿を表示しています

SQLServer利用時はトランザクション分離レベルに気を付けて

DBにSQLServerを使用している場合になりまして、事象と対応方法については簡単なのですが、私には詳しい説明が難しいため、先に簡潔に現象を説明します。 「長い更新処理が行われている間、別のユーザーがそのテーブルにアクセスするとデータが取得できない」 <事象の再現> ※SQLServerをデフォルトのまま使用していると再現できます。  Azure for SQLServerの場合は対応されているので、再現しません。 ①SQLServer Management Studioのクエリから一つのテーブルをUpdateを行います。  その際、トランザクションを開始してロックしたままの状態にしてみます。 BEGIN TRAN Update [KM01_KOKYAKU] Set   [KM01_REV_NO] = 7 Where [KM01_KOKYAKU_CD] = 'CC0002' ※Update文は適時調整してください。 この状態だとまだデータは確定されておらず、CommitかRollbackするまではロック状態です。 ②ロック状態のままGeneXusで生成したシステムから、  上記のテーブルの一覧画面や登録画面を開いて、データにアクセスしてみてください。  データが表示されないはずです。(画面が表示されないことも)  データがロックされているため、Selectできない状態となります。 ③次にSQLServer Management StudioのクエリからCommitを実行してみてください。  すると、GeneXusの画面でデータが表示されると思います。 <原因> SQLServerのトランザクション分離レベルがデフォルトだと「READ COMMITTED」であること、 GeneXusが生成するSQL文にはWITH(NOLOCK)が記述されていないことが合わさって上記の現象となります。 GeneXusは以前はSQLServerの場合にSQL文にWITH(NOLOCK)をつけていたのですが、 それだとダーティリードが発生してしまうため、WITH(NOLOCK)を外すように修正されました。 GeneXus コラボDB http://www.gxsupport.jp/gxfaq/faqdisplay.aspx?2961 GeneXus日本語SAC https

17U4バージョンで注意

現時点で最新のGeneXus17U4ですが、運用で困る不具合がありました。 HttpRequest.RemoteAddressにて取得できる値が、17U2ではクライアントのIPアドレスですが、 17U4でサーバーのIPアドレスが取得されるようになってしまいました。 そもそもRemoteAddressはプロキシを使用していたり、 ネットワーク構成によっては正しくクライアントのIPが取れないこともあるのですが、 今回の場合は、以下のどのやり方でもすべてサーバーのIPアドレスが返却されてしまいました。 WebPanelのイベント &W_IP1 = &Httprequest.RemoteAddress &W_IP2 = &Httprequest.GetHeader("X-Forwarded-For") java [!&W_IP3!] = getHttpContext().getRequest().getRemoteAddr(); また、GeneXusから出力されるログ(デフォルトだとclient.log)のIPアドレスも サーバーのIPアドレスになってしまうため、運用で非常に困る状況になります。 ちなみにTomcatのアクセスログのIPアドレスはクライアントでしたので、 あくまでもGeneXusから出力されるIPアドレスの問題のようです。 ★★★ 当現象について、17U5で既に解消済みとのことでして、 日本版では17U6が2021年12月下旬にリリース予定となっております。

処理中の画面グレイアウトの調整

イメージ
ボタン押下時などのサーバー処理の間、画面がグレイアウトしますが、 デフォルトだと色が薄めで、パソコンによっては変化が見えづらかったりします。 デフォルトのグレイアウト状態 以下の調整を行うと良い感じになります。 ①色の濃さを調整 Themeの[DIV.gx-mask]クラスのCustom Properties animation: entermask 1s;-webkit-animation: entermask 1s;-ms-filter:"alpha(opacity=10)";opacity:0.1; ↓↓↓ animation: entermask 1s;-webkit-animation: entermask 1s;-ms-filter:"alpha(opacity= 20 )";opacity: 0.2 ; ②WWPを使っている場合、待ち状態のぐるぐる画像を設定 Themeの[DIV.gx-mask]クラス この2つを設定したグレイアウト状態 ※ちょっとした注意点ですが、この設定はグレイアウト全般に対して反映されるため、 プロンプト起動時の親画面側のグレイアウトも同様の設定が反映されます。 そのため、もしプロンプトを中心から大きく動かした場合は、後ろにぐるぐる画像があります。

ファビコン(fabicon)の設定

イメージ
 一応、ファビコンとはこの部分のアイコンのことです。 お気に入りに登録した際にもアイコンが表示されます。 GeneXusでファビコンを設定する方法はこちらに情報が載っています コラボDB:ファビコンの設定方法について http://www.gxsupport.jp/gxfaq/faqdisplay.aspx?3433 せっかく作ったシステムですので、アイコンを設定した方が素敵ですよね。 設定方法は記載の方法で問題ないのですが、注意点が2つほど その① WWPのシステムウィザードを使うとファビコンを設定する箇所があり、 それを設定するとリンクの記載と同じ形で、マスターページに記述が追加されます。 注意点は 「マスターページを設定していない画面にも設定しましょう」 ということになります。 特に一番大事な 「ログイン画面」 はマスターページを設定しないことが多いので、 忘れずに追加しましょう。 GAMを使用している場合はGAMExampleLogin その② WWP限定かもしれないですが、画面によってはファビコンが表示されない場合がありました。 ブラウザやGeneXusのバージョンに左右された可能性はあります。 その際にはEvents Startの冒頭に記述されている Form.HeaderRawHTML = !'<link rel="shortcut icon" type="image/x-icon" href="'+ Favicon.Link()+ !'">' こちらをEvents Startの最後に移動させて試してみてください。

セミナー情報:日経電子版オンラインセミナー

イメージ
2021年7月28日(水)10:00~7月31日(土)10:00 日経電子版オンラインセミナーにて「企業のDXを高速化するノーコード、ローコード開発とは」 が実施されるようです。 GeneXus Japan様も協賛されており、GeneXusのセッションもございます。 https://events.nikkei.co.jp/39425/ ※概要転記 2020年から2021年にかけて、デジタルが前提となったビジネス環境への対応は一気に推し進められました。 しかし、多くの日本企業で推進されているDXは業務処理の効率化といった「守りのDX」にとどまっており、更なる事業成長のためには、ビジネスモデルの抜本的な変革を伴う「攻めのDX」の強化が必要不可欠です。 攻めのDXを推進するには何が必要なのか。その答えが、カルチャーや企業経営の変革であり、あるいは、開発スピードを強力に推し進める「ノーコード・ローコード開発」です。 本セミナーでは、DXが求められている背景、DXが進まない理由と課題解決の方向性を整理した上で、ノーコード・ローコード開発の導入事例やツールに関する情報もお伝えしながら、企業のDXを高速化する術を探ります。 基調講演の経済産業省 田辺氏の講演は別のセミナーで聴かせて頂きまして、とても面白かったです。 それで前回の「かんたんDX推進」を記載しました。 今回はちょっと時間が短めですね。 セッション1の「GeneXusを活用したりそなグループの次世代営業店システム構築について」も興味深いです。 銀行系でGeneXusを利用しているのはみずほ銀行様や、新潟の第四北越銀行様、千葉銀行様など聞きますので りそなグループではどんな感じなのか気になります。 ご興味のある方は是非どうぞ!

かんたんDX推進

イメージ
最近、経済産業省の方の講演を聴く機会がありまして、 「政府が進めるDX政策展開」を分かりやすく教えて頂き、非常に面白かったです。 ずいぶん昔から「GeneXusは内製化に向いている、内製化すると色んなメリットがありますよ!」と エンドユーザーに説明してましたが、ここ数年はやはりDXですよね。 ただ、DXはちょっと曖昧というか、具体的な進め方を説明しづらいと思っていたのですが、 講演を聴いて刺激を受けまして、かんたんで分かりやすい説明を思いつきました。 まずは 「3点」に注力すればDXを推進 していると言え、非常に効果的であると考えました。 ①情シスを拡充する 何はともあれITを推進するには、情報システム部のパワー/スキルの向上が必要です。 保守メンテ、日々のサポートだけで一杯一杯では何もできませんので、 少しだけでも時間が作れるようにする必要があります ②情シスはコストセンターではない、システムはコスト削減だけではない まずは「情報システム部がコストセンターであり、システムはコスト削減が目的である」 という考え方を払しょくすることが必要です。 ”攻めのIT”という言い方をすることがありましたが、 DXの考えはその通りで、 ITを活用して売上/利益を伸ばしていく ことを考えるのが重要です。 その為に「システム」を「技術」を「情シス」を活用する。 という考え方を 「経営層」も「現場」も「情シス」も、認識することが大きなポイントとなります。 ③「情シスと経営層」、「情シスと現場」の対話を増やす 対話の機会を増やして、ITを活用して何が出来るのかを一緒に考えていくことが大事です。 情シスに丸投げすることや、情シスがすべて考えるわけではありません、 今ではRPA(自動化)やノーコード開発技術も有りますので 「現場主体のIT推進」 も当たり前です。 「経営層がITに疎い・情シスに任せきり」 では世の中の流れに置いていかれてしまいます。 といった感じで、 何が出来るかを”一緒”に考え、重要度・投資効果を踏まえて優先順を決めていく 考えていくポイントはこんな感じでしょうか  ・コスト削減できるアイデアがあるか  ・売上増するアイデアがあるか  ・顧客が喜ぶアイデアがあるか  ・社員が喜ぶアイデアがあるか これらをITで実現できるのではないか 如何でしょうか。分かりやすくて始めやすい

PDFファイルの加工いろいろ

イメージ
GeneXusでは帳票としてPDFファイルを作成する機能がありますが、 そのPDFファイル自体を更に加工することが出来る 「外部オブジェクト」 が GeneXus MarketPlaseにUPされています。   GeneXus MarketPlase PDF Tools https://marketplace.genexus.com/product.aspx?pdftools,en 出来ることはこのような感じ ・PDFファイルの結合 ・PDFファイルにパスワードを登録 ・PDFファイルに署名を追加  →PDFTools_2.3.7.xpz ・透かし画像の埋め込み  →PDFTools_2.3.7_AddWatermark.xpz ・PDFファイルからのテキスト抽出  →PDFTools_2.3.7_GetText.xpz ・Javaの場合に必要なjarファイル  →PDFTools_2.3.7_JavaDependencies.xpz GeneXus16U9からの変更の影響で、昔のものだとTomcat起動時にエラーが発生します。 エラー内容 javax.servlet.ServletException: java.lang.NoSuchMethodError: org.bouncycastle.util.encoders.Hex.toHexString([B)Ljava/lang/String; (*) この場合は最新をGeneXus MarketPlaseから落としてきましょう GeneXusは1プロシージャで1PDFファイルが出力される形ですので、 複数の書式の帳票(鑑・明細・補足 等)で、かつそれを書式ごとに共通化したいとなると難しいです。 ですが、こちらのPDFファイルの結合を使えば、 複数のプロシージャから作成された複数のPDFファイルを最後に1PDFファイルにして ダウンロードさせることもできます。

GeneXus16U4~17U4辺りのバージョンで注意

GeneXus16U4からここ最近のバージョンでイマイチな個所がちらほら発生しています。 各バージョンでの注意を記載しますのでどのバージョンにするか検討している方は参考にどうぞ。 GeneXus16U4 ・基本的に安定していると思われる ・U6からビルド速度が改善(恐らく2割程度)されていることを考慮 ・GridのUniqueプロパティを使用した場合にRecordCountとページ制御が狂う  →GeneXus16U10で解消   ・Gridにユーザーコントロールがある(WWP等で)場合にisValidやControlValueChangedの挙動が怪しい  →GeneXus17U0で解消 GeneXus16U6 ・ビルド速度が改善 ・機能は16U4と同等 GeneXus16U8 ・ビルド速度が改善 ・機能は16U4と同等 GeneXus16U10、U11 ・テキスト入力エリアにマウスでフォーカスをあてた際に全選択状態にならない  特に問題となるのが日付項目で、/無しの空白にしている場合に空白の途中が選択されるのでとても入力しづらい  ただし、ブラウザの種類やバージョンによって変わる可能性あり  →GeneXus17U2で解消 ・プロンプト起動時に親画面側のデザインが崩れ、画面がガクガクする  崩れるのはラジオボタンとカレンダーアイコンが目立つ  →GeneXus17U4である程度解消予定 GeneXus17U2 ・上記に記載した障害は改善されているが、  16U10から発生したプロンプト起動時のデザイン崩れがまだ解消されていない    カレンダーアイコンのサイズを少し小さめに設定すれば  多少は改善されるが、やはり気になる GeneXus17U4 ・2021年8月リリース予定 ・事前リリース版で検証した所、デザイン崩れがある程度改善されていた  Gridからのプロンプト起動時にまだ若干崩れが発生している  Gridの縦幅が少し上下する感じでWWP限定かもしれない  ※正式リリース時に治る可能性は有り この内容を踏まえて私の見解では ・16U4だとビルド速度改善の恩恵がないのでアップグレードした方がよい ・16U6~8で困ることが無ければ特に問題無し ・16U10、11はお勧めしない ・17U2は一応OKだが、できれば17U4が望ましい という感じでしょうか 他にも

FTP関数で注意

GeneXusにはFTP関数があります。 FTP 関数 http://wiki.genexus.jp/hwiki.aspx?FTP+関数 先日、FTPの機能を実現するためにこちらを使ってみたのですが、 英字のディレクトリ/ファイルであれば問題なく動作したのですが、 日本語が絡むとエラーになったりファイル名が文字化けしたりといった現象がでました。 GeneXus16U4 GeneXusJapan様に報告はさせて頂いたのですが、すぐには治らなそうでしたので、 自分でプロシージャの中にJavaで記述して、FTP部品を作成して対処をしました。 ※TomcatのFTP APIがそのまま使えたので割と簡単でした GeneXus17からSFTPやFTPSが追加されましたが、この分だと同じ状態かもしれません。 使用する際には事前に検証を行った方が良いです。 FTPはそれほど使う機会がある訳ではないのですが、早く修正されることを願います。

GeneXus17 Angularジェネレータを確認

イメージ
GeneXus17にAngularジェネレータが追加されたので試してみました。 Angularジェネレータはまだベータ版なのですね。 17のアップグレードのどこかか、18で正式版という感じなのでしょうか。 Angular アプリケーションの開発 http://wiki.genexus.jp/hwiki.aspx?Angular+アプリケーションの開発 こちらの概要を見るとAngularはフロントサイド(画面系)に使用されて、 サーバー側は今までと同じようにJavaや.NETで生成・動作させる形になるようです。 スマートデバイスと同じ構成イメージだと思います。 「My first Angular application」に従って確認していきます 開発環境セットアップ システム要件 https://wiki.genexus.com/commwiki/wiki?42541,Angular+Generator+prerequisites+for+development+environment 1) Node.jsをインストール https://nodejs.org/en/ インストーラーをダウンロードしてインストール 先週はv15.14.0だったのですが、もう16がでてますね、早いな。 2) バージョン確認 インストールしたらコマンドプロンプトからバージョンを確認します node --version 3) npm package managerのインストール こちらはNode.jsと一緒にインストールされてますので、バージョン確認だけ npm --version 4) Angular CLIのインストール こちらはコマンドプロンプトからインストール npm install -g @angular/cli 「Node.js」が実行環境で 「npm」はNode.jsのモジュールを管理するツール 「Angular CLI」はNode.jsのコマンドラインツールということでした 5) 動作テスト 試しに(GeneXusとは関係なく)Angularのプロジェクトを作成してみます コマンドラインからプロジェクトを作成(AngularAppTestがプロジェクト名) ng new AngularAppTest ここにプロジェクトディレクトリが作成されました C:\Users\syusa\

WorkwithPlus14リリースとGeneXus Japan Morning Webinar

イメージ
年末2020/12/15にWWP14がリリースされていました。 WorkWithPlus for Web 14 https://docs.workwithplus.com/servlet/com.wiki.wiki?3489,Toc%3AWorkWithPlus+for+Web+14, そしてGeneXus Japan社のMorning Webinarの第2回と第3回で WWP14の機能説明とディスカッションが実施されるそうです。 GeneXus Japan社 Morning Webinar 第2回 開催のお知らせ https://www.genexus.jp/archives/1940 WWP14の新機能を見ると期待感が半端ないですね。 パッと見た感じで個人的に気になるのが Freeze a column of a grid Gridでカラムの固定が出来るようです。 Excelで言う所の枠の固定ですね。これはあったら絶対使いますね。 Resize grid columns Gridのカラムの横幅調整が出来る模様。 レスポンシブデザインだと値によって横幅が変わるのが気になったり、 うまく横幅調整が難しいところがありますが、横幅調整が出来るのであれば、 ユーザーが使いたいときに伸ばしてくれればよいので 開発者が悩んだり細かく調整する必要が無くなりそうです。 Fix the titles of the grid Gridのタイトルの固定化かな。 これは今までもあったような気がしますが、調整が簡単になったのかな。 Display the vertical borders separating each column Gridの縦線をつけるデザインですね。 レスポンシブデザインで縦線なしのGridにそろそろ慣れてきた所だったのですが。。。 Improvements in Design System Wizard デザインシステムウィザードの改善ということで、 今までは開発途中でシステムウィザードを再度実行すると、 共通機能やテーマなどのデザインが初期状態に戻ってしまいましたが、 今度は必要なものだけを更新してくれる模様です。 バージョンアップの際に困っていたんですが、これが出来ると バージョンアップの作業工数がグッと減らせられるかも。期待大です。 Popover for A