서비스 액세스의 프로토타입

함수 프로토타입에서 매개변수를 지정하여 서비스에 액세스하는 경우 다음에서 설명된 규칙을 따라야 합니다.

인터페이스 파트는 서비스 액세스에 사용되며 다음과 같은 함수 프로토타입을 포함합니다.
Function GetEmployeeDetail(employeeCode STRING IN,                             
                           employeeSalary FLOAT OUT,
                           employeeStatus STRING INOUT)
         returns(myEmployeeRecordPart);
프로토타입이 EGL REST-RPC 서비스에 액세스하는 데 사용되는 경우 다음 규칙이 적용됩니다.
  • 프로토타입은 IN, OUT, INOUT 매개변수를 포함할 수 있습니다.
  • 서비스가 수신하고 리턴하는 데이터는 항상 JSON 형식입니다. JSON은 HEX, BLOB 또는 CLOB 데이터를 포함할 수 없습니다.
  • 서비스는 항상 JSON 문자열을 리턴합니다. Rich UI 애플리케이션에서 EGL 런타임 코드는 서비스가 리턴하고 15개의 유효 숫자보다 큰 숫자 데이터를 반올림합니다. 반올림은 JSON이 EGL 생성 Java™ 코드로 리턴될 때 발생하지 않습니다.

프로토타입이 SOAP 서비스에 액세스하는 데 사용되는 경우 프로토타입은 IN, OUT, INOUT 매개변수를 포함할 수 있습니다.

프로토타입이 써드파티 REST 서비스에 액세스하는 데 사용되는 경우 다음 규칙이 적용됩니다.
  • IN 수정자가 각 매개변수에 필요합니다.
  • 매개변수가 URI 또는 조회 문자열을 생성하는 데 사용되는 경우 다음 규칙이 적용됩니다.
    • 매개변수 이름이 URI 템플리트의 대체 변수 이름과 일치해야 합니다.
    • 매개변수의 데이터 유형은 기본 유형 또는 관련 데이터 항목일 수 있습니다.
    • 요청자가 JavaScript에 생성되는 경우 기본요소 유형은 STRING 또는 STRING과 호환 가능한 지정인 다음 유형이어야 합니다. FLOAT, BIN 또는 BIN과 같은 정수 중 하나(INT, SMALLINT 또는 BIGINT).
    • 요청자가 Java에 생성되는 경우 HEX, BLOB 또는 CLOB 이외의 기본요소 유형이 유효합니다.
    • REST 서비스가 Rich UI 애플리케이션에 JSON 문자열을 리턴하는 경우 EGL 런타임 코드는 서비스가 리턴하고 15개의 유효 숫자보다 큰 숫자 데이터를 반올림합니다. 반올림은 JSON이 EGL 생성 Java 코드로 리턴될 때 발생하지 않습니다.
  • 표시 매개변수의 값은 문자열, 이전에 언급된 호환 가능한 지정 유형 또는 필드만 다음 규칙을 이행하는, 구조화되지 않은 레코드 파트일 수 있습니다.
    • 필드는 STRING 유형이거나 STRING과 호환 가능한 지정입니다.
    • 필드는 구조화되지 않은 레코드 파트를 기반으로 합니다. 특히, 필드는 문자열(또는 호환 가능한 지정 값)을 포함하는 레코드 파트 또는 기타 구조화되지 않은 레코드 파트를 기반으로 할 수 있습니다. 레코드는 레코드 내에서 어떤 레벨로도 중첩될 수 있습니다.
프로토타입이 원시 바인딩을 거쳐 IBM® i 서비스 프로그램에 직접 액세스하는 데 사용되는 경우 다음 규칙이 적용됩니다.
  • 매개변수는 지정된 길이여야 합니다. 예를 들어, STRING 유형의 구조화되지 않은 레코드 및 값은 지원되지 않습니다. 동적 배열도 지원되지 않습니다.
  • 서비스는 정수를 리턴하거나 값을 리턴하지 않을 수 있습니다. 원시 서비스가 정수를 리턴하는 경우 다음에 제안된 두 가지 방법으로, theOperation으로 이름 지정된 서비스 조작을 호출할 수 있습니다.
       theService myEGLInterfacePart {@BindService{}};
       myStatus INT;
    
       // 정수가 리턴되면 다음 호출 중 하나가 유효합니다.
       theService.theOperation();
       myStatus = theService.theOperation();
  • 원시 서비스 또는 0이 아닌 리턴 코드에 액세스하는 데 실패하면 “EGL 코어 예외 레코드”에서 설명된 대로 ServiceInvocationException 예외를 처리합니다.