ER/Studio의 장점 중 하나는 잘 정리된 API 입니다.
COM 임포트를 하면 200여가지의 다양한 컴포넌트를 이용한 프로그래밍이 가능합니다.

여기에서는 델파이(Delphi)를 기준으로 API 임포트와 간단한 프로그래밍 예제를 제시합니다.


 ER/Studio의 자동 조작 API 도움말 파일명은 AIRef.chm 이며 ER/Studio 설치 폴더에 있습니다. 

ER/Studio 의 자동조작 API  Delphi 2009 에서 사용하기 - Getting Started

Pawel Glowacki 작성 (블로그 : http://blogs.embarcadero.com/pawelglowacki/2008/08/13/38513

( 역자 주 : 2008  8 월에 작성된 아티클 이지만 , 2011  5 월 현재 버전인 ER/Studio XE  Delphi XE 에서도 여전하므로 번역함 )

지난달 (2008  7  ) 토론토의 엠바카데로 기술 킥오프 행사에서는 소프트웨어 컨설턴트 , 제품 책임자를 비롯한 모든 엔지니어들이 모여 코드기어 개발툴과 데이터베이스 기어 DB 툴에 대한 지식 , 계획 , 제품 , 로드맵에 대해 공유하였다 . 무엇보다 중요한 것은 통합으로 인해 새롭게 더욱 커진 기술팀의 팀워크를 가족처럼 다지는 일이었다 . 킥오프 행사 후 나는 바로 여름 휴가를 위해 크로아티아로 떠나야 했기에 이 아티클을 다소 늦게 올리게 되었다 .

아마 델파이와 C++ 빌더에서 95% 는 어떤 형태이든 데이터베이스를 사용하고 있을 것이다 . 비록 여러분이 원하는 데이터베이스 애플리케이션 개발에 필요한 모든 것을 델파이가 이미 제공하고 있지만 , 델파이는 ER/Studio 처럼 크로스 - 플랫폼 데이터베이스 모델링을 위한 모든 기능을 제공하기 위해 만들어진 DB 모델링 도구는 아니다 . 따라서 지금까지 나는 데이터베이스 생성 작업을 위해서 써드 파티 프로그램을 사용해왔다 . 내가 본 하지만 ER/Studio 의 기능은 정말 인상적이었다 .

나는 코드기어 / 엠바카데로에 합류하기 전에 약 5 년간 폴란드에서 가장 큰 시중 은행의 재무 관리 팀에서 사용하는 커다란 DW( 데이터 웨어하우스 ) 의 데이터를 Excel 매크로 자동조작 API를 이용하여 보기 좋은 스프레드 시트로 만드는 델파이 3~5 애플리케이션을 구축 관리하였다 . 당시 일부 동료들은 델파이를 이용하여 엄청난 규모로 엑셀 파일을 생성하는 것이 충분하지 않을 수도 있다고 우려했었다 . :-)

내가 델파이로 이런 자동조작 코드를 쓰게 된 것은 Charlie Calvert ( 지금은 마이크로소프트에서 C# Evangelist 로 재직중 ) 가 쓴 "Delphi and Microsoft Office: Automating Excel and Word"라는 글 덕분이다 . 당시 또 하나의 좋은 소스는 Binh Ly  "Techvanguards" 사이트였다 . 요즘에는 델파이와 Automation 자동조작 자료에 대한 링크가 "OLE/COM/DCOM/Automation/ActiveX - Delphi knowledge base" 에 잘 정리되어 있다 .

코드기어와 데이터베이스기어의 제품들이 서로 밀접하게 통합되는데는 시간이 걸릴 것이다 . 하지만 , 지금 당장 할 수 있는 것들도 있다 . ER/Studio  OLE Automation 을 통해 자동조작 될 수 있고 , 이미 ER/Studio 의 풍부한 오브젝트 모델을 잘 활용한 VBA 매크로 스크립트 코드도 많다 . 지금 바로 델파이를 이용해서 ER/Studio 의 자동조작 API 를 시작하지 못할 이유가 없다 .  

이 글에서는 델파이 VCL  Win32 애플리케이션에서 ER/Studio 를 바로 구동하는 예제를 스텝 - 바이 - 스텝으로 보여주고자 한다 . 딱히 멋진 내용은 없으나 , 많은 유사한 연동 요구 사항에 대한 시작점이 되기에는 충분할 것이다 . 예제는 ER/Studio 7.6.0  Delphi 2009 Tiburon 을 사용하여 진행된다 (2011 년 현재의 Delphi XE  ER/Studio XE 에서도 유효함 , 또한 마이크로소프트 C#  VB 등을 통해서도 연동됨 : 역자 주 

델파이의 "Components" 메뉴의 "Import Component"   마법사는 COM 타입 라이브러리를 가져오면 해당 타입 라이브러리에 정의된 클래스들을 웹핑 (wrap)  VCL 컴포넌트를 만들어 준다 .만약 "Tool Pallette" 에 설치하고자 한다면 "Package" 를 생성한 후 마법사를 통해 이미 생성된 델파이 유닛 (unit) 에 추가하고 , 개발툴에 패키지를 설치하기만 하면 된다 . Delphi 2009 "Import Component" 마법사는 예전 보다 더욱 쉬워졌다 .  ( Chris Bensen 이쓴 블로그 "Tiburon Sneak Peek: Import Component Wizard" 참조 ). 마법사에서 패키지 프로젝트까지 바로 생성해주기 때문이다 . 또한 "Registered Type Libraries" 탭에서 검색 기능을 제공하기 때문에 등록된 타입 라이브러리를 찾기 위해 스크롤 할 필요가 없다 . ( 대부분 많은 타입 라이브러리를 추가하므로 스크롤 목록이 매우 길 것이다 )

델파이로 ER/Studio 의 타입 라이브러리 임포트 (Import) 하기

먼저 ER/Studio  RAD Studio 가 컴퓨터에 설치되어 있는지 확인한다 . 그리고 "CodeGear RAD Studio" 를 시작하고 메인 메뉴의 "Components" 에서 "Import Component" 를 선택하면 아래와 같은 "Import Component" 마법사가 나타난다 .

ImportComponentMenu.png

맨 처음 나타나는 "Personality, Framework and Platform" 탭에서 "VCL for Delphi Win32" 를 선택하고 "Next >>" 버튼을 클릭한다 . 만약 "Delphi 2009" 바로가기를 통해서 RAD Studio 를 실행하면 (IDE 에서 델파이로 이미 지정되어 있다면 ) 아래 화면은 생략된다 .

  ImpComp1.png

다음 탭에서 "Import a Type Library" 옵션을 선택하고 "Next >>" 를 클릭한다 .

ImpComp2.png

다음은 "Registered Type Libraries" 탭이다 . 여기에서 Delphi 2009 에서 새로 추가된 검색 기능을 활용하여 "ER/Studio Type Library" 의 위치를 찾는다 . "C:\Program Files\Embarcadero\ERStudioX.X\ERSTUDIO.exe" 파일이다 .

ImpComp3.png   

다음 탭에서 Palette Page 의 이름을 지정한다 . 이곳에 컴포넌트들이 설치되게 된다 . 여기에서는 "ER Studio" 라고 입력하겠다 ( 원하는 이름을 넣으면 된다 ). "Generate Component Wrappers" 가 체크되었는지를 확인하고 "Next>>" 를 클릭한다 .

ImpComp4.png

다음 탭에서는 Delphi 2009 에서 추가된 옵션인 "Install to New Package" 를 선택한다 . 그러면 , 새 패키지 프로젝트를 만드는 단계를 직접 하지 않아도 된다 .

ImpComp5.png

다음 화면에서 새 패키지 프로젝트의 이름과 위치를 지정하면 설치된 패키지 목록에 추가된다 . 여기에서는 "D2009ERS76" 라고 프로젝트 이름을 주고 Delphi 2009 demos 폴더를 지정하였다 ( 역시 원하는 데로 지정하기 바란다 )

마법사의 마지막 화면에서 정보를 확인하고 "Finish 버튼을 클릭하면 , 새로운 "Package" 프로젝트가 만들어지고 여기에 ER/Studio 타입 라이브러리가 임포트되어 the "ERStudio_tlb.pas" 델파이 유닛이 만들어진다 . 이제 "File \ Save" 메뉴나 "Ctrl+S" 를 통해서 프로젝트를 저장한다

ImpComp6.png

우선 생성된 유닛의 "Structure" 뷰의 "Errors" 섹션에서 "//" 로 시작되지 않게 시작된 주석에 대한 에러가 몇 개 보일 것이다 . 이 에러는 간단히 고칠 수 있다 . 주석 처리되어야 함에도  //  로 시작되지 않는 해당 코드 라인을 선택한 후 "Ctrl+/" 을 통해서 주석 처리하면 된다 . 문제가 되는 소스 코드 라인을 파악하는 가장 빠른 방법은 프로젝트를 컴파일 해 보는 것이다 . 프로젝트를 컴파일 하려면 메뉴에서 "Project \ Compile" 을 클릭하거나 Project Manager" 의 해당 프로젝트에서 오른쪽 클릭을 한 후 "Compile" 을 선택하거나 "Ctrl+F9" 를 누르면 된다 . 문제가 되는 모든 코드 라인을 주석 처리하고 나면 "Done: Compiled" 메시지가 표시된다 .

   ImpComp7.png   

IDE 에 패키지를 설치하기 위해 한가지 더 알아둘 것이 있다 .

"Tool Palette" 에는 동일한 이름을 가진 컴포넌트가 허용되지 않는다 . 델파이에 이미 "TShape" 라는 컴포넌트가 있기 때문에 ER/Studio  "TShape" 컴포넌트는 동일한 이름은 사용될 수 없다 . ER/Studio 패키지를 "Tool Palette" 로 가져오려면 생성된 "TShape" 컴포넌트의 이름을 "TShapeERS" 처럼 다른 이름으로 바꾸어야 한다 . 이름 바꾸기는 델파이의 리팩토링 기능 중 하나인 "Rename" 을 사용하면 매우 간단하다 .

먼저 , 생성된 유닛에서 "TShape = class(TOleServer)" 선언부로 가보자 . 여기에서 "Ctrl+F" 를 통해 구문 검색 대화상자를 띄우고 "TShape = class" 를 입력한 후 OK 를 클릭한다 . "TShape"식별자에 커서를 올려 두고 , 오른쪽 클릭하여 "Refactoring \ Rename" 옵션을 선택하면 Rename" 대화상자가 나타난다 ( "Shift+Ctrl+E" 을 해도 된다 ).

ImpComp8.png

"New name"  "TShapeERS" 를 입력하고 OK 를 클릭하면 "Refactoring" 탭이 표시되면서 리팩토링의 영향을 받는 모든 위치가 나열된다 . 루비 큐브 모양의 아이콘을 클릭하거나 "Ctrl+R"를 누르면 이름바꾸기 리펙토링이 수행되고 모든 TShape"  "TShapeERS" 로 바뀌게 된다 .

ImpComp9.png   

이제 "Tool Palette" 에 컴포넌트를 설치할 준비가 되었으므로 "Ctrl+S" 를 통해 저장한다  Project Manager 창에서 프로젝트명 ("D2009ERS78.bpl") 을 오른쪽 클릭하고 "Install" 을 선택한다 .프로젝트가 컴파일되어 패키지가 성공적으로 설치되었으며 , 아래와 같은 모든 컴포넌트를 활용할 수 있다는 확인 창이 표시된다 .

RegComps.png

엄청나게 많은 컴포넌트를 볼 수 있다 . 아마 208 개의 컴포넌트가 설치 될 것이다 . 이만큼 많은 자동 조작이 가능하다는 의미이다 ;-)

개발툴에 ER/Studio 타입 라이브러리를 임포트하는 작업이 완료되었다 . 이제 델파이 VCL Forms 애플리케이션을 만들어 보자 . "File \ Close All" 를 통해 패키지 프로젝트를 닫는다 .

간단한 델파이 ER/Studio Automation 자동조작 예제

델파이 애플리케이션에서 ER/Studio 의 자동조작  구현해 보자 . "File \ New \ VCL Forms Application - Delphi" 를 선택하여 빈 애플리케이션을 생성한다 . "File \ Save All" 을 선택하여 메인 폼에 원하는 이름을 지정한다 . 여기에서는 프로젝트 명을 "ERSVersionInfo" 로 하고 메인폼은 "Unit1" 으로 그냥 두겠다 .

"Tool Palette"  "ER Studio" 탭을 펼치면 폼에서 사용될 수 있는 모든 새 컴포넌트가 표시된다 . 이제 무엇부터 시작해야 할까 ?

GenComps.png

ER/Studio 설치 폴더에는 우리가 바로 개발하기 위해 필요한 모든 정보가 들어있는 "ERStudio 자동조작 API 레퍼런스 (ERStudio Automation Interface Reference ) " (AIRef.chm) 도움말 파일이 있다 . ER/Studio  automation 자동조작 API 는 외부 애플리케이션이나 ER/Studio 내부의 매크로를 통해서 활용될 수 있다 . 외부 애플리케이션의 경우 Application" 오브젝트의 인스턴스를 생성하는 것부터 시작된다 .

AIRef.png

폼에서 간단히 "TApplication" 컴포넌트를 끌어다 놓는 것에서부터 시작해보자 . Tool Palette   의 상단에 "Application" 이라고 타이핑하면 쉽게 "TApplication" 컴포넌트를 찾을 수 있으며 , 더블 클릭하면 폼에 추가된다 . 설치된 ER/Studio 의 버전을 표시하는 간단한 예제를 만들어 보자 .

Import Component"   를 통해 생성된 모든 웹퍼 컴포넌트들은 "TOleServer" 클래스로부터 상속받으며 디자인 타임 ( 개발 환경 ) 에서 Object Inspector 에 오픈된 속성이 나타난다 ."TApplication” 컴포넌트를 폼 위에 떨어뜨리고 나서 "AutoConnect"  "AutoQuit"  "false" 에서 "true" 로 바꾸어 보자 . 이렇게 하면 델파이 애플리케이션이 시작하거나 멈출 때 ER/Studio 도 같이 시작되고 멈추게 된다 .

 

DemoApp.png

폼에 ER/Studio 의 버전을 표시하려면 , 버튼을 하나를 끌어다 놓은 후 , OnClick" 이벤트에 간단히 소스 한 줄을 추가하면 된다 .

DemoAppCode.png

이제 다되었다 ! 녹색 화살표 아이콘을 ( 또는 "F9") 을 통해서 애플리케이션을 구동하면 버튼 하나가 달린 간단한 폼을 보여질 것이다 . 이 델파이 애플리케이션이 시작되면 ER/Studio 도 자동으로 같이 시작된다  "Show Version" 버튼을 클릭하면 아래와 같은 메시지가 보여진다 .

versionmsg.png

델파이 애플리케이션을 닫으면 , ER/Studio 도 같이 닫힌다 .

요약

델파이는 네이티브 윈도우 애플리케이션을 작성하는 최고의 도구이다 . COM 자동조작 지원은 Delphi 3 이후 십수년간 지속적으로 향상되고 있다 . ER/Studio 는 외부 애플리케이션에서ER/Studio 의 기능을 활용할 수 있도록 매우 풍부한 오브젝트 모델을 오픈하고 있다 . 이 아티클에서는 ER/Studio 타입라이브러리를 델파이로 임포트하는 방법과 매우 간단한 애플리케이션 생성을 해 보았다 . 이것이 여러분이 자동조작 요구사항을 구현할 때 좋은 시작점이 되기를 바란다 .

ER/Studio VCL 컴포넌트 웹퍼 ( wrapper ) 가 포함된 델파이 패키지는 Code Central 에서 다운받아서 설치할 수 있다 .

.

Go 델파이 ! Go ER 스튜디오 ! Go 엠바카데로 !

번호 제목 글쓴이 날짜 조회 수
공지 [기술 보고서 다운로드] IDC Technology Spotlight: 모델 기반 데이터 설계를 통한 비즈니스 민첩성 확보 방안 관리자 2015.08.24 8326
공지 ER/Studio Team Server(ER/Studio 용 웹포탈) 설치 및 사용자 가이드 손보라 2014.07.15 39527
공지 Repository 설치 및 사용 가이드 손보라 2014.05.27 50258
공지 ER/Studio Data Architect 설치 및 사용자가이드 관리자2 2012.01.27 52671
122 [기술백서] 보다 빠른 SQL튜닝과 분석을 위한 새로운 툴 관리자 2014.11.12 1414
121 ER/Studio 기본 가이드 #8. 데이터베이스로부터 데이터모델 리버스엔지니어링하기(Reverse Engineer) 손보라 2014.08.08 1428
120 [기술백서] 업무 수행 능력이 뛰어난 DBA 관리자 2014.11.12 1492
119 DBArtisan과 RapidSQL XE6에서 PostgreSQL 지원!! file 손보라 2014.09.18 1558
118 ER/Studio XE6에 새로운 기능! file 손보라 2014.09.18 1563
117 ER/Studio 기본 가이드 #7. 모델의 변경사항을 데이터베이스에 반영하기(Forward Engineer) 손보라 2014.08.08 1617
116 [기술백서] DB툴 선택시 고려사항 top10 관리자 2014.11.12 1636
115 [기술백서] 성능 좋은 SQL 작성법 관리자 2014.11.12 1654
114 DB Power Studio #2. DB Change Manager 둘러보기 [1] 손보라 2014.08.12 1658
113 [기술백서] ER/Studio 9.5 vs. ERwin r9 관리자 2014.09.26 1679
112 [기술백서] 하루에 1시간을 벌 수 있는 10가지 방법 관리자 2014.11.12 1824
111 [기술백서] 데이터 설계 분석: 상향식(bottom-up) 설계 분석과 표준화 관리자 2014.09.26 1895
110 ER/Studio DA에서 ODBC를 이용한 포워드 엔지니어링 file 손보라 2014.06.25 2053
109 20140214 "데이터거버넌스: 비즈니스 정보와 IT 데이터의 연결" 발표자료 관리자 2014.03.12 2244
108 [기술백서] XML, NoSQL, 빅데이터, 클라우드로 옮겨가는 시장 상황 속, 데이터모델링 여전히 중요한가 관리자 2014.09.26 2393
107 ERwin으로 작성된 모델을 ER/Studio로 마이그래이션하기 file 손보라 2015.01.12 2531
106 Oracle ACE Director가 말하는 Rapid SQL의 Auto Replace 기능 file 손보라 2014.10.09 2671
105 Universal Mapping 2. 실제로 동일한 엔티티가 여러 다른 파일에 다른 엔티티명으로 존재하는 경우 엔티티 맵핑 손보라 2014.01.25 2702
104 Universal Mapping 1. 실제로 동일한 엔티티가 서로 다른 파일에 다른 엔티티명으로 존재하는 경우 엔티티 맵핑 손보라 2014.01.25 2750
103 Oracle ACE Director가 말하는 Rapid SQL의 쿼리빌더 팁 file 손보라 2014.10.09 2779