구성 테이블
구성 테이블은 속성 값과 같이 자주 변경되지 않는 값을 저장하기 위해
사물,
사물 템플릿,
사물 형태,
데이터 테이블,
스트림,
가치 스트림,
타이머,
스케줄러,
산업 사물 형태,
산업 게이트웨이,
매쉬업 템플릿,
프로젝트,
사물 그룹,
알림,
블로그,
Wiki,
가젯,
마스터 및
매쉬업에 사용됩니다. 구성 테이블의 가장 일반적인 용도는 외부 리소스의 자격 증명 및 호스트 정보를 저장하는 것입니다. 구성 테이블은 자주 업데이트되는 동적 데이터를 저장할 용도로는 사용하지 않아야 합니다. 이 정보는 속성과 유사한 방식으로 정의됩니다. 구성을 사용하려면 이름과 설명으로 구성 테이블을 정의하고 구성 테이블에 여러 행을 저장할 수 있는지 여부를 나타냅니다. 속성과 마찬가지로 일부 구성 값에는 여러 가지 측면과 연관됩니다.
|
파일에 저장된 값으로 가져올 때 구성 테이블 데이터를 덮어씁니다.
|
|
공유 구성 테이블은 Java 주석만 사용하여 만들 수 있으며 Java 주석을 사용하여 공유 구성 테이블을 만드는 동안 액세스 한정자 확인이 실행되지 않습니다. 따라서 사용자는 비공개 사물 템플릿에 제한된 공유 구성 테이블을 만들 수 있습니다.
|
다음 중 하나를 사용하여 구성 테이블을 정의할 수 있습니다.
Composer에서 구성 테이블 정의
지원되는 엔티티에서 다음을 수행하여 구성 테이블을 정의할 수 있습니다.
1. > 를 선택합니다.
구성 테이블 추가 화면이 나타납니다.
2. 구성 테이블의 이름을 입력합니다.
이름은 대/소문자를 구분합니다.
3. 설명 필드에서 구성 테이블의 목적 또는 기능을 설명합니다.
4. 구성 테이블의 데이터 셰이프를 선택합니다.
선택한 데이터 셰이프에는 기본 키 필드가 있어야 합니다.
5. 범위 필드에서 엔티티의 범위를 선택합니다.
6. 사용하지 않음 확인란을 선택하여 엔티티를 사용하지 않습니다. 엔티티를 사용하지 않아야 하는 버전을 major.minor.patch 형식으로 입력합니다. 필요에 따라 설명을 추가합니다.
7. 구성 테이블에 두 개 이상의 데이터 행을 표시하려면 여러 행 허용 확인란을 선택합니다.
8. 엔티티에 여러 구성 테이블이 있는 경우 서수 필드에 숫자를 입력하여 해당 위치를 제어할 수 있습니다.
구성 테이블을 추가한 후에는 위치를 변경할 수 없습니다.
9. 완료를 클릭합니다.
구성 테이블이 구성 페이지에 나타납니다.
10. 구성 테이블을 삭제하려면 삭제 버튼을 클릭합니다.
Java 클래스에 주석을 추가하여 구성 테이블 정의
Java 클래스에 주석을 추가하여 구성 테이블을 만들 수 있습니다. 자세한 내용은
com.thingworx.metadata.annotations.ThingworxConfigurationTableDefinition에 대한 ThingWorx Platform
API 문서를 참조하십시오.
예를 들어, 다음 코드 조각은 클래스 정의 위에 있는 구성 테이블 정의를 보여줍니다.
@ThingworxConfigurationTableDefinitions(tables = {
@ThingworxConfigurationTableDefinition(
name="ConfigTableExample1",
description="Example 1 config table", isMultiRow=false,
dataShape = @ThingworxDataShapeDefinition( fields = {
@ThingworxFieldDefinition(name="field1",
description="",baseType="STRING"),
@ThingworxFieldDefinition(name="field2",
description="",baseType="NUMBER"),
@ThingworxFieldDefinition(name="field3",
description="",baseType="BOOLEAN"),
@ThingworxFieldDefinition(name="field4",
description="",baseType="USERNAME"),
} ) ),
@ThingworxConfigurationTableDefinition(
name="ConfigTableExample2",
description="Example 2 config table", isMultiRow=true,
dataShape = @ThingworxDataShapeDefinition( fields = {
@ThingworxFieldDefinition(name="columnA",
description="",baseType="STRING"),
@ThingworxFieldDefinition(name="columnB",
description="",baseType="NUMBER"),
@ThingworxFieldDefinition(name="columnC",
description="",baseType="BOOLEAN"),
@ThingworxFieldDefinition(name="columnD",
description="",baseType="USERNAME"),
} ) )
})
public class GoodByeThing extends Thing {
}
XML 가져오기/내보내기를 통해 구성 테이블 정의
XML 가져오기를 통해 사물, 사물 템플릿, 사물 형태 및 매쉬업에 대한 구성 테이블을 정의할 수도 있습니다. 다음 예는 XML로 내보낸 엔티티에 대한 구성 테이블 정의입니다.
<ConfigurationTableDefinitions>
<ConfigurationTableDefinition category="TemplateConfigTables"
dataShapeName="MyDS" description="Template Config Table" isHidden="false"
isMultiRow="true" name="ConfigTableOnTemplate" ordinal="2" source="REST"/>
</ConfigurationTableDefinitions>
|
주석으로 작성된 구성 테이블 정의는 내보낸 XML에 나타나지 않습니다.
|
다음은 XML로 내보낸 구성 테이블 데이터의 예입니다.
<ConfigurationTables>
<ConfigurationTable description="Template Config Table"
isMultiRow="true" name="ConfigTableOnTemplate" ordinal="2">
<DataShape>
<FieldDefinitions>
<FieldDefinition aspect.isPrimaryKey="true" aspect.tagType="ModelTags" baseType="STRING" description="" name="p1" ordinal="1"/>
<FieldDefinition aspect.isPrimaryKey="true" aspect.tagType="ModelTags" baseType="STRING" description="" name="p2" ordinal="2"/>
<FieldDefinition aspect.isPrimaryKey="true" aspect.tagType="ModelTags" baseType="STRING" description="" name="p3" ordinal="3"/>
</FieldDefinitions>
</DataShape>
<Rows>
<Row>
<p1>
<![CDATA[1]]>
</p1>
<p2>
<![CDATA[2]]>
</p2>
<p3>
<![CDATA[3]]>
</p3>
</Row>
</Rows>
</ConfigurationTable>
</ConfigurationTables>
REST API를 사용하여 사물 및 매쉬업에 대한 구성 테이블 정의
REST API 서비스를 사용하여 사물과 매쉬업에 구성 테이블을 추가할 수 있습니다. 모든 구성 테이블에는 데이터 셰이프가 연관됩니다. 여러 행 구성 테이블의 데이터 셰이프에는 기본 키가 있어야 합니다. 구성 테이블이 저장되면 해당 데이터 셰이프는 변경할 수 없지만 데이터 셰이프 필드에 변경 사항을 적용할 수 있습니다. 데이터 셰이프에서 필드를 추가 또는 삭제하거나 필드의 기본 유형을 변경할 수 있습니다. 기본 유형을 변경하면 구성 테이블의 데이터에 영향을 줄 수 있습니다. 예를 들어, string 기본 유형을 integer로 변경하면 구성 테이블 데이터가 손실될 수 있습니다.
다음 이미지는 ThingWorx Composer에서 사물에 서비스를 사용하는 구성 테이블 정의를 보여줍니다.
위의 작성된 구성 테이블은 다음과 같이 ThingWorx Composer에서 사물의
구성 페이지에 나타납니다.
구성 테이블에 데이터를 추가하려면 편집 모드에서 엔티티를 열고 구성 테이블 이름 옆에 있는
추가를 선택합니다.
REST API를 사용하여 사물 템플릿 및 사물 형태에 대한 구성 테이블 정의
사물 템플릿 및 사물 형태에 구성 테이블을 추가하려면 사물 템플릿에서 AddConfigurationTableDefinition REST API를 호출하는 사물에 서비스를 작성하면 됩니다. 다음은 사물 템플릿(MyThingTemplate)에 구성 테이블을 추가하는 사용자 정의 서비스(AddConfigTableToTemplate)의 예입니다. 마찬가지로 사물 형태에 구성 테이블을 추가하는 서비스를 작성할 수 있습니다.
ThingWorx Composer에서 또는 다음과 같이 서비스를 사용하여 구성 테이블에 데이터를 추가할 수 있습니다.
구성 테이블 및 구성 데이터 상속
사물 템플릿 및 사물 형태 엔티티에 작성된 구성 테이블 및 해당 데이터는 사물 엔티티를 구현하여 상속됩니다. 사물 템플릿 또는 사물 형태 수준에서 구성 테이블에 대한 모든 정의 변경 사항은 해당 사물 템플릿 또는 사물 형태로부터 테이블을 상속한 사물로 전파됩니다.
새 사물 엔티티는 해당 데이터 셰이프나 사물 템플릿의 구성 데이터를 상속합니다. 그러나 사물이 작성된 후에는 해당 사물 템플릿이나 데이터 셰이프에서 상속된 테이블에 데이터 변경 사항을 더 이상 적용할 수 없습니다.
예:
• ThingTemplateA에 configTable1이 있음
• ThingShapeA에 configTable2가 있음
ThingTemplateA를 기반으로 하며 ThingShapeA를 구현하는 ThingA가 작성됩니다.
ThingA는 각각 해당 사물 템플릿 및 데이터 셰이프로부터 configTable1 및 configTable2를 데이터와 함께 상속합니다.
ThingTemplateA가 configTable1을 singleRow에서 multiRow로 변경하면 ThingA에 해당 변경 사항이 반영됩니다.
그러나 ThingTemplateA가 configTable1의 데이터를 변경할 경우 ThingA가 데이터의 변경 사항을 상속하지 않습니다. ThingA는 configTable1에 있는 데이터를 유지합니다. ThingA도 configTable1과 configTable2의 데이터를 변경할 수 있지만, 이 데이터 변경 사항은 이 구성 테이블을 상속한 사물 템플릿 또는 데이터 셰이프나 다른 사물에 반영되지 않습니다.