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 8533
공지 ER/Studio Team Server(ER/Studio 용 웹포탈) 설치 및 사용자 가이드 손보라 2014.07.15 39730
공지 Repository 설치 및 사용 가이드 손보라 2014.05.27 50500
공지 ER/Studio Data Architect 설치 및 사용자가이드 관리자2 2012.01.27 52906
122 데이터아키텍트가 비즈니스 업무부서와 협업하기 위해 알아야 할 5가지 file 문효섭 2012.03.27 6435
121 DB Optimizer 에디션 선택 가이드(에디션 별 차이) file 문효섭 2012.03.28 6203
120 [매크로활용] 도메인 일괄 생성 file 문효섭 2012.04.10 9974
119 [매크로활용] 도메인 일괄 바인딩 file 문효섭 2012.04.10 13036
118 [매크로활용] 도메인 바인딩 편의 제공 file 문효섭 2012.04.10 9156
117 [매크로활용] 산출물 자동화(테이블 정의서) 문효섭 2012.04.10 16559
116 [매크로활용] 용어사전 활용 문효섭 2012.04.10 11936
115 [매크로활용] 공용테이블을 제외하고 DDL문 생성 문효섭 2012.04.10 9899
114 [매크로활용] PK 일괄 명명 file 문효섭 2012.04.10 9034
113 [매크로활용] FK 일괄 명명 file 문효섭 2012.04.10 10746
112 [매크로활용] Index 일괄명명 file 문효섭 2012.04.10 10389
111 [매크로활용] 메타데이터를 엑셀로 file 문효섭 2012.04.10 11502
110 [매크로활용] 엔티티, 속성, 관계, 뷰 정의 일괄 임포트 file 문효섭 2012.04.10 11732
109 [매크로활용] 테이블 소유자 일괄 수정 file 문효섭 2012.04.10 10906
108 [매크로활용] 운영DB의 Comment를 한글명(논리명)으로 일괄 변환 [1] file 문효섭 2012.04.10 12522
107 [매크로활용] 한글명(논리명)을 Comment(Definition)에 반영하기 문효섭 2012.04.10 11078
106 [매크로활용] 클릭 한번으로 시스템 컬럼 일괄반영 문효섭 2012.04.10 10191
105 [매크로활용] 매크로 스크립트 Sample 문효섭 2012.04.10 9974
» [API활용] 자동 조작 API 사용하기 [1] file 문효섭 2012.04.10 7449
103 유용한 단축키 문효섭 2012.04.23 5034