6.6. 사용자 정의 함수
OpenShift Serverless Logic은 구현에서 함수 정의
기능을 확장할 수 있는 사용자 지정 함수 유형을 지원합니다. 작업
문자열과 결합하여 사전 정의된 함수 유형 목록을 사용할 수 있습니다.
사용자 지정 함수 유형은 다른 런타임 구현에서 이식할 수 없습니다.
6.6.1. SYSOUT 사용자 정의 기능
다음 예와 같이 로깅에 sysout
함수를 사용할 수 있습니다.
sysout
함수 정의의 예
{ "functions": [ { "name": "logInfo", "type": "custom", "operation": "sysout:INFO" } ] }
:
이후의 문자열은 선택 사항이며 로그 수준을 나타내는 데 사용됩니다. 가능한 값은 TRACE
,DEBUG
,INFO
,WARN
및 ERROR
입니다. 값이 없으면 INFO
가 기본값입니다.
상태
정의에서는 다음 예와 동일한 sysout
함수를 호출할 수 있습니다.
상태 내의 sysout
함수 참조 예
{ "states": [ { "name": "myState", "type": "operation", "actions": [ { "name": "printAction", "functionRef": { "refName": "logInfo", "arguments": { "message": "\"Workflow model is \\(.)\"" } } } ] } ] }
이전 예에서 message
인수는 jq 표현식 또는 보간을 사용하는 jq 문자열일 수 있습니다.
6.6.2. Java 사용자 정의 기능
OpenShift Serverless Logic은 워크플로우 서비스를 정의하는 Apache Maven 프로젝트 내에서 java
함수를 지원합니다.
다음 예제에서는 java
함수 선언을 보여줍니다.
Java 함수 선언
의 예
{ "functions": [ { "name": "myFunction", 1 "type": "custom", 2 "operation": "service:java:com.acme.MyInterfaceOrClass::myMethod" 3 } ] }
6.6.3. Knative 사용자 정의 기능
OpenShift Serverless Logic은 knative-serving
애드온을 통해 Knative 서비스를 호출할 수 있는 사용자 정의 기능을 구현합니다. HTTP 요청을 수행하는 데 사용되는 Knative 서비스를 정의하는 정적 URI를 보유할 수 있습니다. URI에 정의된 Knative 서비스는 현재 Knative 클러스터에서 쿼리되고 유효한 URL로 변환됩니다.
다음 예제에서는 배포된 Knative 서비스를 사용합니다.
$ kn service list NAME URL LATEST AGE CONDITIONS READY REASON custom-function-knative-service http://custom-function-knative-service.default.10.109.169.193.sslip.io custom-function-knative-service-00001 3h16m 3 OK / 3 True
다음 예와 같이 Knative 서비스 이름을 사용하여 OpenShift Serverless Logic 사용자 정의 함수를 선언할 수 있습니다.
"functions": [ { "name": "greet", 1 "type": "custom", 2 "operation": "knative:services.v1.serving.knative.dev/custom-function-knative-service?path=/plainJsonFunction", 3 } ]
이 함수는 POST
요청을 보냅니다. 경로를 지정하지 않으면 OpenShift Serverless Logic은 루트 경로(/)를 사용합니다. 작업에서 method=
을 설정하여 GET 요청을 보낼 수도 있습니다. 이 경우 인수는 쿼리 문자열을 통해 전달됩니다.In this case, the arguments are forwarded over a query string.
GET
6.6.4. REST 사용자 정의 기능
OpenShift Serverless Logic은 REST
사용자 정의 유형을 바로 가기로 제공합니다. 사용자 지정 rest을 사용하는 경우 함수 정의에서 호출할 HTTP URI와 사용할 HTTP 메서드(get, post, patch 또는 put)를 지정합니다. 이 작업은 작업
문자열을 사용하여 수행됩니다. 함수가 호출되면 OpenAPI 함수를 사용할 때와 같이 요청 인수를 전달합니다.
다음 예제에서는 rest
함수 선언을 보여줍니다.
{ "functions": [ { "name": "multiplyAllByAndSum", 1 "type": "custom", 2 "operation": "rest:post:/numbers/{multiplier}/multiplyByAndSum" 3 } ] }
상대 엔드포인트를 사용하는 경우 호스트를 속성으로 지정해야 합니다. host 속성 형식은 kogito.sw.functions.<function_name> .
host입니다. 이 예에서 kogito.sw.functions.multiplyAllByAndSum.host
는 호스트 속성 키입니다. 필요한 경우 kogito.sw.functions.multiplyAllAndSum.port
속성을 지정하여 기본 포트(80)를 덮어쓸 수 있습니다.
이 끝점은 본문에서 필드 번호가
정수 배열인 JSON 오브젝트로, 배열의 각 항목을 multiplier
로 곱하고 모든 곱한 항목의 합계를 반환합니다.