追加コストなしで Webエリアに Qodlyページを埋め込む

4D 21 により、新たな可能性が開かれました: 追加の 4Dクライアントライセンスを消費せずに、4Dフォームの Webエリアに Qodlyページをシームレスに埋め込むことができます。4D Qodly Pro を活用することで、新世代のモダンでダイナミックなユーザーインターフェースにフルアクセスできるようになりました。デスクトップフォームか Webフォームかの選択に悩む必要はもうありません。両方を組み合わせ、ご自身のペースで進化させていきましょう。

HDI: Web とのセッション共有

4D Qodly Pro は、4D 内で標準機能として提供されており、4Dアプリケーション向けに Webフォームを設計・構築・実行するために必要なツールをすべて備えています。

Qodlyページの作成はスケーラブルWebセッションに依存しています。これは、Sessionコマンドを使用し、Sessionオブジェクトを取得するために必要です。この Sessionオブジェクトは、4D Qodly Pro の要石であり、ユーザー固有のデータを格納するための Session.storage を提供し、ユーザー権限の管理において中心的な役割を果たします。

クライアントサーバー型の 4Dアプリケーションでは、4D Server は各ユーザーのリモートユーザーセッションも管理します。このセッションも Session.storage を提供するため、非常に便利です!

4D 21 以降は、これらのリモートユーザーセッションでも Qodlyページを提供できるようになりました。 デベロッパーにとっての直接的なメリットは、追加の 4Dクライアントライセンスを必要とせずに、4Dフォームの Webエリア内に Qodlyページを埋め込めるようになったことです。リモートユーザーセッションのおかげで、ユーザーが 4Dフォームを表示するために既に使用しているライセンスが、埋め込まれた Qodlyページのレンダリングにも再利用されます。

具体的な例

4Dフォーム上の Webエリアは Qodlyページをレンダリングできるため、4D Server アプリケーションに Webコンテンツを簡単に導入することができます。これにより、4D Qodly Pro のメリット、特にそのモダンで Web指向のデザインを最大限に活用できます。

4Dフォームや Qodlyページにアクセスするには、4Dクライアントライセンスが必要です。どちらの環境にも同じライセンスルールが適用されます

しかし、OTPメカニズムのおかげで、同一のライセンスを 4Dフォームと、Webエリア内に埋め込まれた Qodlyページの両方に使用することができます。

その結果、従来の 4D UIコンポーネントとモダンな 4D Qodly Pro ウィジェットをシームレスに組み合わせた4Dフォームが実現します。

セッションID が、4Dフォーム (リモートユーザーセッションを使用) と、Qodlyページを表示している Webエリアの両方で同じであることが確認できます。

実装方法

otpメカニズム

OTP は One-Time-Passcode (ワンタイムパスコード) の略です。これは、デバイスやブラウザーを切り替える際や、外部システムとのやり取りをともなうワークフローを実装する際 (メールによるアカウント作成、サードパーティAPI など) に、既存のセッションを回復するために使用します。

ステップは簡単で、

  • Session.createOTP() 関数を呼び出して、指定されたセッションの OTP を取得します。
  • 任意のブラウザーで、”https://my4Dapp/$lib/renderer/?w=myQodlyPage&$4DSID=”+OTP のような URL で使用します。

 

提供されたOTPを使用して、元のセッションが取得されます。

4D 21 では、Session.createOTP() はWebセッションに限定されなくなりリモートユーザーセッションでも動作するようになりました!

既存のリモートユーザーセッションを取得して使用するメカニズムは同じです。Webリクエストの $4DSIDパラメーターに OTP の値を指定すれば、対応するリモートユーザーセッションが使用されます。

実装

getOTP プロジェクトメソッド、シングルトン関数、または ORDA関数のいずれかを作成します。このコードがサーバー上で実行されることを必ず確認してください。クライアント上で Sessionコマンドを実行すると null が返されます。

// クライアントサーバー環境にて:
// ----------------
// Sessionオブジェクトはサーバー上にあるため、このメソッドはサーバー上で実行します。
// クライアント上では Session オブジェクトは Null になります。
//

#DECLARE() : Text

return Session.createOTP()

Webエリア内に Qodlyページ (ここでは ‘Products’) を読み込みます。


Form.otp:=getOTP

Form.url:="http://localhost/$lib/renderer/?w=Products&$4DSID="+Form.otp

WA OPEN URL(*; "QodlyPage"; Form.url)

権限の取り扱い

Qodlyページに必要な権限は、Webエリアで URL を開く前に、setPrivileges() 関数を使用してあらかじめセッションに設定しておくことができます。

リモートユーザーセッションに対して呼び出されると、その後の Webアクセスに備えてセッションに権限が追加されます。

4D開発環境でのクライアントサーバーアプリの開発とテスト

OTPメカニズムは 4D の開発環境でもサポートされているため、クライアントサーバーアプリケーションの開発とテストは 4D開発環境で容易に行うことができます。

この開発環境には、リモートユーザーセッションと同様に、Webアクセスを処理するための OTP を生成可能な、真のスタンドアロンセッションが存在するようになりました。

 

クライアントサーバー環境と 4D開発環境の両方で、添付の HDI を実行してみてください。 違いはなく挙動は同じです

以上のように、勝利の方程式は 4D Qodly Pro = 4D です。これにより、4D Server アプリケーションにモダンでダイナミックなインターフェースを極めて簡単に導入できるようになります。

道は大きく開かれており、追加のものは何も必要ありません4D Qodly Pro を使い始めるのは、かつてないほど簡単になりました。

Avatar
- プロダクトオーナー - Marie-Sophie Landrieu-Yvertは、2017年にプロダクトオーナーとして4Dプロダクトチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。彼女は1995年にESIGELEC Engineering Schoolを卒業し、IBMでエンジニアとしてのキャリアをスタートさせました。様々なプロジェクト(保守や新規のプロジェクト)に参加し、Cobolのデベロッパーとして働きました。その後、UMLデザイナーおよびJavaデベロッパーとして勤務。最近は、機能要件の分析・記述、ビジネスチームと開発チームの調整などを主に担当しています。