← 플러그인 라이브러리
운영·자동화

배치관리

전용 사용자 API 키로 ContextMeta 코드값·표준정보를 조회하여 Oracle에 주기적으로 추가·수정합니다.

로그인 후 다운로드

적용 환경

ContextMeta 호스트 버전
0.1.0 이상 · 0.2.0 미만
Plugin API / 패키지 형식
API 2 · format 2
실행 환경
패키지 README에서 확인

설치 권한: ContextMeta system.admin

게시된 버전

v1.0.0

API 2 · format 2 · ZIP 344 KB

SHA-256 76d88e51ac0f81685c093fc6867354a8cd8affd4991d2d6ceffccdb018c393ba

선택된 버전

설치·롤백 안내

호환 환경·데이터 변경 범위를 확인한 뒤 ContextMeta 설정 → 환경설정 → 플러그인 관리에서 등록·설치하세요.

배치관리 1.0.0

기능

ContextMeta의 설정 → 배치관리에서 표준코드 값과 표준단어·용어·도메인을 Oracle에 주기적으로 맞춥니다. 현재 Oracle을 지원하며 PostgreSQL·MySQL은 후속 adapter 확장 대상입니다.

적용 대상

ContextMeta Plugin API 2 호스트와 Oracle 대상 DB를 사용합니다. 호스트 지원 및 아래 migration이 필요합니다.

설치 시 변경 사항

플러그인 설치 시 추가되는 소유 테이블: 없음. 아래의 3개 배치 저장소는 별도 호스트 migration086이 소유합니다.

  1. 호스트 migration 086_batch_management.sql, batch adapter, menuParent: settings 및 native 연결 관리 bridge가 필요합니다.
  2. 환경설정 → 플러그인 관리에서 이 ZIP을 등록하고 README 확인 후 설치합니다. 등록만으로 실행되지는 않습니다.
  3. python -m app.plugin_worker를 실행합니다. 전체 개발 stack npm run dev에도 포함됩니다.
  4. 호스트의 기존 META_CATALOG_KEK 또는 보호된 KEK 파일을 API와 worker가 함께 사용해야 합니다.

페이지·배치·연결 관리는 configuration.admin 권한이 필요합니다. 패키지 설치는 system.admin 권한입니다.

API 키 준비

설정 → 조직 및 사용자에서 배치 전용 사용자를 생성하고 그 사용자에게 API 키를 발급합니다. 권한 관리에서 standards.read를 부여하고 잠금 해제·API 사용 허용 상태를 확인합니다. 연결 관리의 API 키 입력란에 발급된 키를 넣습니다. 로그인 비밀번호나 브라우저 세션을 대신 사용하지 않습니다. 키 재발급·폐기·사용자 잠금 시 다음 조회는 실패합니다. API 키와 Oracle 비밀번호는 native 호스트 창에서만 입력하고 서버가 AES-256-GCM으로 암호화합니다. 플러그인 iframe·Python 명령·실행 원장에는 전달하지 않습니다.

배치 등록과 실행

  • 연결 관리에서 실제 ContextMeta API 기본 URL(예: http://서버:포트/api)과 Oracle 호스트·포트·Service Name·계정을 입력합니다. HTTP/HTTPS를 입력 그대로 사용하고 HTTPS의 정상 인증서 검증을 유지합니다. URL 변경 시 API 키를 다시 입력합니다.
  • 연결 테스트는 API 키 인증과 Oracle 접속만 확인합니다. 대상 테이블의 키·컬럼·타입 검증은 배치 미리보기로 확인합니다.
  • 조회 API를 선택하고 표준분류 ID, 코드 도메인 ID로 범위를 제한할 수 있습니다. API 필드와 기존 대상 테이블 컬럼을 매핑합니다.
  • 동기화 키는 Oracle의 활성·검증된 비지연 PK 또는 UNIQUE 제약의 전체 컬럼과 일치해야 합니다. 단일 코드 ID는 도메인 범위를 포함해 유일성을 확인하세요. 원본/매핑 키의 중복·빈 값은 반영 전에 거부합니다.
  • 변환은 문자, 숫자(boolean은 1/0), 날짜(YYYY-MM-DD), ISO 시각입니다. 코드값의 선행 0을 보존하려면 문자를 선택합니다. Oracle SQL의 빈 문자열=NULL 의미가 적용됩니다. quoted mixed-case 식별자·DB 링크·임의 SQL·테이블 생성은 지원하지 않습니다.
  • 미리보기는 API 전체 페이지와 변환·대상 구조를 검사하며 대상 DML을 실행하지 않습니다. 성공은 실제 쓰기 권한·제약 충족의 보증은 아닙니다.
  • 실행은 MERGE로 추가·수정합니다. 삭제·TRUNCATE는 실행하지 않으며 API에 없는 대상 행은 유지합니다. 한 실행은 하나의 Oracle transaction이고 실패·취소 시 commit 이전 변경은 rollback합니다.
  • 예약은 5자리 cron과 IANA 시간대입니다. 기본은 예약 꺼짐이며 예: 0 * * * *(매시 정각), 0 2 * * *(매일 02시). 브라우저를 닫아도 worker가 수행하며, 중복 실행을 막고 지나간 주기를 모두 소급 실행하지 않습니다.

실행 상태와 제한

최대 50,000행·32 MiB API 응답·300초, 활성 정의 200개·연결 100개·대기/실행 합계100개, 배치당 동시 실행1개입니다. 행은 API pagination으로 읽으며 단일 시점 DB snapshot을 보장하지 않습니다. 조회 도중 총건수 변경·누락·중복은 실패하며 수집 완료 후에만 Oracle 쓰기를 시작합니다. 주기적 추가·수정으로 변경사항을 다시 반영할 수 있습니다.

외부 DB commit과 ContextMeta 결과 원장은 서로 다른 transaction입니다. commit 응답 손실 또는 실행기 중단은 결과 미확정으로 기록하고 해당 예약을 정지합니다. 실행 이력과 대상 DB를 확인한 후 명시적으로 다시 실행하거나 예약을 재개하세요. 자동 재실행으로 정확히 한 번 반영을 보장한다고 주장하지 않습니다. 취소 요청은 이미 commit된 데이터를 되돌리지 않습니다. 사용자 잠금·권한 회수·플러그인 해제·세대 변경·연결 변경은 실행/최종 반영 경계에서 재검사합니다. 재설치 후에는 배치 설정을 다시 저장해야 새 세대에서 실행됩니다.

롤백 시 주의사항

  • 플러그인 설치 시 추가되는 소유 테이블: 없음.
  • 플러그인 롤백·제거 시 삭제되는 테이블: 없음.
  • 호스트 migration086은 metafit_batch_connection, metafit_batch_definition, metafit_batch_run을 추가합니다. 연결 보안·예약 선출·실행 결과를 담당하는 호스트 저장소이며 플러그인 소유 테이블이 아닙니다.
  • 해제 시 실행 경로와 메뉴가 닫히며 위 호스트 데이터 및 외부 DB 반영 데이터는 보존됩니다. 배치 보관 처리도 실행 이력을 삭제하지 않습니다. 기존/core/타 플러그인 테이블을 변경·삭제하지 않습니다.
  • 서버 배포는 migration086 → 호스트 → ZIP 설치 순서입니다. 구형 호스트는 새 capability/menuParent를 거부합니다. 호스트를 롤백하기 전 예약을 중지하고 실행을 확인하세요. ERFIT/model-core/Repository 버전·리비전·hash 변경은 없습니다.

빌드

저장소 루트에서 node plugins/batch-management/build.mjs를 실행합니다. 번들은 설치 시 다운로드 없이 동작하며 React·Ant Design 의존성의 원문 LICENSE/NOTICE를 JS에 동봉합니다.

포함된 UI 의존성

패키지 버전 라이선스
@ant-design/colors 7.2.1 MIT
@ant-design/cssinjs-utils 1.1.3 MIT
@ant-design/cssinjs 1.24.0 MIT
@ant-design/fast-color 2.0.6 MIT
@ant-design/icons-svg 4.6.0 MIT
@ant-design/icons 5.6.1 MIT
@ant-design/react-slick 1.1.2 MIT
@babel/runtime 7.29.7 MIT
@emotion/hash 0.8.0 MIT
@emotion/unitless 0.7.5 MIT
@rc-component/async-validator 5.1.2 MIT
@rc-component/color-picker 2.0.1 MIT
@rc-component/context 1.4.0 MIT
@rc-component/mini-decimal 1.1.4 MIT
@rc-component/mutate-observer 1.1.0 MIT
@rc-component/portal 1.1.2 MIT
@rc-component/qrcode 1.1.3 MIT
@rc-component/tour 1.15.1 MIT
@rc-component/trigger 2.3.1 MIT
antd 5.29.3 MIT
classnames 2.5.1 MIT
compute-scroll-into-view 3.1.1 MIT
copy-to-clipboard 3.3.3 MIT
dayjs 1.11.23 MIT
json2mq 0.2.0 MIT
rc-cascader 3.34.0 MIT
rc-checkbox 3.5.0 MIT
rc-collapse 3.9.0 MIT
rc-dialog 9.6.0 MIT
rc-drawer 7.3.0 MIT
rc-dropdown 4.2.1 MIT
rc-field-form 2.7.1 MIT
rc-image 7.12.0 MIT
rc-input-number 9.5.0 MIT
rc-input 1.8.0 MIT
rc-mentions 2.20.0 MIT
rc-menu 9.16.1 MIT
rc-motion 2.9.5 MIT
rc-notification 5.6.4 MIT
rc-overflow 1.5.0 MIT
rc-pagination 5.1.0 MIT
rc-picker 4.11.3 MIT
rc-progress 4.0.0 MIT
rc-rate 2.13.1 MIT
rc-resize-observer 1.4.3 MIT
rc-segmented 2.7.1 MIT
rc-select 14.16.8 MIT
rc-slider 11.1.9 MIT
rc-steps 6.0.1 MIT
rc-switch 4.1.0 MIT
rc-table 7.54.0 MIT
rc-tabs 15.7.0 MIT
rc-textarea 1.10.2 MIT
rc-tooltip 6.4.0 MIT
rc-tree-select 5.27.0 MIT
rc-tree 5.13.1 MIT
rc-upload 4.11.0 MIT
rc-util 5.44.4 MIT
rc-virtual-list 3.19.2 MIT
react-dom 18.3.1 MIT
react-is 18.3.1 MIT
react 18.3.1 MIT
resize-observer-polyfill 1.5.1 MIT
scheduler 0.23.2 MIT
scroll-into-view-if-needed 3.1.0 MIT
string-convert 0.2.1 MIT
stylis 4.4.0 MIT
throttle-debounce 5.0.2 MIT
toggle-selection 1.0.6 MIT