ORDA と 4D Write Pro : パワーカップル!

4D Write Pro ドキュメントには、データベースに依存したデータや計算を返すフォーミュラが度々含まれます。コンテキストを使用することで、これらのデータのドキュメントへの関連付けが簡単にできるようになりました。

このブログ記事では、4D Write Pro ドキュメントと ORDA で取得したデータの組み合わせにより、コードが明確に、コードメンテナンスが容易になることを紹介します。

HDI: 4D Write Pro: データコンテキストの利用

4D Write Proとデータ

手紙、キャンペーンメール、カタログ作成、請求書印刷など、表示・印刷されるデータは常にデータベースから取得されます。ORDA のおかげで、データへのアクセスはますます効率的になり、コンテキスト という新しい概念によって、ドキュメント内で情報を効率的に活用することができます。

コンテキストとは?

コンテキストは、エンティティ・エンティティセレクション・または必要に応じた属性を持つオブジェクトです。一度作成され、ドキュメントと関連付けられたコンテキストは、This 関数を介してドキュメント内で直接使用できます。この関数については、もうお馴染みですね。

サンプルケース: DMキャンペーンの送信

たとえば、Peopleデータクラスがあって、その一部の人にダイレクトメールを送りたい場合を考えます。まず、手紙のテンプレートを作成します。次に、そのテンプレートに各人のデータ (名前、住所など) を挿入します。これはよくある手順ですが、コンテキストが作成されたあと、これらの情報をどのように挿入するかを見ていきましょう。

For Each ループ

テンプレートを出力する前に、セレクションの各エンティティをテンプレートに関連付けます。
それで完了です!

For each ($person; $es_people)
 WP SET DATA CONTEXT($template; $person)
 WP PRINT($template)
End for each 

このモデルに含まれているもの

$person のコンテキストは、モデル内で This.data 式でアクセスできます。
$person のエンティティに lastname 属性がある場合、この属性は This.data.lastname を介してアクセス可能になります。

したがって、テンプレートには、次のような式が含まれることになります:

PeopleSelectionクラスの関数

コードの美しさのため、テンプレートを引数として受け取り、エンティティセレクション内の各エンティティのデータを差し込んで印刷するクラス関数を作成することができます:

Class extends EntitySelection

Function mailing($template : Object)
For each ($people; This)
  WP SET DATA CONTEXT($template; $people)
  WP PRINT($template)
End for each 

この関数の呼び出しは、次のようにおこなわれます:

// エンティティセレクションを作成します
$es
:=ds.People.all()
// 4D Write Pro テンプレートを印刷します
$es
.mailing($template

まとめ

より詳細な情報は、ドキュメントで確認できます。また、4Dフォーラムでフィードバックをぜひお寄せください。

Roland Lannuzel
- プロダクトオーナー&4Dエキスパート -電子工学を学んだ後、産業用ITの分野で開発者兼コンサルタントとして、さまざまなデータベースやテクノロジーを使って顧客のためのソリューションを構築。80年代後半に4Dに惚れ込み、会計、請求書作成、メールシステムなどのビジネスアプリケーションの作成に4Dを使用してきました。現在も、新機能やデータベース開発ツールの定義など、4Dの未来を積極的に切り開いています。