Research Article

Journal of KIBIM. 31 March 2024. 11-21
https://doi.org/10.13161/kibim.2024.14.1.011

ABSTRACT


MAIN

  • 1. 서 론

  •   1.1 연구의 배경 및 목적

  •   1.2 연구의 범위 및 방법

  • 2. 상용 BIM 플랫폼과 API의 특징

  •   2.1 Forge API와 Hub 특징

  •   2.2 iTwin API와 Hub 특징

  • 3. 상용 BIM 플랫폼 연계 기능정의

  •   3.1 Forge API 기반의 연계 기능정의

  •   3.2 iTwin API 기반의 연계 기능정의

  •   3.3 상용 BIM 플랫폼 연계를 위한 연계 프레임워크 구성

  • 4. 상용 BIM 플랫폼 연계 개발

  •   4.1 적용된 Forge API 및 개발결과

  •   4.2 적용된 iTwin API 및 개발결과

  •   4.3 AWS 클라우드 서버에서 실행

  • 5. 결론 및 향후 연구방향

1. 서 론

1.1 연구의 배경 및 목적

국내 대형 건설사업의 설계 과정에서 기존에는 발주처와 참여 조직들이 물리적인 한 공간에 모여 합동사무실을 구성하여 운영하는 것이 일반적이었으나, COVID-19 이후에는 비대면 업무에 대한 요구가 늘어나면서 건설 산업에서도 온라인 협업이 필요해졌다. 그러나, 건설산업은 디지털화 수준이 상대적으로 낮고 생산성이 떨어지는 문제로 인하여 협업방식은 기존의 합동사무실 운영 방식에서 벗어나지 못하고 있다. 최근에는 건설산업의 디지털화를 촉진하기 위해 국토교통부가 ‘스마트 건설 활성화 방안(2022)’을 발표하였으며, 이는 BIM 도입을 통한 디지털화를 목표로 하고 있다.

BIM 기반의 디지털 협업을 실현하기 위해서는 발주자와 설계자, 다양한 설계자 간의 정보를 효율적으로 공유하고 협업하는데 사용되는 공통데이터환경(Common Data Environment, 이하 CDE)이 필요하다. 또한, 국내 합사의 협업 과정을 국제표준인 ISO 19650을 기반으로 검토하고, 국내 실정에 맞는 디지털 합사 운영 및 CDE 요구사항을 고려한 플랫폼 개발이 국가연구과제로 진행중에 있다.

그러나, 국내 설계사들은 상용 BIM 협업 플랫폼을 산발적으로 사용하고 있기 때문에, 상용 플랫폼에서 제공되는 연계 API를 이용한 연계 프레임워크 및 응용 애플리케이션 개발이 필요하다. 즉, 두 플랫폼 사이에 메타 데이터 전송, 모델 변환 및 웹 뷰어 가시화, 대용량 파일전송과 같은 연계가 필요하다.

상용 BIM 플랫폼에 대한 API 연계기술은 2017년 이후 꾸준히 해외(미국, 유럽)를 중심으로 기술개발과 사례가 소개되고 있으나, 국내사례는 BIM을 활용한 설계 및 시공 도입이 증가하고 있지만, 클라우드 플랫폼 연계개발 사례는 내부 기술보안 공개의 어려움으로 학술적인 공개가 이루어지지 않고 있다.

이러한 배경에 따라 본 연구는 한국형 BIM 협업 플랫폼과 상용 BIM 플랫폼 사이에 인증, 모델 뷰어 개발, 메타 데이터 전송 및 파일전송 연계 개발을 목표로 하였으며, 각 상용 플랫폼 연계 API 별로 실제 응용개발을 진행하였다.

상용 BIM 플랫폼의 선정은 건축, 건설, 엔지니어링 설계 및 시공에서 대표적으로 가장 많이 사용되는 Autodesk의 BIM 360 및 Bentley Systems의 ProjectWise 365를 대상으로 하였으며, Figure 1은 BIM 기반의 디지털 협업 플랫폼과 상용 BIM 제품(BIM 360, ProjectWise 365, Revit, Civil 3D) 사이의 데이터 연계를 표현한 것이다.

https://static.apub.kr/journalsite/sites/kibim/2024-014-01/N0430140102/images/kibim_14_01_02_F1.jpg
Figure 1.

Commercial BIM platform data interface diagram

BIM 360는 Forge API 연계기술을 보유하고 있으며, ProjectWise 365는 iTwin API 이름의 연계 플랫폼 기반에서 데이터 연계가 가능하다. 시스템 개발 언어와 프레임워크 선정은 정부 및 공공기관에서 주로 사용되거나 요구되는 Java 기반의 Spring Framework Backend 기술로 개발하며, 웹 기반의 BIM 모델 뷰어는 HTML5와 Node.js 기술을 적용하였다.

1.2 연구의 범위 및 방법

Autodesk Forge API는 코어 컴포넌트 API 12개, BIM 360 전용 API 11개, ACC (Autodesk Construction Cloud) 전용 API 14개로 구성되어 있으며(Autodesk Platform Services, 2023), 이중에서 연구범위와 직접 관련된 API는 Authentication, Forge Viewer, Data Management, Model Derivative, Issues API로 한정하여 프레임워크 개발 범위를 정하였다.

Bentley Systems의 iTwin API는 Visualization, Synchronization & Exports, Digital Twin Management, Administration, Reality Capture 등 9개의 카테고리 API로 구성되어 있으며(iTwin Platform, 2023), 이중 연구범위에 필요한 API는 Authentication, Visualization, Digital Twin Management의 iModels, Review의 Issues 등으로 한정하였다.

위 연계 API를 사용하기 위해 필요한 상용 BIM 플랫폼의 저장소(Hub), 모델 변환 프로세스 및 변환형식을 조사하고 특징을 추가한 연구 범위는 다음과 같다.

첫째, Forge API와 iTwin API를 비교하고 각 플랫폼 내부의 동작 특징을 조사하여 분석한다.

둘째, 상용 BIM 플랫폼과 데이터 연계에 필요한 상용 플랫폼의 상세 API를 정의한다.

셋째, Autodesk의 Forge API(인증, 뷰어, 이슈, 파일전송)의 특징을 분석하고, 각 API 사용명세를 기술하며, 웹 개발 결과를 제시한다.

넷째, iTwin API (인증, 뷰어, 이슈, 파일전송)의 특징을 분석하고, 각 API 사용명세를 기술하며, 웹 개발 결과를 제시한다.

다섯째, MSA (Micro Service Architecture) 기반의 연계 프레임워크를 개발하고, 클라우드 서버(AWS)에 배포하여 실제 연계개발 결과를 검증한다.

2. 상용 BIM 플랫폼과 API의 특징

Table 1은 상용 BIM 플랫폼 내부 저장소, 모델 변환과 관련된 용어를 정리한 표이다. 각 플랫폼 별로 사용하는 용어가 다르고 모델 변환과 형식이 서로 상이하며, 내부 저장소(Hub)와 모델 변환 프로세스가 다르기 때문에, 관련 API를 사용하여 연계 프레임워크를 개발하기 위해서는 그 특징을 자세히 살펴볼 필요가 있다.

Table 1.

Forge API vs. iTwin API

Features Autodesk Bentley systems
Platform name BIM 360 (ACC) ProjectWise 365
API Forge API (APS) iTwin API
Repository Hub, Bucket iModelHub
Format SVF, SVF2 iModel

*APS : Autodesk Platform Services

2.1 Forge API와 Hub 특징

Autodesk Forge API에서 사용되는 SVF (Simple Viewer Format) 및 SVF2 (Simple Viewer Format 2)는 BIM 데이터를 가시화하고, 웹 브라우저에서 모델을 렌더링하기 위한 포맷이다. 이러한 포맷은 Viewer API를 통해 구현된 3D 모델 뷰어에서 사용된다.

SVF는 Autodesk의 초기 3D 모델 뷰어에서 사용되었으며, BIM 데이터를 표현하고 렌더링하기 위한 형식으로 약 60개의 다양한 원본 3D 모델을 SVF로 변환하여 웹에서 가시화할 수 있다.

SVF2는 SVF의 다음 세대로, 더 효율적이고 최신의 웹 기술을 기반으로 한다. 더 작은 파일 크기로 더 빠르게 모델을 로드할 수 있으며, 향상된 렌더링 품질을 제공한다. 이러한 SVF 및 SVF2 변환은 Autodesk의 Model Derivative API를 통해 이루어지는데, 주요 단계는 다음과 같다.

1) 모델 데이터를 Autodesk Hub 또는 Bucket 저장소에 업로드 한다.

2) Model Derivative API를 사용하여 Translate 작업을 실행하여 SVF 또는 SVF2로 모델을 변환한다.

3) 변환 작업이 완료되기를 기다린 후, 변환 상태를 확인한다.

4) 변환된 SVF 또는 SVF2 파일을 사용하여 모델을 웹에서 가시화한다.

이를 통해 Forge API를 사용하여 BIM 데이터를 웹에서 가시화하고 상호작용할 수 있는 3D 모델로 변환할 수 있다. 모델이 변환되어 생성된 SVF/SVF2 데이터는 OSS 저장소에 보관되고, URN 고유이름으로 접근할 수 있는데, 이를 도식화 하면 Figure 2와 같다.

https://static.apub.kr/journalsite/sites/kibim/2024-014-01/N0430140102/images/kibim_14_01_02_F2.jpg
Figure 2.

Forge platform diagram

2.2 iTwin API와 Hub 특징

iTwin API와 iModelHub는 디지털 트윈 기술을 활용하여 인프라 및 건축 프로젝트의 라이프사이클 전체에 걸쳐 협업하고 가시성을 제공하는 솔루션이며, 주요 개념과 iModel 변환 단계에 대한 설명을 도식화하면 Figure 3과 같다(Bentley Systems iModels, 2023).

1) iTwin API는 iTwin을 개발자가 활용할 수 있도록 하는 API로, 다양한 플랫폼 및 애플리케이션에서 iModel 생성 및 업로드 하는 기능을 제공한다.

2) iTwin API를 사용하여 iModel의 다양한 버전을 관리하고 추적할 수 있다.

3) iModelHub는 클라우드 저장소이며, iModelHub를 통해 다양한 이해 관계자가 프로젝트 데이터에 액세스하고 협업할 수 있다.

4) iModel은 디지털 트윈의 핵심 데이터 모델로, 다양한 형식의 디자인 및 엔지니어링 데이터를 통합하여 관리할 수 있다. iModelHub를 사용하여 다양한 형식의 디자인 파일을 iModel로 변환할 수 있다.

5) 버전 관리 및 협업: 변환된 iModel은 iModelHub에서 버전 관리되며, 여러 이해 관계자가 협업하고 정보를 공유할 수 있는 기능을 제공한다.

https://static.apub.kr/journalsite/sites/kibim/2024-014-01/N0430140102/images/kibim_14_01_02_F3.jpg
Figure 3.

iModelHub platform diagram

3. 상용 BIM 플랫폼 연계 기능정의

3.1 Forge API 기반의 연계 기능정의

본 연구는 COBIM 연구단과 관련된 내용이다. COBIM 연구단은 BIM기반 발주, 설계, 협업이 가능한 온라인 협업 플랫폼인 “COBIM”의 구축을 목표로 설정하고 있다. 특히 인프라 시설과 관련하여 발주자와 설계자의 BIM기반 협업에 도움을 주기 위한 것이다. BIM 업무를 상호연결, 통합함으로써 정보의 공유, 협업, 관리가 용이하도록 하고자 한다.

COBIM과 BIM 360를 연계하기 위한 Forge API 기반의 프레임워크 설계 정의에 필요한 요구기능과 특징은 다음과 같다.

사용자는 COBIM의 일반 메뉴에서 Forge Viewer API를 활용하여 외부 BIM 모델에 접근할 수 있어야 한다. 그리고, 관리자는 BIM 360 저장소에 등록된 특정 프로젝트 폴더의 자료를 COBIM 저장소로 일괄로 가져올 수 있어야 한다.

1) 사용자 상용 플랫폼 프로젝트 폴더 조회 및 뷰어

사용자는 연계 API를 통해 상용 플랫폼의 프로젝트 폴더에 저장된 BIM 모델 목록을 확인할 수 있어야 한다.

Forge Viewer API를 이용하여 웹에서 모델을 표출하고, 모델을 확인하기 전에는 인증을 위해 Access Token이 필요하다.

2) 사용자 프로젝트 폴더의 모델 속성 보기

사용자가 BIM 모델 객체를 클릭하면 속성을 확인할 수 있는 팝업 창 개발이 필요하다.

3) 사용자 프로젝트 폴더의 모델 이슈 조회

Issues API를 활용하여 프로젝트 및 모델의 이슈 내용을 조회할 수 있어야 한다.

프로젝트의 컨테이너 ID와 이슈 아이디 목록을 검색할 수 있으며, 두 가지 유형의 이슈가 있다(프로젝트와 연결되어 있지만 특정 문서와 연결되지 않은 이슈, 특정 문서와 관련된 이슈).

4) 관리자 동기화 설정 추가/수정/삭제

시스템 관리자 또는 프로젝트 관리자가 동기화 설정을 추가, 수정, 삭제할 수 있다.

5) 관리자 동기화 설정 로그정보 보기

시스템 관리자 또는 프로젝트 관리자가 동기화 설정의 로그정보를 확인할 수 있다.

Forge API로 구현해야 하는 상세 API와 기능을 정리하면 Table 2와 같다.

Table 2.

Forge API function definition

Forge APIs ID API details Description
FR-01:
Authorization
API
- POST authorization code
- POST refresh token
Get the 3-Legged token for the first time, create a
new access token
FR-02:
Viewer API
- POST
getHubs/getProjects/getItemsTree/getLastVersion
Get data to display a 3D model for a specific project
FR-03:
Issues API
- GET issue-types
- GET issue-root-cause-categories
- GET issues
Manage project issues and access issue details
FR-04:
File Transfer
API
- GET Hubs/topFolders/
contents/versions/formats/manifest
- GET OSS Objects
Get information about projects, files, versions,
etc., and download files for backup or
synchronization of project deliverables

3.2 iTwin API 기반의 연계 기능정의

ProjectWise 365 플랫폼에 저장된 BIM 모델을 COBIM에서 접근하는 연계기술 프레임워크 설계 정의를 위해 필요한 iTwin API 요구기능과 특징은 다음과 같다.

주요 기능은 Viewer API를 활용하며, 내부 개발자 인증을 통해 iModel 파일을 웹에서 표출할 수 있는데, 사용자를 위한 연계 기능으로는 COBIM의 일반 사용자 메뉴에 추가되어 Viewer API를 통해 외부의 상용 플랫폼에 저장된 BIM 모델에 쉽게 접근할 수 있어야 한다. 즉, 일반 사용자는 상용 플랫폼의 프로젝트 폴더에 저장된 BIM 모델 목록을 연계 API를 사용하여 확인할 수 있으며, Visualization iTwin Viewer API를 활용하여 iModels 모델을 웹에 표출하여 상용 플랫폼으로 이동하지 않고도 작업 중인 모델을 실시간으로 확인할 수 있도록 구현이 필요하며, 사용자는 추가적으로 프로젝트 폴더 모델의 상세속성을 확인하거나 이슈 내용을 조회할 수 있다.

관리자 연계 기능으로 ProjectWise 365 저장소에 등록된 특정 프로젝트 폴더의 자료를 COBIM 저장소로 일괄로 가져올 수 있어야 한다. 시스템 관리자나 프로젝트 관리자는 동기화 설정을 추가, 수정, 삭제하거나 해당 설정의 로그정보를 확인할 수 있는 기능 구현이 필요하다.

iTwin API로 구현해야 하는 상세 API와 기능을 정리하면 Table 3과 같다.

Table 3.

iTwin API function definition

iTwin APIs ID API Details Description
FR-05:
Authorization
API
- POST gettoken
- POST refresh token
- GET user information
Get the 3-Legged token for the first time,
create a new access token, and retrieve login
user information.
FR-06:
Viewer API
- GET Project iModels
- GET iModel Named Versions
Get a list of iModels and named versions
associated with a specific project
FR-07:
Issues API
- GET Project/Project Issues/issue
details/Issue Comments/Issue Attachments/
Workflow/issue audit trail
Manage project issues and access issue details
FR-08:
File Transfer
API
- GET folder/folder in folder/folder and files
in folder/Search folders and files/files in
folder/Download file/
Get file/Get a link to the Storage
Access, search, and download project files and
folder structures

3.3 상용 BIM 플랫폼 연계를 위한 연계 프레임워크 구성

상용BIM 플랫폼과 COBIM 플랫폼 사이에 데이터 교환을 위한 연계 서비스 프레임워크 구성은 Figure 4와 같다.

https://static.apub.kr/journalsite/sites/kibim/2024-014-01/N0430140102/images/kibim_14_01_02_F4.jpg
Figure 4.

Integration service framework diagram

상용 BIM 플랫폼에 저장되어 있는 이슈와 같은 메타데이터 조회, 모델 파일전송 및 3D 뷰어 표출은 상용 저작도구를 통한 최종 협업 모델은 현재 상용 BIM 클라우드 플랫폼에만 저장할 수 있으며, 설계사의 최신 데이터 저장소는 상용 플랫폼에 보관되기 때문에 데이터 교환은 단방향 데이터 교환으로 제한하였다.

Figure 5는 MSA (Micro Service Architecture) 기반의 서비스 프레임워크 모듈 구성도이다. 데이터 흐름은 좌측에서 우측으로 흘러가며, 직접 통신하는 Core REST API 중앙 모듈로 자리잡고 있고, Refresh Token을 생성하는 인증 모듈과, 웹 Frontend 모듈, 파일전송, 관리자 DB 저장 및 기타 채팅 응용 서비스 모듈 등으로 구성되어 있다.

https://static.apub.kr/journalsite/sites/kibim/2024-014-01/N0430140102/images/kibim_14_01_02_F5.jpg
Figure 5.

MSA based integration module diagram

4. 상용 BIM 플랫폼 연계 개발

4.1 적용된 Forge API 및 개발결과

다음은 위에서 정의된 요구 기능과 프레임워크 개발을 위해 필요한 상세 Forge API에 대해서 차례대로 설명하고 웹 응용 결과물을 제시하였다(Table 2).

4.1.1 인증 API

Forge API의 토큰 관련 인증 API는 사용자의 인증과 토큰 관리를 위한 두 가지 주요 작업을 수행하는 엔드포인트를 제공한다. 각 엔드포인트에 대한 사용명세는 설명은 다음과 같다(APS Authentication (OAuth) API, 2023).

∙ FR-01: POST Authorization Code

- 엔드포인트: {{baseUrl}}/authentication/v2/token

- 파라미터: grant_type=authorization_code

이 엔드포인트는 Authorization Code grant 타입을 사용하여 토큰을 얻기 위한 것이다. OAuth 2.0의 Authorization Code Flow를 사용하여 사용자의 액세스 토큰을 얻을 때 사용된다.

∙ FR-01: POST Refresh Token

- 엔드포인트: {{baseUrl}}/authentication/v2/token

- 파라미터: grant_type=refresh_token

- refresh_token=이전 값을 사용하며 1회만 사용 가능

- scope=data:read

이 엔드포인트는 Refresh Token grant 타입을 사용하여 새로운 액세스 토큰을 얻기 위한 것이다. 이전에 발급된 Refresh token과 함께 사용하여 새로운 액세스 토큰을 얻을 수 있다. 사용 시에는 1회만 사용 가능하며, 데이터 읽기 권한(scope=data:read)이 필요한 경우에 해당 Scope를 명시한다.

이 인증 API를 사용하여 사용자의 OAuth 2.0 인증을 처리하고, Authorization code나 Refresh token을 사용하여 새로운 액세스 토큰을 얻을 수 있다. 필요한 파라미터에 대한 정보가 명시되어 있다.

4.1.2 뷰어 API

Forge Viewer API는 3D 모델을 웹 애플리케이션에서 표시하기 위한 API를 제공한다. 각각의 엔드포인트에 대한 간략한 설명은 다음과 같다(APS Viewer API, 2023).

∙ FR-02: POST getHubs

- 엔드포인트: {{baseUrl}}/viewing/getHubs

- 기능: Forge에서 사용 가능한 Hubs(프로젝트의 최상위 폴더)의 목록을 가져오는 데 사용된다.

∙ FR-02: POST getProjects

- 엔드포인트: {{baseUrl}}/viewing/getProjects

- 기능: 특정 Hub(프로젝트의 최상위 폴더)에 속한 프로젝트의 목록을 가져오는 데 사용된다.

∙ FR-02: POST getItemsTree

- 엔드포인트: {{baseUrl}}/viewing/getItemsTree

- 기능: 특정 프로젝트 내의 항목 트리(계층 구조)를 가져오는 데 사용된다. 항목은 3D 모델 파일 또는 다른 형식의 문서 등을 나타낼 수 있다.

∙ FR-02: POST getLastVersion

- 엔드포인트: {{baseUrl}}/viewing/getLastVersion

- 기능: 특정 항목의 최신 버전을 가져오는 데 사용된다. 이 버전은 뷰어에서 표시할 3D 모델 파일이나 다른 형식의 문서 등을 나타낸다.

이러한 엔드포인트들은 Forge viewer를 사용하여 웹 애플리케이션에서 특정 프로젝트의 3D 모델을 표시하기 위한 데이터를 가져오는 데 활용되며, 개발된 화면은 Figure 6과 같다. 위 API를 통해서 가져온 “Hub, Project, Folder, Item, Version” 정보를 사용자가 클릭하면 웹 화면을 통해서 3D Model 가시화가 가능하다.

https://static.apub.kr/journalsite/sites/kibim/2024-014-01/N0430140102/images/kibim_14_01_02_F6.jpg
Figure 6.

Forge viewer API user interface results

4.1.3 이슈 API

Forge Issue API는 프로젝트 내의 이슈와 관련된 정보를 가져오는 엔드포인트를 제공한다. 각 엔드포인트에 대한 간략한 설명은 다음과 같다(APS Issues API, 2023).

∙ FR-03: GET issue-types

- 엔드포인트: {{baseUrl}}/issues/v2/containers/:containerId/issue-types

- 파라미터: containerId: 입력값(필수)

이 엔드포인트는 특정 컨테이너(containerId)에 대한 이슈 유형(카테고리) 목록을 가져오는데 사용된다. 각 이슈 유형은 프로젝트 내에서 특정 유형의 이슈를 식별하는 데 사용된다.

∙ FR-03: GET issue-root-cause-categories

- 엔드포인트: {{baseUrl}}/issues/v2/containers/:containerId/issue-root-cause-categories

- 파라미터: containerId: 입력값(필수)

이 엔드포인트는 특정 컨테이너(containerId)에 대한 이슈의 루트 원인 카테고리 목록을 가져오는데 사용된다. 이슈의 원인을 구체화하고 분류하기 위한 목적으로 사용된다.

∙ FR-03: GET issues

- 엔드포인트: {{baseUrl}}/issues/v2/containers/:containerId/issues

- 파라미터: containerId: 입력값(필수)

이 엔드포인트는 특정 컨테이너(containerId)에 대한 이슈 목록을 가져오는데 사용된다. 프로젝트 내에서 발생한 이슈에 대한 정보를 조회할 수 있다. 이 API를 사용하여 프로젝트의 이슈 유형, 루트 원인 카테고리, 및 이슈 목록을 가져올 수 있으며, 개발 결과 화면은 Figure 7과 같다. 사용자가 이슈 메뉴를 클릭하면, BIM 360의 해당 프로젝트에 저장되어있는 이슈 목록과 상세내용을 연계 프레임워크 모듈이 실시간으로 가져오고, 웹 화면에 표출한다.

https://static.apub.kr/journalsite/sites/kibim/2024-014-01/N0430140102/images/kibim_14_01_02_F7.jpg
Figure 7.

Issue API User interface results

4.1.4 파일전송 API

Forge 파일 전송 API를 사용하기 위한 주요 엔드포인트에 대한 설명은 다음과 같다(APS Download API, 2023).

∙ FR-04: GET Hubs

- 엔드포인트: GET /project/v1/hubs

- 기능: Forge에서 사용 가능한 Hubs(프로젝트의 최상위 폴더)의 목록을 가져온다.

∙ FR-04: GET Projects Top Folders

- 엔드포인트: GET /data/v1/projects/:project_id/topFolders

- 기능: 특정 프로젝트의 최상위 폴더 목록을 가져온다.

∙ FR-04: GET Contents

- 엔드포인트: GET /data/v1/projects/:project_id/folders/:folder_id/contents

- 기능: 특정 폴더 내의 콘텐츠(파일 및 하위 폴더) 목록을 가져온다.

∙ FR-04: GET Versions

- 엔드포인트: GET /data/v1/projects/:project_id/versions/:version_id

- 기능: 특정 버전(파일의 업로드 또는 변경에 대한 기록)의 세부 정보를 가져온다.

∙ FR-04: GET Download Formats

- 엔드포인트: GET /modelderivative/v2/designdata/formats

- 기능: Forge에서 지원하는 다양한 형식의 다운로드 포맷 목록을 가져온다.

∙ FR-04: GET Downloads

- 엔드포인트: GET /modelderivative/v2/designdata/:urn/manifest

- 기능: 특정 디자인 데이터(URN)의 매니페스트 정보를 가져온다.

∙ FR-04: GET OSS Objects - Signed S3 Download

- 엔드포인트: GET /oss/v2/buckets/:bucketKey/objects/:objectKey/signeds3download

- 기능: OSS(객체 스토리지 서비스)에서 특정 객체(파일)의 서명된 S3 다운로드 URL을 가져온다.

이러한 엔드포인트들을 통해 프로젝트, 파일, 버전 등에 관한 정보를 가져오고, 백업 또는 프로젝트 성과물 동기화를 위해 파일을 다운로드할 수 있다. 대용량 파일전송의 안정적인 교환과 확장 개발이 가능하도록 Open API를 제공하여 협업 플랫폼(CDE)과 연계할 수 있는 연계 프레임워크를 개발한 결과는 Figure 8과 같다.

https://static.apub.kr/journalsite/sites/kibim/2024-014-01/N0430140102/images/kibim_14_01_02_F8.jpg
Figure 8.

File transfer API user interface results

4.2 적용된 iTwin API 및 개발결과

다음은 위에서 정의된 요구 기능과 프레임워크 개발을 위해 필요한 iTwin 상세 API에 대해서 차례대로 설명하였으며, 웹 응용 결과물은 Autodesk와 개발화면이 동일하여 생략하였다(Table 3).

4.2.1 인증 API

iTwin API는 인증에 OAuth 2.0을 사용한다. OAuth를 사용하려면 앱을 iTwin 플랫폼에 등록해야 한다(iTwin Platform Authorization API, 2023).

인증 API와 관련된 용어 설명과 3-legged 권한 코드 플로우를 설명하면 아래와 같다.

∙ 중요한 용어:

- Access Token: 사용자 대신 보호된 리소스에 액세스하기 위한 토큰

- Authorization Server: 사용자의 신원을 확인하고 액세스 토큰을 발급하는 서버

- Client: 보호된 리소스에 액세스하려는 앱

- Client ID: 앱의 고유한 공개 식별자

- Client Secret: 앱과 인증 서버만 알고 있는 비밀 문자열

- Credential Client: 클라이언트 비밀을 비밀로 유지할 수 있는 클라이언트, 일반적으로 서버에서 실행

- Public Client: 클라이언트 비밀을 유지할 수 없는 클라이언트, 모바일 또는 웹 앱 등

- Redirect URI: 사용자를 인증 후 앱으로 다시 리디렉션하는 URI

- Refresh Token: 현재 액세스 토큰이 만료되면 새로운 액세스 토큰을 얻기 위한 토큰

- Scope: 액세스 토큰에 부여된 액세스 범위를 제한하는 방법

∙ 권한 코드 플로우:

1) 사용자의 브라우저를 인증 서버로 리디렉션한다.

2) 사용자가 로그인하고 동의한다.

3) 권한 코드를 받는다.

4) 권한 코드를 클라이언트 자격 증명을 사용하여 액세스 토큰으로 교환한다.

5) 얻은 액세스 토큰을 사용하여 보호된 리소스에 액세스한다.

iTwin API의 토큰 관련 인증 API는 사용자의 인증 및 토큰 관리를 위한 다양한 작업을 수행하는 엔드포인트를 제공한다. 각 엔드포인트에 대한 간략한 설명은 다음과 같다.

∙ FR-05: POST gettoken(3-Legged-Token)

- 엔드포인트: {{baseImsUrl}}/connect/token

- 파라미터: client_id: 입력값(필수)

client_secret: 입력값(필수)

grant_type: authorization_code

code: 입력값(필수)

redirect_uri: 입력값(필수)

사용자가 OAuth 2.0 authorization code를 사용하여 3-legged 토큰을 얻기 위한 엔드포인트이다. 클라이언트 ID, 클라이언트 시크릿, authorization code 및 리다이렉트 URI를 전달하여 토큰을 얻을 수 있다.

∙ FR-05: POST refreshtoken

- 엔드포인트: {{baseImsUrl}}/connect/token

- 파라미터: client_id: 입력값(필수)

client_secret: 입력값(필수)

grant_type: refresh_token

refresh_token: 입력값(필수)

refresh 토큰을 사용하여 새로운 액세스 토큰을 얻기 위한 엔드포인트입니다. 클라이언트 ID, 클라이언트 시크릿, 및 refresh token을 전달하여 새로운 액세스 토큰을 얻을 수 있다.

∙ FR-05: GET user information

- 엔드포인트: {{baseApiUrl}}/users/me

- 헤더: Authorization: Bearer 입력값(필수)

현재 사용자의 정보를 가져오기 위한 엔드포인트이다. 인증된 사용자의 Bearer 토큰이 필요하다.

위 인증 API들을 사용하여 사용자의 인증을 처리하고, 새로운 토큰을 얻거나 사용자 정보를 확인할 수 있다.

4.2.2 뷰어 API

iTwin Viewer는 iModel을 상호 작용할 수 있는 기능을 제공하는 구성 가능한 iTwin.js 뷰어이다. 기본적인 기능을 제공하며 iTwin.js 확장을 통해 확장할 수 있다. iTwin Viewer에는 다음과 같은 여러 도구가 포함되어 있다(iTwin Platform Visualization API, 2023).

-요소를 선택, 숨기기, 강조하는 선택 도구

-기본 측정 도구

-기본 클리핑 도구

-이동, 확대/축소, 회전을 위한 기본 탐색 도구

-걷기 도구 및 카메라 도구

-기본 트리 보기 및 속성 그리드

-도구별 상황별 정보가 포함된 상태 표시줄

iModel을 보기 위한 앱을 만들기 위해 Create React App을 사용하면 단일 페이지 React 애플리케이션을 빠르게 설정할 수 있다. iTwin Viewer Create React App 템플릿은 iTwin Viewer를 기반으로 하는 애플리케이션을 위한 Create React App 템플릿을 제공한다. 아래 단계를 따라 애플리케이션을 개발하고 빌드할 수 있다.

개발 전제조건으로는 Node.js(LTS 버전)를 설치해야 한다. Node.js는 백엔드 JavaScript 런타임을 제공한다.

연결된 iModel를 iTwin Viewer에서 사용하기 위해 iTwinId(프로젝트, 자산 등의 iTwin을 가리키는 GUID)와 iModelId(iModel을 가리키는 GUID)가 필요하다.

사용자는 유효한 projectId와 iModelId를 .env 파일의 IMJS_ITWIN_ID 및 IMJS_IMODEL_ID 변수에 추가해야 한다. 이 ID는 프로젝트 및 iModels REST API를 사용하여 얻을 수 있다.

iTwin API의 뷰어 API는 프로젝트와 관련된 iModels 및 해당 iModel의 명명된 버전에 대한 정보를 가져오는 엔드포인트를 제공한다. 각 엔드포인트에 대한 간략한 설명은 다음과 같다.

∙ FR-06: GET Project iModels (Get iTwin iModels)

- 엔드포인트: {{baseApiUrl}}/imodels

- 파라미터: projectId: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-06: GET iModel Named Versions

- 엔드포인트: {{baseApiUrl}}/imodels/:imodelId/namedversions

- 파라미터: imodelId: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

이 API는 특정 프로젝트에 연결된 iModels의 목록과 특정 iModel의 명명된 버전 목록을 가져올 수 있다. 헤더에는 인증 토큰이 필요하며, 각 엔드포인트에 필요한 파라미터가 명시되어 있다.

4.2.3 이슈 API

Issue API는 프로젝트 문제의 관리와 추적을 위한 중앙 저장소를 제공한다. 이 API를 사용하면 팀 구성원은 이슈를 쉽게 관리, 할당하고 추적할 수 있으며 현장에서 이슈를 전달하여 프로젝트 관리자에게 정보를 제공하고 즉각적인 조치를 취할 수 있다.

이 API를 통해 다음과 같은 작업을 수행할 수 있다.

- 이슈에 대한 정보를 관리: 제목, 설명, 담당자, 상태 등의 정보 관리

- 댓글 추가: 이슈에 댓글을 추가하여 팀 구성원 간 의사소통

- 파일 및 첨부 정보 관리: 파일, 저장된 보기, 마크업 등의 추가 정보를 이슈에 첨부 가능

- 감사 추적: 문제에 대한 모든 변경 내역을 추적 및 제공

Issue API는 다음 제한 사항을 가지고 있다. 결과 목록을 반환하는 모든 API 호출은 최대 50개의 결과를 반환한다. 그러나 일부 엔드포인트는 추가 결과에 액세스할 수 있는 매개변수를 제공하여 페이징을 지원한다.

Issue API를 사용하여 프로젝트 문제를 가져오려면 "프로젝트 문제 가져오기" 엔드포인트를 사용하고, 특정 이슈에 대한 세부정보를 확인하려면 "이슈 세부 정보 가져오기" 엔드포인트를 사용하면 된다. 각 엔드포인트에는 필요한 권한과 인증이 필요하며 Bearer 토큰을 사용하여 인증한다.

iTwin API의 이슈 API는 프로젝트 내 이슈와 관련된 다양한 작업을 수행할 수 있는 엔드포인트를 제공한다. 각 엔드포인트에 대한 간략한 설명은 다음과 같다(iTwin Platform Issues API, 2023).

∙ FR-07: GET Project From Definitions

- 엔드포인트: {{baseApiUrl}}/issues/formDefinitions

- 파라미터: projectId: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-07: GET Project Issues

- 엔드포인트: {{baseApiUrl}}/issues

- 파라미터: projectId: 입력값(필수)

$top: 1

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-07: GET issue details

- 엔드포인트: {{baseApiUrl}}/issues/:issue

- 파라미터: issue: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-07: GET Issue Comments

- 엔드포인트: {{baseApiUrl}}/issues/:issue/comments

- 파라미터: issue: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-07: GET Issue Attachments

- 엔드포인트: {{baseApiUrl}}/issues/:issue/attachments

- 파라미터: issue: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-07: GET Workflow

- 엔드포인트: {{baseApiUrl}}/issues/workflows/:issueType

- 파라미터: projectId: 입력값(필수)

issueType: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-07: GET issue audit trail

- 엔드포인트: {{baseApiUrl}}/issues/:issue/auditTrailEntries

- 파라미터: issue: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

이 API는 특정 프로젝트의 이슈를 관리하고, 해당 이슈의 세부 정보, 댓글, 첨부 파일, 워크플로우, 오디트 트레일 등에 접근할 수 있도록 다양한 작업을 제공한다. 헤더에는 인증 토큰이 필요하며, 각 엔드포인트에 필요한 파라미터가 명시되어 있다.

4.2.4 파일전송 API

iTwin 스토리지 API는 클라우드에 저장된 프로젝트와 관련된 파일에 액세스하고 관리할 수 있는 기능을 제공한다. 이 API를 사용하면 다음과 같은 작업을 수행할 수 있다.

1) 폴더 계층 구조 관리

파일을 계층적으로 구성하기 위해 폴더를 사용하며 필요한 경우 하위 폴더를 추가하여 구조를 확장할 수 있다.

2) 루트 폴더

Storage API를 사용하는 진입점이며, 프로젝트와 관련된 파일을 관리한다. 이 루트 폴더에 대한 액세스 방법은 두 가지가 있다.

-프로젝트를 통해 루트 폴더 검색

-최상위 폴더 및 파일 가져오기

3) 파일 동기화

Storage API를 사용하여 파일을 iModel과 동기화할 수 있다.

4) 프로젝트별로 최상위 폴더 및 파일 가져오기

특정 프로젝트에 대한 최상위 파일과 폴더를 검색할 수 있는 API 엔드포인트가 제공된다.

API를 사용하려면 유효한 Bearer 토큰이 있는 Authorization 헤더가 필요하며, 사용자는 특정 프로젝트를 소유한 조직의 조직 관리자이거나 프로젝트 수준에서 할당된 Storage_read 권한을 가져야 한다.

iTwin API의 파일전송 API는 다양한 파일 및 폴더 관련 작업을 수행할 수 있는 다양한 엔드포인트를 제공한다. 각 엔드포인트에 대한 설명은 다음과 같다(iTwin Platform Storage API, 2023).

∙ FR-08: GET folder

- 엔드포인트: {{baseApiUrl}}/storage/folders/:folder

- 파라미터: folder: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-08: GET folders in folder

- 엔드포인트: {{baseApiUrl}}/storage/folders/:folderId/folders

- 파라미터: folderId: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-08: GET folders and files in folder

- 엔드포인트: {{baseApiUrl}}/storage/folders/:folderId/list

- 파라미터: folderId: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-08: GET Search for folders and files in folder

- 엔드포인트: {{baseApiUrl}}/storage/folders/:folderId/search

- 파라미터: name: 입력값(필수)

folderId: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-08: GET files in folder

- 엔드포인트: {{baseApiUrl}}/storage/folders/:folderId/files

- 파라미터: folderId: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-08: GET Download file

- 엔드포인트: {{baseApiUrl}}/storage/files/:fileId/download

- 파라미터: fileId: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-08: GET Get file

- 엔드포인트: {{baseApiUrl}}/storage/files/:fileId

- 파라미터: fileId: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

∙ FR-08: GET Get a link to the Storage

- 엔드포인트: {{baseApiUrl}}/storage

- 파라미터: projectId: 입력값(필수)

- 헤더: Authorization: Bearer 입력값(필수)

Content-Type: application/json

이 API는 프로젝트의 파일 및 폴더 구조에 접근하고, 검색하며, 파일을 다운로드하고 관리할 수 있도록 다양한 작업을 제공한다. 헤더에는 인증 토큰 및 컨텐츠 타입이 필요하며, 각 엔드포인트에 필요한 파라미터가 명시되어 있다.

4.3 AWS 클라우드 서버에서 실행

Figure 9는 아마존 AWS 클라우드 서버에서 개발 모듈을 배포하고, 동작하는 화면이다. 인증과 관련된 토큰 생성 및 Refresh 토큰 생성 모듈, Core API 모듈, 관리자가 설정한 주기에 따라 동작하는 파일 복제 서비스 및 Frontend 웹 애플리케이션 모듈이 배포되어 실행되는 것을 알 수 있다.

https://static.apub.kr/journalsite/sites/kibim/2024-014-01/N0430140102/images/kibim_14_01_02_F9.jpg
Figure 9.

MSA based spring boot module running on AWS

이를 통해, 상용 BIM 플랫폼에 저장되어 있는 1) 이슈정보와 같은 메타 데이터 교환, 2) 모델 뷰어 가시화, 3) 원본 모델 파일 전송을 외부 서비스와 연계할 수 있는 것을 확인하였다.

5. 결론 및 향후 연구방향

본 연구는 한국형 BIM 협업 플랫폼과 상용 BIM 플랫폼 사이에 인증, 모델 뷰어, 메타 데이터(이슈) 및 파일전송 연계 개발을 목표로 하였으며, 각 상용 플랫폼 연계 API별로 실제 응용개발을 진행하였다. 상용 BIM 플랫폼의 선정은 건축, 건설, 엔지니어링 설계 및 시공에서 대표적으로 가장 많이 사용되는 Autodesk의 BIM 360 (ACC) 및 Bentley Systems의 ProjectWise 365를 대상으로 하였으며, Forge (APS) API 및 iTwin API를 사용하여 기능 정의에서 요구되는 API를 중점으로 연계 프레임워크 및 웹 응용 개발을 진행하였다.

본 연구의 결론은 다음과 같다. 첫째, Autodesk BIM 360 상용 BIM 플랫폼 연계를 위한 Forge API 기술을 활용하여 연계 서비스 프레임워크 개발을 Java Spring Boot과 HTML Web Viewer 기술로 요구 기능(인증, 모델뷰어, 이슈 가져오기, 파일전송)을 구현하였으며, 대용량 파일전송을 위한 스케쥴러와 관리자 화면이 개발되었다.

둘째, ProjectWise 365 상용 BIM 플랫폼 연계를 위한 iTwin API 기술을 활용하여 인증, 모델뷰어, 이슈 및 대용량 파일전송 모듈이 동일하게 개발되었다.

셋째, 위 연계 모듈들은 독립 실행 가능한 MSA (Micro Service Architecture) 형태의 확장 가능한 연계 서비스 프레임워크로 개발되었다.

향후 연구는 개발된 프레임워크의 Open API 서비스를 위해, OAuth 인증모듈 적용, 양방향 통신, BIM 협업에 필요한 다양한 확장 개발이 필요할 것으로 판단된다.

감사의 글

본 연구는 국토교통부 BIM 기반 인프라 설계 프로세스 디지털 협업 체계 개발사업(R&D) 연구비 지원에 의해 수행된 연구임. 과제번호: RS-2022-00143371

References

1
APS Authentication (OAuth) API (2023). https://aps.autodesk.com/en/docs/oauth/v2/developers_guide/overview (Nov, 07, 2023)
5
Autodesk Platform Services (2023). https://aps.autodesk.com (Nov, 07, 2023)
6
Bentley Systems iModels (2023). https://www.bentley.com/software/imodels (Nov, 07, 2023)
7
iTwin Platform (2023). https://developer.bentley.com (Nov, 07, 2023)
8
iTwin Platform Authorization API (2023). https://developer.bentley.com/apis/overview/authorization (Nov, 07, 2023)
9
iTwin Platform Issues API (2023). https://developer.bentley.com/apis/issues-v1 (Nov, 07, 2023)
10
iTwin Platform Storage API (2023). https://developer.bentley.com/apis/storage (Nov, 07, 2023)
11
iTwin Platform Visualization API (2023). https://developer.bentley.com/apis/visualization (Nov, 07, 2023)
페이지 상단으로 이동하기