6.6. 사용자 정의 함수


OpenShift Serverless Logic은 구현에서 함수 정의 기능을 확장할 수 있는 사용자 지정 함수 유형을 지원합니다. 작업 문자열과 결합하여 사전 정의된 함수 유형 목록을 사용할 수 있습니다.

참고

사용자 지정 함수 유형은 다른 런타임 구현에서 이식할 수 없습니다.

6.6.1. SYSOUT 사용자 정의 기능

다음 예와 같이 로깅에 sysout 함수를 사용할 수 있습니다.

sysout 함수 정의의 예

{
  "functions": [
    {
      "name": "logInfo",
      "type": "custom",
      "operation": "sysout:INFO"
    }
  ]
}

: 이후의 문자열은 선택 사항이며 로그 수준을 나타내는 데 사용됩니다. 가능한 값은 TRACE,DEBUG,INFO,WARNERROR 입니다. 값이 없으면 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
    }
  ]
}

1
myFunction 은 함수 이름입니다.
2
Custom 은 함수 유형입니다.
3
service:java:com.acme.MyInterfaceOrClass::myMethod 는 사용자 정의 작업 정의입니다. 사용자 정의 작업 정의에서 service 는 예약된 작업 키워드와 java 키워드가 차례로 사용됩니다. com.acme.MyInterfaceOrClass 는 인터페이스 또는 구현 클래스의 FQCN(완전화된 클래스 이름)과 메서드 이름 myMethod 입니다.

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
    }
  ]
1
이 함수는 함수 이름입니다.
2
Custom 은 함수 유형입니다.
3
작업에서 Knative 서비스의 좌표를 설정합니다.
참고

이 함수는 POST 요청을 보냅니다. 경로를 지정하지 않으면 OpenShift Serverless Logic은 루트 경로(/)를 사용합니다. 작업에서 method= GET 을 설정하여 GET 요청을 보낼 수도 있습니다. 이 경우 인수는 쿼리 문자열을 통해 전달됩니다.In this case, the arguments are forwarded over a query string.

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
    }
  ]
}
1
multiplyAllAndSum 은 함수 이름입니다.
2
Custom 은 함수 유형입니다.
3
rest:post:/numbers/{multiplier}/multiplyByAndSum 은 사용자 정의 작업 정의입니다. 사용자 정의 작업 정의에서 rest 은 REST 호출임을 나타내는 예약된 작업 키워드이며, post 는 HTTP 메서드이고, /numbers/{multiplier}/multiplyByAndSum 은 상대 엔드포인트입니다.

상대 엔드포인트를 사용하는 경우 호스트를 속성으로 지정해야 합니다. host 속성 형식은 kogito.sw.functions.<function_name> . host입니다. 이 예에서 kogito.sw.functions.multiplyAllByAndSum.host 는 호스트 속성 키입니다. 필요한 경우 kogito.sw.functions.multiplyAllAndSum.port 속성을 지정하여 기본 포트(80)를 덮어쓸 수 있습니다.

이 끝점은 본문에서 필드 번호가 정수 배열인 JSON 오브젝트로, 배열의 각 항목을 multiplier 로 곱하고 모든 곱한 항목의 합계를 반환합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.