SDK 생성 타입과 지원 범위
OSDK의 객체 속성, 액션 매개변수와 함수 입출력은 서로 다른 생성 계약을 사용합니다. 한 종류에서 지원하는 타입을 다른 종류에도 그대로 적용할 수는 없습니다. 함수 레지스트리의 지원 타입과 특정 앱의 생성 SDK가 호출할 수 있는 타입도 구분해야 합니다.
지원하지 않는 타입의 영향
| 대상 | 생성 시 영향 | 처리 |
|---|---|---|
| 객체 속성 | 해당 속성을 건너뛰고 오류 기록 | 생성된 클래스에 속성이 있는지 확인하고 지원하는 생성기 및 런타임으로 갱신 |
| 액션 입력 | 해당 액션 때문에 패키지 생성 실패 | 사용할 생성기에서 지원하는 입력으로 앱의 선택 범위를 구성하거나 해당 액션을 앱에서 제외 |
| 함수 입력 또는 출력 | 해당 함수 때문에 패키지 생성 실패 | 지원하는 함수 계약을 사용하거나 해당 함수를 앱의 SDK 생성 대상에서 제외 |
SDK 생성 대상에서 제외하는 작업은 온톨로지 자체의 객체, 액션이나 함수를 삭제하는 것이 아닙니다. 앱이 사용하는 API 범위를 정하는 작업입니다.
현재 언어별 속성 계약
| 언어 | 구분할 속성 |
|---|---|
| TypeScript 2.x | Cipher는 CipherText, Marking은 문자열, Vector는 number[]로 읽는 속성 계약이 있습니다. 이 값을 생성하지 못하는 이전 생성기와 구분합니다. |
| Python 2.x | Media 속성을 읽을 수 있습니다. Marking과 Vector는 Beta 문맥에서 지원하며, 구조체 편집에는 생성 구조체 클래스와 해당 Beta 조건이 필요합니다. |
| Java | TimeSeries, Cipher와 Vector는 생성 속성 지원 범위에서 제외됩니다. 미디어 참조는 지원합니다. |
TypeScript의 CipherText 타입이 있다는 것만으로 복호화 권한이 생기지는 않습니다. Python의 Beta 속성은 AllowBetaFeatures 또는 Foundry 함수의 beta=True 조건을 따릅니다. Python 속성, 구조체 편집 및 미디어에서 실제 API를 확인합니다.
생성 오류에서 확인할 액션 타입
TypeScript 생성에서는 InterfaceObjectSet과 MarkingList, Python 생성에서는 ObjectSet 입력이 포함된 액션의 지원 여부를 확인해야 합니다. 객체 유형의 속성이나 읽기 함수가 지원하는 타입과 별개입니다.
앱에 추가한 액션 때문에 생성이 실패하면 오류가 지목한 매개변수와 생성기 버전을 확인합니다. 소비 코드에서 any로 타입 검사를 없애도 생성기가 만들지 못한 액션 바인딩을 사용할 수는 없습니다.
함수 입출력 타입 진단
다음은 생성기에서 함수 타입 오류를 분류할 때 사용하는 타입 코드입니다. 아래의 확인 대상을 모두 현재 언어 버전의 일괄 미지원 목록으로 해석하지 않습니다. 2.x에서 추가된 반환 지원은 이어지는 표를 따릅니다.
| 생성 SDK | 입력에서 확인할 타입 코드 | 출력에서 확인할 타입 코드 |
|---|---|---|
| TypeScript | 생성 오류의 입력 경로를 확인 | Principal, User, Notification, OntologyEdit, ClassificationMarking |
| Python | ObjectSet, AnonymousCustomType, CustomType, GeoShape, Group, MandatoryMarking, ModelGraph, Notification, OntologyEdit, Principal, Range, StringFunctionDateType_ThreeDimensionalAggregation, TimeSeries, TwoDimensionalAggregation, User | 같은 타입 코드를 검사하되 2.x의 객체 집합 및 집계 반환 지원을 구분 |
| Java | AnonymousCustomType, ClassificationMarking, CustomType, GeoShape, Group, MandatoryMarking, ModelGraph, Notification, OntologyEdit, Principal, Range, StringFunctionDateType_ThreeDimensionalAggregation, TimeSeries, TwoDimensionalAggregation, User | 입력과 같은 확인 대상 |
함수의 업무 구조체, 객체 속성의 Struct 및 생성기 내부의 AnonymousCustomType/CustomType 코드는 같은 사용 맥락이 아닙니다. 생성한 함수의 입력과 반환 타입이 소비 앱의 기대값을 표현하는지 확인해야 합니다.
Python 2.x의 반환 지원
| 반환 종류 | 2.x 동작 |
|---|---|
| 객체 | 기본 키 대신 실제 객체 인스턴스 |
| 객체 집합 | RID 대신 객체 집합 인스턴스 |
| 첨부 파일 | RID 대신 Attachment |
| 2차원 집계 | QueryTwoDimensionalAggregation |
| 3차원 집계 | QueryThreeDimensionalAggregation |
| 맵 | 선언한 타입의 dict |
따라서 위 반환 종류만으로 Python 2.x의 함수 생성을 포기할 필요는 없습니다. 실제 생성 계약과 1.x에서 2.x로 바뀐 반환을 확인합니다. 이 반환 지원이 같은 타입의 모든 액션 입력 조합까지 지원한다는 뜻은 아닙니다.
OAuth 웹훅이 있는 액션
외부 OAuth 2.0 인증을 사용하는 웹훅 액션은 OSDK 앱에서 바로 사용하는 경로가 지원되지 않습니다. 사용자가 외부 인증 애플리케이션(Outbound application)을 Foundry에서 먼저 승인해야 하는데 SDK 앱만으로 이 상호작용을 완료할 수 없기 때문입니다.
예를 들어 Workshop에서 해당 외부 인증을 먼저 승인하는 준비가 필요할 수 있습니다. SDK 입력 타입을 바꾸거나 토큰을 임의로 추가하는 것으로 이 승인 경계를 대체하지 않습니다. 웹훅과 외부 인증의 범위를 확인합니다.
OpenAPI의 any
OpenAPI 명세는 일부 타입이 전용 타입으로 지원되지 않아도 any로 내보낼 수 있습니다. Struct와 Vector가 여기에 해당합니다. 해당 매개변수의 실제 필드, 원소와 값 형식을 소비 앱에서 정의해야 합니다.