Foundry DevOps를 사용하여 Function을 Marketplace 제품에 포함시켜 다른 사용자가 설치하고 재사용할 수 있게 합니다. 첫 번째 제품을 생성하는 방법을 알아보세요.
DevOps는 Function 설치 및 재사용을 위해 패키지화하지만, Function의 소스 코드를 사용자가 볼 수 있게 제공하지 않습니다. 이는 설치 후 Function을 사용할 수 있지만 Function의 소스 로직을 볼 수 없음을 의미하며, Function을 동반하는 저장소는 비어 있을 것입니다. 모델 배포 입력값이 있는 Function은 곧 출시 예정입니다.
제품에 Function을 추가하려면 먼저 제품을 생성한 다음 아래와 같이 Function 콘텐츠 유형을 선택합니다.
그런 다음 Function과 버전을 선택하도록 요청받게 됩니다. 대부분의 경우, Function의 최신 버전을 선택해야 합니다.
Function을 직접 선택할 수 있지만, 먼저 Workshop 애플리케이션과 같은 콘텐츠를 추가하고, 그 다음 아래와 같이 의존성 패널을 통해 관련 Function을 선택하는 것을 권장합니다.
설치 시간에 로컬로 정의된 Function을 제공하여 Function의 일부 동작을 수정할 수 있습니다. 이를 위해 @Static
데코레이터를 사용하여 특정 Function이 재정의될 수 있음을 지정할 수 있습니다.
예를 들어, 주어진 숫자를 부정하는 Function을 생각해보세요:
// 일반 함수
import { Function, Double } from "@foundry/functions-api";
export class MyFunctions {
@Function()
// 숫자를 수정하는 함수
public async modifyNumber(d: Double): Promise<Double> {
return -d;
}
}
이 Function을 오버라이드 가능하게 하려면 다음과 같이 다시 작성하세요:
// Overridable Function
import { Function, Static, Double } from "@foundry/functions-api";
export class MyFunctions {
@Function()
// modifyNumberByStaticFoo는 두 개의 매개변수를 받습니다: n과 staticFunctionInput입니다.
// n은 Double 타입이며, staticFunctionInput은 함수 타입입니다.
// staticFunctionInput 함수는 Double 타입의 숫자를 매개변수로 받아 Promise<Double>를 반환합니다.
// staticFunctionInput 함수의 기본값은 this.defaultFoo 함수입니다.
public async modifyNumberByStaticFoo(
n: Double,
@Static() staticFunctionInput: (num: Double) => Promise<Double> = this.defaultFoo
): Promise<Double> {
// staticFunctionInput 함수를 호출하고 그 결과를 반환합니다.
return await staticFunctionInput(n);
}
// defaultFoo는 숫자 n을 매개변수로 받아 그 숫자의 음수를 반환하는 함수입니다.
private async defaultFoo(n: number) {
return -n;
}
}
정적 함수를 패키징할 때 입력값은 설치 중에 아래와 같이 staticFunctionInputs
로 표시됩니다. 그런 다음 설치자는 기본 동작을 재정의할 수 있는 함수 로직을 제공할 수 있습니다. 개념적으로, staticFunctionInputs
는 재정의 가능한 함수에 대한 함수 입력 파라미터 역할을 합니다.
예를 들어, 공급망 최적화 Function의 로직이 다른 맥락에서 약간의 조정이 필요할 수 있습니다. 이를 허용하려면 패키징하기 전에 Function을 재정의할 수 있게 지정한 다음 설치 중에 재정의하십시오.