Skip to main content

 

 

 

 
Language:

 

 

 

 
 
OutSystems

開発インフラのデータベース

新しいeSpaceを作成してエンティティと静的エンティティを含む新しいバージョンをパブリッシュすると、この情報はシステムのエンティティ内で管理され保持されます。

エンティティリレーションモデル

以下の図は、エンティティ、エンティティレコード、エンティティアトリビュート、DBカタログ、eSpaceの関係を示しています。

エンティティ、エンティティレコード、エンティティアトリビュート、DBカタログ、eSpaceの関係

  • Service Studio:

    • 新しいエンティティや変更されたエンティティを含むeSpaceまたは複製されたeSpaceのパブリッシュ
  • Integration Studio

    • 新しいエンティティや変更されたエンティティを含むエクステンションのパブリッシュ
  • Service Center

    • アプリケーション、ソリューション、eSpace、エクステンションのアップロードやパブリッシュ
  • LifeTime

    • 他の環境へのアプリケーションのプッシュ
  • 公開済みのエンティティやメソッドへの参照

  • API

考慮事項

以下の点を考慮してください。

  • アプリケーションののエンティティカタログの環境による違いを確認します。eSpace

  • SS_Keys

    • eSpaceでは常に一意のSS_Keyが生成されてメタモデルに保存され、すべての環境で同一になります。

    • SS_Keyは、EntityやEntity_Attrに対して一意ではありません(例: 複製されたeSpace)。

    • Entity_Recordのキーは、SS_KeyEntity_SS_Keyで構成されます。

  • Is Activeフラグを確認し、非アクティブな(ソフトデリートされた)eSpace、エンティティ、エンティティアトリビュート、エンティティレコードを含めるか、除外します。

  • エンティティアトリビュートにはTypeというアトリビュートがあり、これには以下が含まれます。

    • 実行時型: rtTimertTextrtPhoneNumberrtLongIntegerrtIntegerrtEntityReferencertEmailrtDecimalrtDateTimertDatertCurrencyrtBooleanrtBinaryData

    • 参照IDの型の形式: ‘bt’+<Espace_SS_Key>+’*’+<Entity_SS_Key>

  • ユーザーアプリケーションで参照したり使用したりできる公開済みシステムエンティティに注意します。

  • Service Studioでエンティティ、静的エンティティ、静的エンティティレコード、エンティティアトリビュートを削除してeSpaceをパブリッシュすると、物理テーブルから値が削除されますが、対応するシステムテーブルの情報についてはIs_ActiveフラグがFalseに設定されるのみです。

  • エンティティを含むeSpaceを複製すると、eSpace内にあるすべての情報が複製されたeSpaceにレプリケートされます。新しく生成されるエンティティのSS_KEYPrimary_SS_Keyは元のeSpaceと同じになり、ストラクチャも同じになります。元のエンティティと複製されたエンティティで異なるのは物理テーブル名と関連するeSpaceのSS_Keyです。つまり、エンティティのSS_Keyは一意ではありません。一意にするには、エンティティに関連するeSpaceのSS_Keyと組み合わせる必要があります。

OutSystemsプラットフォームによるアプリケーションエンティティの管理の仕組み - 例

このセクションでは、新しいエンティティと新しい静的エンティティを含むeSpaceをパブリッシュする方法の例を示します。

新しいエンティティを含むeSpaceをパブリッシュする

新しいエンティティを含むeSpaceパブリッシュするには、「People」という名前の新しいeSpaceを作成し、3つの新しいエンティティを作成します。

  1. City(Nameアトリビュート)。
  2. Icon、アトリビュートは、 2.1. Name(Text型)、 2.1. BinaryInfo(BinaryData型)。
  3. Person
    • Name(Text型)。
    • DateofBirth(Date型)。
    • IsAlive(Boolean型)。
    • CityId(City Identifier型)。
    • IconId(Icon Identifier型)。
    • Suggestion: このエンティティを右クリックし、[More options]をクリックして以下を適切に選択します。
      • Labelアトリビュート
      • Order Byアトリビュート
      • Is Activeアトリビュート

eSpaceをパブリッシュした後、データベースでeSpaceと新しく作成されたエンティティの詳細を検索できます。

SELECT * FROM OSSYS_ESPACE WHERE Name = ’People’

id 240
Name People
SS_Key 02632668-1434-43c2-82b1-e59ea75a0388
Is_Active True
Version_Id 4085
DbCatalog_Id 1
Pending_Version_Id
EspaceKind WebResponsive
SELECT 
    ID,
    NAME,
    PHYSICAL_TABLE_NAME,
    ESPACE_ID,
    SS_KEY,
    PRIMARYKEY_SS_KEY,
    IS_ACTIVE_ATTRIBUTE,
    LABEL_ATTRIBUTE,
    ORDER_BY_ATTRIBUTE 
FROM OSSYS_ENTITY 
WHERE Espace_Id = (SELECT ID FROM OSSYS_ESPACE WHERE Name = ’People’)
Id Name Physical_Table_Name Espace_Id SS_Key Primary_SS_Key Is_Active_Attribute Label_Attribute Order_By_Atttribute
1493 City OSUSR_7i3_City 240 0f3b6288-e5b3-4804-97e2-9b1ea18fc12e ab9b9108-55a5-42a6-bdf0-85238d963c58
1494 Icon OSUSR_7i3_Icon 240 a280d501-0a34-4fe0-9626-0f825f10c999 7ebc6cae-dc3c-44b0-a8e9-f3f54a111edd
1495 Person OSUSR_7i3_Person 240 ceaae4ec-0c65-4e1c-964a-52edd72bb7c1 953a931a-57e6-48b8-90f1-db7b0b2db387 e7e604c0-2b2d-454a-b84d-9309fa8316df b2db87d9-093f-41b5-b881-972f5229809c 953a931a-57e6-48b8-90f1-db7b0b2db387

エンティティアトリビュートの詳細はOSプラットフォームのエンティティに保存され、検索することができます。

SELECT
    OSSYS_ENTITY.NAME ENTITY_NAME,
    OSSYS_ENTITY_ATTR.*
FROM OSSYS_ENTITY 
INNER JOIN OSSYS_ENTITY_ATTR 
    ON OSSYS_ENTITY.ID =  OSSYS_ENTITY_ATTR.ENTITY_ID
WHERE Espace_Id = (SELECT ID FROM OSSYS_ESPACE WHERE Name = ’People’)
Entity_Name Id Entity_Id Name Type Length Decimals Is_Mandatory Is_AutoNumber Delete_Rule
City 11012 1493 Id rtLongInteger 0 0 TRUE TRUE Protect
City 11013 1493 Name rtText 50 0 FALSE FALSE Protect
Icon 11014 1494 Id rtLongInteger 0 0 TRUE TRUE Protect
Icon 11015 1494 Name rtText 50 0 FALSE FALSE Protect
Icon 11016 1494 BinaryInfo rtBinaryData 0 0 FALSE FALSE Protect
Person 11017 1495 Id rtLongInteger 0 0 TRUE TRUE Protect
Person 11018 1495 Name rtText 70 0 TRUE FALSE Protect
Person 11019 1495 DateofBirth rtDate 0 0 FALSE FALSE Protect
Person 11020 1495 IsAlive rtBoolean 0 0 TRUE FALSE Protect
Person 11021 1495 CityId bt2848df88-835f-427a-b0db-e29a1d8e9766*0f3b6288-e5b3-4804-97e2-9b1ea18fc12e 0 0 FALSE FALSE Protect
Person 11022 1495 IconId bt2848df88-835f-427a-b0db-e29a1d8e9766*a280d501-0a34-4fe0-9626-0f825f10c999 0 0 FALSE FALSE Ignore

SS_Keyアトリビュートはデータベース内に存在しますが、ここには示されていません。 プレフィックスがrt(実行時)の通常の基本型以外に、例にあるbt2848df88-835f-427a-b0db-e29a1d8e9766*0f3b6288-e5b3-4804-97e2-9b1ea18fc12eのようなリレーション型も見られます。

btというプレフィックスで始まる型は、eSpaceのSS_Keyの後に*とエンティティのSS_Keyが続く形式で構成されます。CityIdIconIdは他の型の識別子です(CityおよびIcon)。

以下のSQLコマンドは、SS_Keyを使用してエンティティを取得する方法を示しています。

SELECT OSSYS_ESPACE.NAME [ESPACE]
    ,OSSYS_ENTITY.NAME [ENTITY]
FROM OSSYS_ENTITY 
INNER JOIN OSSYS_ESPACE 
    ON OSSYS_ENTITY.ESPACE_Id = OSSYS_ESPACE.ID 
            AND OSSYS_ESPACE.SS_KEY = '2848df88-835f-427a-b0db-e29a1d8e9766'
WHERE OSSYS_ENTITY.SS_KEY = '0f3b6288-e5b3-4804-97e2-9b1ea18fc12e'
UNION ALL
SELECT 
    OSSYS_ENTITY.NAME
    ,OSSYS_ESPACE.NAME
FROM OSSYS_ENTITY 
INNER JOIN OSSYS_ESPACE 
    ON OSSYS_ENTITY.ESPACE_Id = OSSYS_ESPACE.ID 
            AND OSSYS_ESPACE.SS_KEY='2848df88-835f-427a-b0db-e29a1d8e9766'
WHERE OSSYS_ENTITY.SS_KEY = 'a280d501-0a34-4fe0-9626-0f825f10c999'
eSpace Entity
People City
People Icon

エンティティのSS_KeyはeSpaceのSS_Keyと組み合わせた場合にのみ一意になりため、エンティティなど他のOSオブジェクトを検索するときはeSpaceのSS_Keyを使用します。 たとえば、eSpaceを複製した場合、複製されたeSpace内で生成されるエンティティはすべて元のeSpace内の他のエンティティと同じSS_Keyになります。

以下のテーブルは、先ほど作成したPeople eSpaceに属するエンティティを示しています。Physical_Table_Nameに注目した場合、SELECT * FROM OSUSR_7i3_Cityを実行することで、Cityエンティティの内容を表示できることがわかります。

Id Name Physical_Table_Name Espace_Id SS_Key Primary_SS_Key Is_Active_Attribute Label_Attribute Order_By_Atttribute
1493 City OSUSR_7i3_City 240 0f3b6288-e5b3-4804-97e2-9b1ea18fc12e ab9b9108-55a5-42a6-bdf0-85238d963c58
1494 Icon OSUSR_7i3_Icon 240 a280d501-0a34-4fe0-9626-0f825f10c999 7ebc6cae-dc3c-44b0-a8e9-f3f54a111edd
1495 Person OSUSR_7i3_Person 240 ceaae4ec-0c65-4e1c-964a-52edd72bb7c1 953a931a-57e6-48b8-90f1-db7b0b2db387 e7e604c0-2b2d-454a-b84d-9309fa8316df b2db87d9-093f-41b5-b881-972f5229809c 953a931a-57e6-48b8-90f1-db7b0b2db387
SELECT * FROM OSUSR_7i3_City
ID Name
1 Kinshasa
2 Reykjavik
3 Beja

この場合、OSUSR_7i3_Cityは、Cityエンティティに属する情報を保持するテーブルの物理データベース名です。