エンティティセレクションと論理演算

Deeplからの自動翻訳

ORDAシリーズが続きます!今回のブログでは、エンティティセレクションにおける論理演算子の使い方を紹介します。

これらの演算子は、従来の4Dセットと同様に、2つのエンティティセレクション間の交差、結合、差異を取得することができます。

エンティティ選択における論理演算子の例

Classic 4Dでは、複数のクエリ結果に対して論理演算を行うためにセットを使用します。各クエリの後にセットを作成し、セットに対して論理演算を行い、最後に結果セットで関係するテーブルの現在の選択範囲を更新する必要があります。ちょっと重いですね。ありがたいことに、ORDAでは かなり軽くなってきています!各クエリは、論理演算子を直接適用することができるエンティティセレクションを 提供します!

 

ORDAは、2つのエンティティセレクションに対して論理演算を実行するための以下のメソッドを提供します。

and(): 2つのエンティティセレクション(両方に属するエンティティ)の交差点を取得します。

or(): 2つのエンティティセレクション間の和集合を取得する (一方に属するエンティティ、または他方に属するエンティティ)

minus(): 2 つのエンティティセレクション間の差を取得します (一方に属し、他方に属さないエンティティ)

これらのメソッドは、エンティティセレクションと個々のエンティティに適用することもできます。

例は百聞は一見にしかず!ここでは、従業員とその食べ物の好みについて見てみましょう。

CLASSIC 4D:

//A named selection "meat" is created before
// ...
QUERY BY ATTRIBUTECLEAR SET([Employee];[Employee]food; "fish";=;True)
CREATE SET ([Employee]; "fish")
USE NAMED SELECTION ("meat")
CREATE SET ([Employee]; "meat")
UNION ("fish"; "meat"; "result")
USE SET ("result")

("meat")CLEAR SET("fish")
CLEAR SET ("result")

ORDAです。

ここでは、パラメータとしてエンティティセレクションを受け取るメソッドを持っています。$eatingMeat のエンティティセレクションと$eatingFish のエンティティセレクションの和を返す。

C_OBJECT$result($eatingFish;$1;$eatingMeat;$result)

$eatingMeat :=$1
//Get employees eating fish
$eatingFish :=ds.Employee.query("food.fish=:1";True)
//Get the union of the 2 entity selections $eatingMeat and $eatingFish
:=$eatingMeat.or($eatingFish)
$0 :=$result

 

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