본문으로 건너뛰기

PXFLOW 앱 화면 만들고 배포하기

이 페이지는 Flow 입력과 결과를 사용자용 앱에 배치하고 배포하는 V2 제품 흐름을 설명합니다.

V2 제품 계획

App Builder와 Deployment는 V2 App 전달 계획에 포함됩니다. 이 페이지는 App Builder의 Build·Preview·Deploy 사용 절차와 배포 lifecycle 계약을 정의합니다.

V2 제품 흐름에서는 PXFLOW Studio에서 Flow를 연 뒤 App Builder를 선택하고, 이미 정의한 Flow의 입력과 결과를 사용자용 페이지에 배치한 다음 Preview·검사·배포로 이어집니다.

App Builder UI

UI 위치여기서 하는 일다음 화면
PXFLOW 상단 App Builder → Build기존 Flow 입력·결과를 페이지에 배치하고 이름·레이아웃 설정앱 화면 초안
PreviewDesktop·Tablet·Mobile과 선택적 Test run 확인화면 미리 보기와 저장 결과
Deploy배포 후보, 필요한 기능, 접근 범위와 실행 환경 검토배포 요청
Deployment history현재·이전 배포, 상태와 영향받는 Embed 확인선택한 배포의 상세 상태

Builder는 Flow 입력·결과의 이름, 값 종류와 단위를 다시 정의하지 않습니다. 앱 화면 배치는 Builder 또는 작성 원본에서 바꾸고, 계산 자체는 PXFLOW·SDK에서 바꿉니다.

Builder는 기존 Flow 계약을 화면에 배치하고, 배포 검사를 통과한 후보만 실행 주소로 전환합니다.

화면에서 앱 만들기

Build

  1. 페이지를 추가하고 이름을 정합니다.
  2. 왼쪽 목록에서 사용할 Flow input과 result를 찾습니다.
  3. 페이지로 끌어 놓습니다.
  4. 열, 그룹, 너비와 표시 형식을 조정합니다.
  5. 사용자가 볼 필요가 없는 input이나 result는 앱 화면에서 숨깁니다.

Builder는 Flow가 선언한 type, unit, 기본값과 설명을 그대로 사용합니다. 화면에서는 label과 배치에 집중하면 됩니다.

Preview

  • Desktop, Tablet과 Mobile 화면을 확인합니다.
  • 필수 input 누락과 type·unit 오류를 확인합니다.
  • 입력 값을 편집하는 동안에는 계산을 실행하지 않습니다. Test run을 선택하면 고정된 Flow revision으로 계산을 시작합니다.
  • Test run의 상태와 결과는 Preview의 Run detail에서 확인합니다.

Deploy

  1. 배포할 Workspace와 환경을 확인합니다.
  2. Public, Anyone with link 또는 Signed in 중 접근 방식을 선택합니다.
  3. 포함되는 Flow와 설치 기능을 확인합니다.
  4. 보안, 라이선스와 용량 검사를 실행합니다.
  5. Request deployment를 선택합니다.
  6. 상태가 Active가 되면 실행 주소를 열어 배포된 앱을 확인합니다.

목적에 맞는 기능 선택

하고 싶은 일사용할 기능
Function package를 다른 개발자가 설치하게 만들기pxlab package publish
Flow를 사용자용 앱 화면으로 구성하기PXFLOW App Builder 또는 @px.app
실행 가능한 주소 만들기Builder의 Request deployment
결과를 다른 사람에게 읽기 전용으로 전달하기Share → Publish
읽기 전용 Flow 링크나 HTML 삽입 코드 만들기Share → Publish / Embed

입력하고 실행하는 웹 화면이 필요하면 App Deployment를, Flow 구조와 고정 결과만 보여 주려면 읽기 전용 Publication을 사용합니다. 자세한 순서는 PXFLOW 공유·게시·HTML 삽입을 확인하세요.

개발자·배포 기록 참고

배포된 앱의 정확한 상태 확인하기

SDK/API 기술 이름은 DeploymentRevision입니다. 검증을 마친 PXFLOW App candidate를 실행 환경에 올린 변경되지 않는 배포 상태입니다. SDK와 Builder는 앱 화면을 정의하고, Deploy plan·request가 그 정의와 exact Flow·dependency를 고정해 revision을 만듭니다.

단계사용자가 작성·실행하는 것화면에서 확인하는 곳만들어지는 것
앱 화면 정의@px.app source 또는 Builder의 BuildBuild canvas와 SDK-linked source diffApp surface definition
후보 고정pxlab app build 또는 Builder의 Deploycandidate의 Flow revision·dependency·digestimmutable App Candidate
영향 검토pxlab deploy plan 또는 Builder의 Deployenvironment·access·resource·차단 사유Deployment Plan
배포 요청pxlab deploy request 또는 Request deployment진행 상태와 diagnosticActive가 되면 새 DeploymentRevision
버전 확인pxlab deploy status 또는 Deployment historyActive·Superseded revision과 Embed 영향선택한 exact revision의 상태

SDK에서는 기존 Flow의 input과 result를 앱 페이지에 배치합니다.

python
from pipelinexlab import px

from structural_checks.flows.girder_design import flow as girder_design


@px.app(flow=girder_design, title="Girder design")
def girder_design_app(app: px.App):
    main = app.page("main", title="Design")
    main.input(girder_design.inputs.span)
    main.result(girder_design.results.resistance_summary)

@px.app은 Flow interface를 사용하는 App surface definition을 등록합니다. Canvas Node의 배치와 연결은 owning Flow module의 flow.node(...)flow.connect(...)가 소유합니다.

같은 정의를 Builder에서 Preview한 뒤 다음 control-plane 명령으로 배포합니다.

bash
pxlab app build . --app girder_design_app --output dist/girder-design-app

pxlab deploy plan dist/girder-design-app \
  --workspace civil-team \
  --environment production \
  --access unlisted

pxlab deploy request <plan_ref> \
  --confirm-digest sha256:<reviewed_plan_digest>

V2 UI 계약: Deployment history는 revision 번호, 상태, candidate digest, Flow revision과 생성 시각을 한 행에 표시합니다. 행을 열면 고정된 dependency와 해당 revision을 사용하는 Embed를 확인하고, Rollback은 선택한 candidate로 새 배포 요청을 만듭니다.

앱 화면 변경은 owning @px.app source 또는 Builder draft에서 시작합니다. 변경을 검사·빌드하고 새 배포 요청을 완료하면 history에 다음 DeploymentRevision이 추가됩니다.

SDK에서 앱 화면 정의하기

같은 화면을 Python source에서 관리하려면 @px.app을 사용합니다.

python
from pipelinexlab import px

from structural_checks.flows.girder_design import flow as girder_design


@px.app(
    flow=girder_design,
    title="Girder design",
    description="Enter design data and review the named results.",
)
def girder_design_app(app: px.App):
    main = app.page("main", title="Design")
    main.input(girder_design.inputs.span)
    main.input(girder_design.inputs.design_cases)
    main.result(girder_design.results.resistance_summary)
    main.result(girder_design.results.governing_utilization)

이 decorator는 App surface definition과 Flow interface projection을 등록합니다. Run은 이 정의가 가리키는 saved Flow를 실행합니다.

이 예제에서:

  • girder_design_app은 앱을 찾는 surfaceKey입니다.
  • main은 사용자가 읽을 수 있는 안정적인 pageKey입니다.
  • girder_design.inputs.span은 Flow의 exact input을 가리킵니다.
  • girder_design.results.resistance_summary는 Flow의 exact result를 가리킵니다.
  • 입력의 type과 unit은 Flow 계약에서 그대로 가져옵니다.

SDK App을 Builder에서 열면 SDK-linked 상태입니다. Builder에서 바꾼 내용은 Python source diff로 먼저 표시됩니다.

  • Apply를 선택하면 source를 바꾸고 다시 materialize해 같은 화면 정의가 나오는지 검사합니다.
  • Cancel을 선택하면 source와 Builder draft를 모두 원래대로 유지합니다.
  • source로 안전하게 표현할 수 없는 변경은 PXFLOW-native 사본으로 분리할지 먼저 묻습니다.

CLI로 전체 과정 실행하기

1. 로그인

Cloud Builder와 배포를 사용하려면 로그인합니다.

bash
pxlab auth login --workspace civil-team

로그인은 시스템 브라우저에서 완료됩니다. 비밀번호나 token을 command에 붙이지 않습니다.

2. Builder 열기

bash
pxlab app open . --app girder_design_app

Local 앱이 설치되어 있으면 해당 Builder를 엽니다. Local 앱이 없으면 로그인한 Cloud Workspace에서 열 수 있는 주소를 안내합니다.

3. 검사하기

bash
pxlab app check . --app girder_design_app

다음을 검사합니다.

  • target Flow와 port가 존재하는지
  • 외부 화면에서 사용할 수 있는 port인지
  • required input과 result projection이 유효한지
  • page key가 중복되지 않는지
  • layout과 접근성 규칙이 유효한지
  • 필요한 Function release와 asset을 찾을 수 있는지

이 명령은 검사 결과만 표시합니다. 계산은 Test run, 배포는 이후 build·plan·request 단계에서 시작합니다.

4. Local Preview

bash
pxlab app preview . --app girder_design_app

Local Preview는 현재 장치에서 화면을 확인합니다. 계산은 Preview 화면의 Test run에서 시작하고, 공개 주소는 Cloud Deployment Request에서 만듭니다.

5. 배포 후보 만들기

bash
pxlab app build . \
  --app girder_design_app \
  --output dist/girder-design-app

배포 후보는 다음을 고정합니다.

  • 앱 화면 정의
  • Flow revision
  • Function package와 dependency
  • 필요한 asset
  • 각 파일과 계약의 digest

source를 바꿨다면 새 후보를 만들어야 합니다.

6. 배포 계획 확인하기

bash
pxlab deploy plan dist/girder-design-app \
  --workspace civil-team \
  --environment production \
  --access unlisted

unlisted는 Builder 화면의 Anyone with link와 같은 접근 방식입니다.

Plan에서 예상 route, 접근 방식, resource, 라이선스, secret requirement와 차단 사유를 검토한 뒤 배포 요청으로 넘어갑니다.

7. 배포 요청하기

Plan 출력에서 검토한 planRef와 digest를 사용합니다.

bash
pxlab deploy request <plan_ref> \
  --confirm-digest sha256:<reviewed_plan_digest>

Interactive terminal에서는 영향과 digest를 다시 보여 주고 확인을 요청합니다. 확인한 planRef와 digest가 일치할 때 외부 환경 변경을 시작합니다.

8. 상태 확인하기

bash
pxlab deploy status <deployment_request_ref>

주요 상태는 다음과 같습니다.

상태의미
Requested요청이 접수되었습니다.
Admitted권한·정책·quota 검사를 통과했습니다.
Provisioning실행 환경을 준비하고 있습니다.
Verifyinghealth와 실행 경로를 확인하고 있습니다.
Active실행 주소를 사용할 수 있습니다.
Rejected권한·정책 또는 license 조건을 충족하지 못했습니다.
Failed준비 또는 검증에 실패했습니다.
Cancelled진행 중인 요청이 취소되었습니다.
Indeterminate최종 상태를 확정할 수 없어 다시 조회하거나 지원 정보가 필요합니다.

9. 취소·내리기·이전 버전 복구

아직 진행 중인 요청을 취소합니다.

bash
pxlab deploy cancel <deployment_request_ref>

현재 실행 중인 앱을 내립니다.

text
pxlab deploy withdraw \
  --workspace <workspace_key> --project <project_key> --flow <flow_key> \
  --app <surface_key> --environment <environment_key>

이전 정상 revision으로 복구 요청을 만듭니다.

text
pxlab deploy rollback \
  --workspace <workspace_key> --project <project_key> --flow <flow_key> \
  --app <surface_key> --environment <environment_key> --to-revision <number>

Rollback은 이전 후보를 다시 활성화하는 새 요청을 만들고 기존 revision을 보존합니다.

Local과 Cloud의 차이

작업LocalCloud
App check·build로그인 없이 가능로그인 없이 Local에서 가능
PreviewLauncher가 Local runtime 관리로그인한 Workspace에서 session 생성
공개 주소Local Preview 주소 사용Deployment Request로 실행 주소 생성
계산 계약같은 Flow와 Function release같은 Flow와 Function release
저장 형식같은 .pxflow App Surface같은 direct object와 candidate digest

Local과 Cloud는 같은 앱 화면과 port 의미를 사용합니다. 실제 process와 저장 위치만 host에 따라 달라집니다.

자주 묻는 질문

화면 label과 Flow 계약 바꾸기

Builder에서는 화면 label을 바꿀 수 있습니다. Flow의 portKey, type과 unit을 바꾸려면 Flow source에서 계약을 수정하고 영향을 확인하세요.

배포 후보에 포함되는 범위

배포 후보에는 실행에 필요한 승인된 closure만 포함됩니다. source 공개, 편집 권한과 Library 공개는 각 화면에서 별도로 선택합니다.

App build와 Deployment Request가 필요한 경우

Function package만 배포하는 작업은 package publish에서 끝납니다. 해당 Function을 사용하는 사용자용 PXFLOW 앱 주소를 만들 때 App build와 Deployment Request를 이어서 진행하세요.

Builder와 CLI 중 무엇을 사용해야 하나요?

화면 배치와 Preview는 Builder가 편합니다. 반복 가능한 검사·build·배포 요청과 CI는 CLI가 적합합니다. 둘은 같은 App Surface와 서버 명령을 사용합니다.

다음 문서