본문으로 건너뛰기

처음 보는 용어

처음에는 Report와 Flow, Flow 안의 Component와 Node만 구분하세요. 기능을 설치할 때 Component package, Extension과 Integration을 이어서 확인합니다. 페이지 뒷부분은 Python SDK로 같은 작업을 작성할 때 쓰는 이름이므로 화면만 사용할 때는 건너뜁니다.

Report와 Flow

Report는 본문, 작성값, 표와 계산 결과를 표시할 위치를 저장합니다. Flow는 Report나 다른 화면에서 값을 받을 input, Node, 연결과 밖으로 보낼 result를 저장합니다. 두 문서는 같은 Project에 나란히 있고, Report Workbench 또는 Python의 px.Report에서 필요할 때 연결합니다.

Flow 안의 input, Node 연결과 Flow result가 계산 구조를 이룹니다. Save한 Flow를 실행할 때마다 Run 기록이 생기고, 완료된 값과 근거는 Result로 저장됩니다.
이름쉬운 뜻화면
ProjectReport, Flow, Component dependency와 Result를 함께 관리하는 작업 공간Project Home
Report본문·작성값·표와 Flow 연결을 저장하는 문서Report Workbench
FlowNode와 연결로 만든 실행 가능한 계산 흐름PXFLOW Studio
Node현재 Flow에 실제로 놓인 계산·입력·표시 단계Studio Canvas의 상자
연결result 값을 다음 input으로 보내는 선Node port 사이의 선
Run저장된 Flow를 input으로 한 번 실행한 기록Run·Result
ResultRun이 만든 값과 근거Result 영역

Function, Component와 Node

Function과 Component는 배치할 기능, Node는 현재 Flow에 배치한 사용처입니다.

기능언제 고르나요?배치한 Node
FunctionCanvas에서 실행할 계산을 작성하고 필요하면 여러 Flow에서 공유Function Reference Node
Component설치 가능한 기능 identity를 사용현재 read-only unsupported; 전용 UI·settings는 계획

Studio에서는 Function을 Definitions → Functions에서 고릅니다. package-backed Components → Installed 동선은 계획입니다. 둘 다 Canvas에 배치한 뒤 Node가 되고, input과 result를 연결합니다.

SDK에서도 같은 배치를 한 문법으로 작성합니다.

python
check = flow.node("utilization_check", calculate_utilization)
view = flow.node("model_view", model_viewer)

첫 번째 값은 Flow 안에서 이 Node를 계속 식별하는 고유한 이름이고, 두 번째 값은 이 Node가 실행할 @px.function 또는 @px.component target입니다. 일반 Python def는 이 target의 구현을 나누는 helper이며 Canvas에 직접 배치하지 않습니다.

Built-in과 third-party Component

종류제공자사용 흐름
Built-in ComponentPipelineXLabComponents에서 바로 배치
Installed Component · 계획향후 Project dependencyComponents → Installed에서 배치
Third-party Component · 계획외부 publisherAvailable에서 Project에 추가한 뒤 배치

향후 출처가 달라도 같은 host Node grammar와 port 연결을 사용합니다. 현재 installed Component는 exact target/raw settings와 usage-derived 일부 port를 보존한 unsupported Node로 표시됩니다.

Component package, Extension과 Integration

이름역할예시 상황
Component package필요한 Component를 Project에 한 번에 설치하는 묶음. Component symbol을 하나 이상 export하는 Python package/distribution이고, 버전 갱신도 이 단위로 합니다. Project-scoped install UI는 계획package 하나가 viewer와 result table 제공
ExtensionComponent 외에 editor·viewer·adapter·app surface까지 제공할 목표 기능host bridge 구현 뒤 Component Node에서 넓은 editor 열기
Integration외부 제품·서비스·데이터를 연결하는 Extension외부 해석 model·case·result 연결

사용자는 Component를 먼저 찾고, 상세에서 제공 package와 version을 확인합니다. 개발자는 public module에서 Component를 export하고 package release로 배포합니다.

설치 이름, Python import 경로와 Flow에 배치할 Component symbol을 구분합니다.
  • 설치 이름은 Project dependency와 version을 관리합니다.
  • import 이름은 Python source가 Component를 찾는 module입니다.
  • Component symbol은 flow.node(...)에 배치할 target입니다.
  • Node key는 현재 Flow가 각 배치를 구분하는 이름입니다.

여기부터는 코드로 작성할 때 쓰는 이름입니다

화면에서 Report와 Flow를 만들 때는 여기까지만 알면 됩니다. 아래 내용은 Python SDK로 같은 작업을 작성할 때 필요한 이름입니다.

Python SDK 이름 읽기

Python SDK는 from pipelinexlab import px로 시작합니다. px.는 Flow·Report·Client 같은 SDK 객체와 input·result 계약을 만들 때 사용합니다. 만든 객체의 내용은 그 객체를 담은 변수에서 작성합니다.

먼저 쓰는 코드다음 호출화면과의 관계
flow = px.Flow(...)flow.node(...), flow.connect(...)PXFLOW Studio의 Flow, Node와 연결선
report = px.Report(...)report.section(...), report.save()Report Workbench의 Report와 section
basis = report.section(...)basis.value(...), basis.table(...)Report 본문의 값과 표
connection = report.connect_flow(...)connection.bind(...), connection.show(...)Use report input, Show result 연결
client = px.Client(...)client.run(...)Run·Result 영역

px. 뒤에는 SDK가 제공하는 타입과 선언 도구가 옵니다. flow, report, basis, connection, client는 앞 열에서 만든 객체를 담은 변수이며, 점 뒤에는 그 객체가 소유하는 동작이 옵니다. Flow를 작성하는 .py module은 public flow = px.Flow(...) 객체를 하나만 export합니다. Flow가 여러 개면 Flow마다 module을 나눕니다.

@px.function@px.component

@px.function은 Canvas에서 실행할 계산을 등록하고 여러 Flow에서 같은 정의를 공유하게 합니다.

python
class UtilizationResults(px.Results):
    value: float


@px.function(
    key="calculate_utilization",
    version="1.0.0",
    description="Calculates demand-to-resistance utilization.",
)
def calculate_utilization(demand: float, resistance: float) -> UtilizationResults:
    return UtilizationResults(value=demand / resistance)

현재 @px.component는 설치 기능의 companion metadata와 annotation-derived input/result만 등록합니다. settings schema, renderer/modal/editor와 decorator-to-package build bridge는 계획 범위입니다. portable V1 container는 content/component.json 선언 하나만 받으며, 다중 선언과 host presentation은 Node presentation과 third-party UIcontract_only V2입니다.

아래 settings-bearing Component 예제는 두 P0 closure와 별도 versioned settings 계약 뒤의 목표 형태입니다. 이 예제는 contract_only 목표 문법이며, 현재 설치본에서는 실행 상태로 표시된 current 예제를 사용하세요.

python
class CheckResults(px.Results):
    passed: bool = px.result(description="Whether the value passed the check.")


@px.component(
    key="threshold_check",
    label="Threshold check",
    description="Checks a value against a node-specific limit.",
    category="review",
    subcategory="checks",
)
def threshold_check(
    value: float = px.input(unit="kN", description="Value to check."),
    *,
    limit: float = px.setting(
        label="Limit",
        default=100.0,
        description="Maximum allowed value.",
    ),
) -> CheckResults:
    return CheckResults(passed=value <= limit)

두 decorator는 재사용 정의를 등록합니다. 실제 Canvas Node는 flow.node(...)에서 배치합니다. Function·Component의 명시적 key와 Component의 subcategory는 stable lower_snake_case를 사용합니다. Component의 category는 닫힌 primary task registry로 input, transform, calculate, review, deliver, control 여섯 개 중 하나를 쓰고, subcategory는 그 아래에서 publisher가 직접 정하는 별개의 열린 key입니다. Python 함수 이름은 구현 symbol이며 등록 identity를 대신하지 않습니다. production third-party Component 신규 install·placement·activation은 authenticated-principal authorization과 execution-trust closure가 모두 닫힐 때까지 차단합니다. 아래 placement도 같은 post-closure 목표입니다.

연결을 SDK로 작성하기

이 예제는 contract_only 목표 문법이며, 현재 설치본에서는 실행 상태로 표시된 current 예제를 사용하세요.

python
flow = px.Flow(
    "load_review",
    label="Load review",
    description="Checks one service load against a limit.",
)
load = flow.input("load", float, unit="kN", description="Service load.")
check = flow.node("service_check", threshold_check)
flow.connect(load, check.inputs.value)
flow.result("passed", check.results.passed)
SDKStudio
flow.input(...)Flow public input
flow.node(...)Canvas Node
flow.connect(...)port 연결선
flow.result(...)Flow public result

다음에 읽을 문서

  1. 처음 시작하기
  2. PXFLOW Studio
  3. Components 사용하기
  4. Python SDK API reference
  5. 정확한 용어집