[]
        
(Showing Draft Content)

워크시트 테이블과 데이터 매니저 바인딩

워크시트 테이블을 데이터 매니저 테이블에 직접 바인딩할 수 있습니다. 동시 작업이 활성화된 경우 워크시트 테이블은 데이터 매니저 기반 바인딩 시나리오로 동시 작업에 참여할 수 있습니다.

동시 작업 동작은 바인딩된 데이터 매니저 테이블이 로컬 데이터 또는 원격 데이터를 사용하는지에 따라 달라집니다.

로컬 데이터

워크시트 테이블이 JSON 기반 인메모리 로컬 데이터를 사용하는 데이터 매니저 테이블에 바인딩된 경우 지원되는 테이블 상태 및 데이터 변경 사항이 동시 작업에 참여할 수 있습니다.

이 모드에서 공동 작업자는 동일한 바인딩된 워크시트 테이블을 보고 작업할 수 있습니다. 지원되는 작업은 동시 작업 시스템을 통해 동기화됩니다.

로컬 데이터는 동시 작업 세션 중 데이터 매니저 테이블의 데이터를 SpreadJS에서 관리하는 경우에 적합합니다.

원격 데이터

워크시트 테이블이 원격 데이터를 사용하는 데이터 매니저 테이블에 바인딩된 경우 원격 데이터 원본 자체는 동시 작업에 참여하지 않습니다.

SpreadJS는 다음과 같이 지원되는 바인딩 관련 상태를 동기화합니다.

  • 바인딩 구성

  • 워크시트 테이블 범위

  • 관련 워크시트 테이블 상태

원격 데이터의 일관성은 비즈니스 애플리케이션에서 제어합니다. 백엔드 데이터 지속성, 원격 데이터 변경 알림, 새로 고침 시점 및 레이아웃 동기화 결정은 비즈니스 애플리케이션에서 처리해야 합니다.

동시 작업에서 원격 바인딩 데이터를 수정하거나 바인딩된 데이터 영역에 영향을 주는 작업은 일반적인 워크시트 테이블 편집 작업으로 적용되지 않습니다.

지원되는 작업

다음 표에서는 워크시트 테이블이 데이터 매니저 테이블에 직접 바인딩된 경우의 동작을 요약합니다.

작업

로컬 데이터

원격 데이터

정렬 및 필터

지원

지원

테이블 머리글 또는 바닥글 표시 또는 숨기기

지원

지원

바인딩 열 수정

지원

지원

워크시트 테이블 다시 바인딩

지원

지원

워크시트 테이블 이동

지원

지원

바인딩된 데이터 셀 편집

지원

지원되지 않음

바인딩된 데이터 영역 내에서 복사, 붙여넣기 또는 끌어서 채우기

지원

지원되지 않음

테이블 행 또는 열 삽입 또는 삭제

지원

지원되지 않음

영향을 받는 범위에 바인딩된 워크시트 테이블이 포함된 경우 워크시트 행 또는 열 삽입 또는 삭제

지원

지원되지 않음

워크시트 테이블 범위 크기 조정 또는 확장

지원

지원되지 않음

원격 데이터의 경우 지원되지 않는 작업은 동시 작업에 적용되지 않습니다.

원격 데이터 새로 고침 및 테이블 레이아웃 동기화

원격 데이터에 바인딩된 워크시트 테이블의 경우 SpreadJS는 동시 작업 시스템을 통해 원격 데이터 원본을 동기화하지 않습니다.

백엔드에서 원격 데이터가 변경되면 비즈니스 애플리케이션에서 다음 사항을 결정해야 합니다.

  • 원격 데이터 변경을 클라이언트에 알리는 방법

  • 최신 원격 데이터를 가져올 클라이언트

  • 워크시트 테이블 레이아웃을 최신 데이터와 동기화할 시점

  • 레이아웃 동기화를 수행할 수 있는 클라이언트

SpreadJS는 두 가지 새로 고침 패턴을 제공합니다.

기본 새로 고침 모드

애플리케이션에서 최신 원격 데이터를 가져오고 바인딩된 워크시트 테이블 레이아웃을 한 번에 업데이트하려는 경우 기본 새로 고침 모드를 사용합니다.

데이터 매니저 테이블에서 fetch(true)를 호출합니다.

이 흐름에서는 다음 작업을 수행합니다.

  1. 최신 원격 데이터를 가져옵니다.

  2. 최신 데이터에 따라 해당 데이터 원본에 바인딩된 워크시트 테이블 레이아웃을 업데이트합니다.

이 모드는 간단하며 온라인 클라이언트 수가 비교적 적거나 원격 데이터 변경 알림을 받은 후 바인딩된 워크시트 테이블을 즉시 업데이트하려는 경우에 적합합니다.

분할 새로 고침 모드

애플리케이션에서 테이블 레이아웃 동기화 시점을 보다 세밀하게 제어해야 하는 경우 분할 새로 고침 모드를 사용합니다.

이 모드는 원격 데이터 새로 고침과 워크시트 테이블 레이아웃 동기화를 분리합니다.

이 흐름에서는 다음 API를 사용합니다.

  • 데이터 매니저 테이블의 refreshRemoteData()

  • 워크시트 테이블의 isTableLayoutDirty()

  • 워크시트 테이블의 adjustTableRangeForBind()

일반적인 흐름은 다음과 같습니다.

  1. refreshRemoteData()를 호출하여 최신 원격 데이터를 가져옵니다.

  2. isTableLayoutDirty()를 호출하여 워크시트 테이블 레이아웃이 더 이상 최신 데이터와 일치하지 않는지 확인합니다.

  3. 애플리케이션에서 워크시트 테이블 레이아웃을 동기화하기로 결정한 경우 adjustTableRangeForBind()를 호출합니다.

이 모드는 많은 공동 작업자가 온라인 상태이거나, 원격 데이터가 자주 변경되거나, 레이아웃 동기화를 수행할 클라이언트를 애플리케이션에서 제어해야 하는 경우에 유용합니다.

비즈니스 측 책임

원격 데이터의 경우 SpreadJS는 어떤 클라이언트가 최신 원격 데이터를 가지고 있는지 판단하지 않으며 원격 데이터 콘텐츠를 기반으로 충돌을 병합하지 않습니다.

비즈니스 애플리케이션에서 다음 사항을 관리해야 합니다.

  • 원격 데이터 버전 관리

  • 변경 알림 순서

  • 원격 요청 실패 시 재시도 동작

  • 워크시트 테이블 레이아웃을 동기화할 수 있는 클라이언트

  • 레이아웃 동기화를 수행할 시점

여러 클라이언트가 서로 다른 원격 데이터 상태를 기반으로 레이아웃 동기화를 시도하는 경우 최종 동시 작업 결과는 동시 작업 흐름에 따라 달라집니다. 충돌을 줄이려면 알려진 최신 원격 데이터 버전을 가진 클라이언트만 레이아웃 동기화를 수행하도록 허용하세요.