Call Entity

Call · 콜 · Aufruf
IRI (semanticId)
https://dualsoftdev.github.io/aas-semantics/entity/Call/1/0

설명 / Description / Beschreibung

한국어
Work 내부에서 디바이스 API 를 호출하는 요소 (ApiDef 의 소비자).
English
Invocation of a device API within a work step (consumer of ApiDef).
Deutsch
Aufruf einer Geräte-API innerhalb eines Arbeitsschritts (Verbraucher der ApiDef).

다이어그램 / Diagram

전체 구조 / Overview — 이 엔티티가 DS 안에서 위치

Project TokenSpec Recipe · #1 DsSystem ApiDef ApiDef TAG Flow Work Call ★ ApiCall Call₂ Work₂ Write Read Write Read DsSystem Work Call ApiCall ApiDef → DsSystem DsSystem Work Call ApiCall ApiDef → DsSystem ArrowWork ArrowCall Tag-Pair Bus ★ Call

엔티티 상세 / Entity Detail — 내부 구조 · 동작

📞 Call — Work 안 디바이스 API 호출 단위 name = "{DevicesAlias}.{ApiName}" · CallConditions ⊕ ApiCalls 실행 Work "Pickup" (parent) parentId = MainFlow.id · Status4 = Going (Calls 실행 중) Call_1: Robot1.MOVE_TO_A DevicesAlias: "Robot1" ApiName: "MOVE_TO_A" Status4: Going CallConditions · AutoAux (자동 보조) · SkipUnmatch=false Call_2: Gripper1.GRAB DevicesAlias: "Gripper1" ApiName: "GRAB" Status4: Ready CallConditions · ComAux (공통 보조) · timeout: 1500ms Call_3: Robot1.LIFT DevicesAlias: "Robot1" ApiName: "LIFT" Status4: Ready apiCalls[*] → apiDefId: ... → originFlowId: MainFlow.id Start Start ★ Call 사이의 화살표 = ArrowBetweenCalls (arrowType=Start) F# 타입 / 상속 Call.inherits(DsChild) DsChild.inherits(DsEntity) parentId : Guid → Work.id apiCalls : ResizeArray<ApiCall> (Skip 마킹 → 별도 SML) callConditions : ResizeArray<CallCondition> CallConditionType enum · AutoAux — 자동 보조 (다음 Call 자동 트리거) · ComAux — 공통 보조 (예: 안전 체크) · SkipUnmatch — 조건 불일치 시 스킵 · Custom — 사용자 정의 expression ★ 조건이 모두 충족되어야 ApiCall 실행
상속 체인 / Inheritance: DsEntityDsChild

F# 타입 정의 / Type Definition

type Call [<JsonConstructor>] internal (devicesAlias: string, apiName: string, parentId: Guid) =
    inherit DsChild("", parentId)

    member val Properties     = ResizeArray<CallSubmodelProperty>()
    member val Status4        : Status4    = Ready
    member val Position       : Xywh option = None
    member val ApiCalls       = ResizeArray<ApiCall>()         // 런타임 바인딩
    member val CallConditions = ResizeArray<CallCondition>()
    member val ReferenceOf    : Guid option = None

    member val DevicesAlias = devicesAlias    // Name 의 앞부분
    member val ApiName      = apiName         // Name 의 뒷부분
    // Name = "{DevicesAlias}.{ApiName}" 자동 합성

필드 / Fields

FieldTypeDefaultAAS fieldDescription
IdGuidGuid.NewGuid()Guid전역 고유 식별자 (자동 생성)
Namestring(생성자 인자)Name엔티티 이름
ParentIdGuid(생성자 인자)ParentId부모 엔티티 Id 참조
DevicesAliasstring(인자)DevicesAlias (Skip)디바이스 별칭 — Name 의 앞부분
ApiNamestring(인자)ApiName (Skip)호출하는 API 명 — Name 의 뒷부분
Status4Status4 enumReadyStatus런타임 상태 (R/G/F/H)
PositionXywh optionNonePosition캔버스 좌표
ApiCallsResizeArray<ApiCall>[]ApiCalls (Skip)런타임 바인딩 (Tag 매핑) — 별도 처리
CallConditionsResizeArray<CallCondition>[]CallConditions조건부 호출 (AutoAux/ComAux/SkipUnmatch)
ReferenceOfGuid optionNoneReferenceOf원본 Call Id (참조)

관계 / Relationships

예제 (F#) / Example

let moveCall = Call("Robot1", "MOVE_TO_A", pickup.Id)
// Name = "Robot1.MOVE_TO_A" 자동 생성

// CallCondition 추가 (AutoAux 자동 보조)
let cond = CallCondition()
cond.Type  <- Some CallConditionType.AutoAux
moveCall.CallConditions.Add(cond)

AAS 매핑 / AAS Mapping

Call 은 Work SMC 하위 Calls SML 안 SMC. ApiCalls 컬렉션은 [<AasxField(Skip)>] 로 별도 ApiCalls SML 컨테이너에 분리 저장됨.

원본 코드 / Source files

AAS ConceptDescription 메타

idShort: Call
dataType: STRING