이 기사는 웹 프로그래밍 기술(HTML, JavaScript, Ajax, XML, XSLT)의 기본적인 이해를 갖추고 Dojo JavaScript 툴킷으로 위젯을 개발한 경험이 있는 개발자를 대상으로 한다. 샘플 위젯을 배치하려면 IBM WebSphere® Application Server에서 웹 애플리케이션 WAR을 배치하기 위해 필요한 기본적인 관리 기술과 권한이 필요할 것이다. Business Glossary REST API는 IBM InfoSphere 제품의 지원되는 일부이다. 이 기사에서의 단계를 따라 개발하는 다른 클라이언트측 컴포넌트는 일반 웹 프로그래밍 기술을 기반으로 하지만, IBM 제품의 일부로 공식적으로 지원되지 않는다.
IBM InfoSphere Business Glossary를 통해 사용자는 엔터프라이즈 어휘 및 분류 시스템을 작성하고 관리하며 공유할 수 있다. Business Glossary는 서비스를 기반으로 하는 REST(Representational State Transfer)를 사용하는 API를 통해 풍부한 기능을 드러낸다. REST는 애플리케이션을 신속하게 빌드하기 위해 Web 2.0 기술의 기초적인 이해를 갖춘 개발자를 허용하는 웹 서비스를 설계하기 위한 열린 아키텍처형 스타일이다.
이 기사는 어느 웹 페이지에서나 임베드할 수 있는 REST 기반 컴포넌트를 빌드하는 방법에 대한 단계별 지침을 제공한다. 샘플 컴포넌트는 BGTerm Finder 위젯이라고 한다. 이는 회사의 비즈니스 어휘를 신속하게 검색하고 수정할 수 있는 경량형 도구이다.
컴포넌트를 사용할 수 있는 방법을 시연하는 두 가지 샘플 비즈니스 시나리오는 다음과 같다.
- 주제 전문가인 Tom은 자신의 회사의 비즈니스 용어집을 검토하고 Actual Net Present Value 용어의 정의가 정확하지 않음을 확인하고 놀랐다. 그는 즉시 BGTerm Finder widget 위젯을 사용하여 해당 용어를 검색하고 실시간으로 이를 편집하여 정의를 수정한다.
- 영업 담당자인 Lorraine은 비즈니스 인텔리전스 보고서를 읽는 중에 Actual Net Present Value라는 구절을 보게 되었다. 그녀는 이 용어가 자신의 회사에서 구체적으로 어떻게 정의되고 있는지 이해해야 한다. 그녀는 BGTerm Finder 위젯을 사용하여 해당 용어를 검색하고 그 문맥과 정의를 조사한다.
그림 1은 BGTerm Finder 위젯의 두 가지 스크린샷을 보여준다. 첫 번째 스크린샷은 사용자가 "act" 문자열에서 검색하여 Actual Net Present Value 용어의 자세한 보기를 열었음을 보여준다. 두 번째 스크린샷은 사용자가 용어를 편집하기 위해 아이콘을 클릭하였음을 보여준다.
그림 1. BGTermFinder 위젯 스크린샷
Business Glossary REST API를 통해 클라이언트 애플리케이션은 비즈니스 용어집 내용을 액세스하고 작성할 수 있다. REST는 다른 분배된 기술에 대해 제공하는 몇 가지 장점 때문에 API를 위해 선택한 기술이다. 가장 중요한 점은 경량이고 상호운용 가능하다는 것이다.
API는 자원으로 용어집 내용을 노출한다. 이러한 자원은 URI를 사용하여 처리되고 서버에 상주하는 XML 스키마로 정의되는 XML 문서로 표현된다.
Business Glossary REST API로 수신할 수 있는 자원은 다음 두 가지 주요 세트로 구분된다.
- 엔티티 자원 세트 — 이 자원 세트는 카테고리, 용어, 스튜어드(steward), 사용자 정의 속성 및 추가 자산과 같이 Business Glossary 엔티티에 대한 자세한 정보가 들어있다. 이러한 모든 엔티티는 Read API로 지원된다. 카테고리, 용어 및 사용자 정의 속성은 Write API와 해당 작성, 업데이트 및 삭제 기능으로도 지원된다. 자세한 정보는 REST API 문서를 참조한다.
- 조작적 자원 세트 — 이 자원 세트는 다음과 같이 클라이언트 애플리케이션을 개발하는 데
사용이 편리한 일반적 조작을 지원한다.
- 자동완성. 접두부를 고려하여 용어집의 완성 제안(와일드카드가 지원됨).
- 어디서나 검색. IBM InfoSphere Business Glossary Anywhere에 사용된 것과 유사한 검색 알고리즘(와일드카드는 지원되지 않음).
- 검색. 이 조작은 특정 패턴에 대한 용어집의 검색을 사용한다. 사용자는 검색된 기능과 클래스 및 결과의 순위 지정을 제어할 수 있다(와일드카드가 지원됨).
API 트랜잭션은 HTTP 요청 및 응답을 구성한다. 다른 조작들은 요청에서 HTTP 메소드의 다른 종류를 요청한다. URI와 HTTP 메소드의 결합은 어떠한 조작이 발생할 지를 정의한다. REST 인터페이스는 다음 HTTP 메소드를 제공한다.
- POST— 자원 작성
- GET— 자원 읽기
- PUT— 자원 업데이트
- DELETE— 자원 삭제
샘플 BGTerm Finder 위젯은 웹 애플리케이션에 대해 Model-View-Controller(MVC) 아키텍처형 패턴을 따른다. 각 계층과 연관된 기술의 개요는 다음과 같다.
- Model(XML) — 올바르게 정의된 API XML 자원이 데이터 모델을 표현한다.
- View(HTML+CSS) — 위젯의 HTML은 구조를 제공하는 반면 CSS는 스타일링을 처리한다.
- Controller(JavaScript) — 위젯의 JavaScript 코드는 다음을 수행한다.
- 사용자 이벤트를 처리한다
- AJAX를 사용하여 자원을 REST API 안밖으로 전달한다
- XSL 변환을 사용하여 XML 자원을 HTML 단편으로 변환한다
- 이러한 단편들을 DOM에 삽입한다
- 사용자 인터페이스를 조작한다
그림 2. 위젯 설계
위젯 모델은 REST API로 리턴되는 XML 자원이다. 이러한 자원은 REST API와 함께 서버에 상주하는 XML 스키마로 정의되는 XML 문서이다. 샘플 위젯은 searchResource 및 termResource 자원을 사용한다.
목록 1. 검색 자원 모델 XML
<?xml version="1.0" encoding="UTF-8"?> <searchResource xmlns="http://www.ibm.com/is/bg/rest" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com/is/bg/rest http://bghost:9080/bgrestapi/xsd/searchResource.xsd"> <searchInput> <pattern>sa*</pattern> <queriedClasses> <value>term</value> </queriedClasses> <queriedFeatures> <value>name</value> </queriedFeatures> <status> <value>ACCEPTED</value> <value>STANDARD</value> <value>CANDIDATE</value> <value>DEPRECATED</value> </status> <stopAfterFirstFieldMatch>false</stopAfterFirstFieldMatch> </searchInput> <results> <searchResultItem> <glossaryObject class="term"> <name>Satisfaction Rating Date</name> <uri>bgrestapi/term/b1c497ce.e1b1ec6c.232160ba.» 06b1b806-d928-48d3.b91b.222f3e221b7c</uri> <context> <category> <name>Customer</name> <uri>bgrestapi/category/b1c497ce.» ee6a64fe.f1020ba.46e95446-d922-42ba.9ae4.2440d424e432</uri> </category> </context> </glossaryObject> <foundInFields> <field name="name" value="Satisfaction Rating Date"/> </foundInFields> <rank>1</rank> </searchResultItem> </results> <pagination> <pageNumber>1</pageNumber> <pageSize>10</pageSize> <numberOfPages>1</numberOfPages> <numberOfResults>1</numberOfResults> </pagination> </searchResource> |
목록 2. 용어 자원 모델 XML
<?xml version="1.0" encoding="UTF-8"?> <termResource xmlns="http://www.ibm.com/is/bg/rest" .» xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" » xsi:schemaLocation="http://www.ibm.com/is/bg/rest .» http://bghost:9080/bgrestapi/xsd/termResource.xsd"> <term> <name>Satisfaction Rating Date</name> <uri>bgrestapi/term/b1c497ce.e1b1ec6c.232160ba.» 06b1b806-d928-48d3.b91b.222f3e221b7c</uri> <context> <category> <name>Customer</name> <uri>bgrestapi/category/b1c497ce.ee6a64fe.f1020ba.» 46e95446-d922-42ba.9ae4.2440d424e432</uri> </category> </context> <authorization>RWD</authorization> <createdBy> <uri>bgrestapi/user/bob</uri> <id>builder</id> </createdBy> <createdOn>2009-05-04 04:01:59 PDT</createdOn> <modifiedBy> <uri>bgrestapi/user/bgauthor</uri> <id>bgauthor</id> </modifiedBy> <modifiedOn>2009-07-08 07:28:42 PDT</modifiedOn> <assignedTerms/> <shortDescription>The date on which the modern Satisfaction Rating was .» assigned to the Customer.</shortDescription> <longDescription>The date on which the Satisfaction Rating was assigned.» to the Customer.</longDescription> <notes/> <customAttributes/> <steward class="user"> <name>Jeff Blight Jeff Blight</name> <uri>bgrestapi/user/Jeff+B</uri> <id>Jeff B</id> </steward> <parentCategory> <name>Customer</name> <uri>bgrestapi/category/b1c497ce.ee6a64fe.f1020ba.» 46e95446-d922-42ba.9ae4.2440d424e432</uri> </parentCategory> <status>STANDARD</status> <abbreviation/> <additionalAbbreviation/> <example/> <usage/> <isModifier>false</isModifier> <type>NONE</type> <replacedByTerm/> <referencedByCategories/> <relatedTerms/> <replacedTerms/> <synonyms/> <isPreferredSynonymInGroup>false</isPreferredSynonymInGroup> <preferredSynonym/> <assignedAssets/> </term> </termResource> |
이전 섹션에서 설명한 XML 모델은 HTML 단편으로 변환되어 위젯 DOM으로 삽입된다.
어느 웹 페이지에서나 임베드될 수 있는 위젯을 개발하는 중이기 때문에, 브라우저 자원을 절약하고 포함하는 문서와의 충돌을 방지하려고 한다. HTML 및 CSS 코드가 이를 달성하는 방법의 예제는 다음과 같다.
- ID가 아니라 단편 삽입이 용이하도록 Dojo 접속 지점 및 접속 이벤트를 활용한다
- 특정 접두부가 있는 고유 CSS 클래스 이름을 사용한다
- HTML 공간을 최소화하기 위해 Dojo JavaScript 툴킷을 사용한다
목록 3. 위젯 HTML 템플릿
<div class="bgTermFinderWidget_main"
dojoAttachEvent="onclick : clickHandler">
<h1>InfoSphere <a dojoAttachPoint="bg_link" href="#"
target="_blank" title="Go To Business Glossary Browser">Business
Glossary</a> : Term Finder <img class="bgTermFinderWidget_logo"
src="${imagesPath}/ibm_logo_white.gif" /></h1>
<div class="bgTermFinderWidget_ds">
<div class="bgTermFinderWidget_search">
<div class="bgTermFinderWidget_tempText" dojoAttachPoint="tempText"
dojoAttachEvent="onclick: trySetFocus">Start typing to search...</div>
<input type="text" dojoAttachPoint="searchinput"
dojoAttachEvent="onblur:stopTimer,onfocus:startTimer" value="" /> <img
class="bgTermFinderWidget_searchloader" dojoAttachPoint="searchloader"
src="${imagesPath}/loading.gif" style="display: none" /></div>
<div class="bgTermFinderWidget_resultsPanel">
<div class="bgTermFinderWidget_infoHolder" dojoAttachPoint="infoHolder">
<span class="bgTermFinderWidget_info" dojoAttachPoint="info"></span></div>
<div class="bgTermFinderWidget_searchResults"
dojoAttachPoint="searchResults">
<div class="bgTermFinderWidget_showmore" /></div>
</div>
</div>
<div class="bgTermFinderWidget_itemloaderholder"
dojoAttachPoint="itemloaderholder"><img
class="bgTermFinderWidget_itemloader" dojoAttachPoint="itemloader"
src="${imagesPath}/loading_strip_static2.gif"
onclick="window.location.reload()"
title="Status Indicator | Click to reload widget" /></div>
</div>
</div>
|
위젯 HTML 구조에서 주요 div는 SearchResults div이다. 이 div는 사용자가 입력한 입력에 대응하여 용어를 표시할 책임이 있다.
해당 결과는 SearchResult Model XML 형식으로 수신되어, HTML 단편으로 변환되며, SearchResults div로 추가된다.
HTML 검색 결과 단편은 Business Glossary가 사용하는 동일한 Repository ID(RID)로 고유하게 식별되는 div 태그이다. 컨트롤러는 이러한 RID를 사용하여 사용자가 요청할 때 전체 용어 자원을 얻는다. 자원의 스튜어드를 식별하는 추가 사용자 정의 HTML 속성도 사용된다.
목록 4. 검색 결과 HTML
<div dojoattachpoint="searchResults" class="bgTermFinderWidget_searchResults"> <div class="page"> <div class="node" rid="bgrestapi/term/b1c497ce.e1b1ec6c.232160ba.06b1b806-d928-48d3.b91b.222f3e221b7c"> <div class="title-closed"><a class="doOpen" href="#">Satisfaction Rating Date</a><a class="doEdit" href="#" title="Click to edit Description and Steward">Edit</a></div> </div> <div class="node" rid="bgrestapi/term/b1c497ce.e1b1ec6c.1e1aa0bd.a73f37a7-59c2-42bf.aac9.c05e0ac0c965"> <div class="title-closed"><a class="doOpen" href="#">Source Of Income Type Identifier</a><a class="doEdit" href="#" title="Click to edit Description and Steward">Edit</a></div> </div> <div class="node" rid="bgrestapi/term/b1c497ce.e1b1ec6c.16dda0ba.5e5d685e-aa69-4925.afd0.e2d33ce2d0bf"> <div class="title-closed"><a class="doOpen" href="#">Special Terms Flag</a><a class="doEdit" href="#" title="Click to edit Description and Steward">Edit</a></div> </div> </div> <div class="bgTermFinderWidget_showmore" /></div> |
결과 노드는 다음 단계 중 하나가 있을 수 있다.
- 닫힘(Closed)
- 보기를 위해 열림(Open for viewing)
- 편집을 위해 열림(Open for editing)
각 상태는 다른 프리젠테이션이 있으며, 이는 CSS로 제어된다. 다음 세 가지 그림은 각 단계의 예제를 보여준다.
그림 6. 닫힘(Closed) — 용어 이름만 표시함
그림 7. 보기를 위해 열림(Open for viewing) — 용어 세부사항과 편집 아이콘을 표시함
그림 8. 편집을 위해 열림(Open for editing) – 편집 제어로 편집 모드에서 용어 세부사항 및 스튜어드를 표시함
위젯의 중심 부분은 컨트롤러이다. 컨트롤러는 REST API를 호출하여 사용자 조치에 반응하는 JavaScript 코드를 구성한다. 그 다음에 DOM 조작을 사용하여 컨트롤러는 위젯 템플리트로 변환된 HTML 단편을 삽입한다.
컨트롤러로 수행되는 DOM 조작의 논리를 이해하기 위해 이 섹션은 Open Node 시나리오를 심도있게 살펴본다. Edit Node 시나리오는 유사한 논리를 따른다.
그림 9. 시퀀스 플로우— 노드 열기
사용자가 닫힌 노드를 클릭하면, 대상 노드의 onClick 이벤트는 브라우저가 위젯 컨트롤러 코드의 기본 onClick 핸들러로 버블링되게 한다. 기본 핸들러는 RID를 사용하여 대상 노드를 식별하고 적절한 핸들러 메소드를 호출한다.
이벤트 버블링 기술은 컨트롤러 코드로부터 위젯의 보기 구조를 연결 해제하는 기능을 제공한다. 해당 기술은 또한 하나의 장소에서 모든 onClick 처리 집중하기의 하나의 선택 원칙을 따른다.
목록 5. 클릭 핸들러 함수
clickHandler : function(evt) {
var targetNode = evt.target;
var className = dojo.attr(targetNode,"class");
if ( className == "doOpen") {
var div = targetNode.parentNode.parentNode;
this.OnItemClick( div );
}
else if ( className == "doEdit") {
var div = targetNode.parentNode.parentNode;
this.OnItemEditClick( div );
}
else if ( className == "editOK"){
var div = targetNode.parentNode.parentNode.parentNode;
this.OnEditOk (div);
}
else if ( className == "editCancel"){
var div = targetNode.parentNode.parentNode.parentNode;
this.OnEditOk (div);
}
else if ( className == "doShowMore" ) {
this.OnPageClick( dojo.attr( targetNode,"page") );
}
},
//Method is called when user clicked to open/close the node
OnItemClick:function( div){
this._currRID = dojo.attr(div,"rid");
var nodesClosedTitle = dojo.query('.title-closed' , div);
var nodesClosedBody = dojo.query('.body-closed' , div);
//Node is closed and never been open
if ( nodesClosedTitle.length > 0 && nodesClosedBody.length == 0){
//Performing Ajax call to term details
this.RequestItemDetails( this._currRID );
}
//Node is closed and was opened before
else if ( nodesClosedTitle.length > 0 && nodesClosedBody.length > 0){
nodesClosedTitle[0].className = "title-open";
nodesClosedBody[0].className = "body-open";
}
//Node is open
else{
var nodesOpenTitle = dojo.query('.title-open' , div);
var nodesOpenBody = dojo.query('.body-open' , div);
if ( nodesOpenTitle.length > 0 && nodesOpenBody.length > 0){
nodesOpenTitle[0].className = "title-closed";
nodesOpenBody[0].className = "body-closed";
}
}
},
|
목록 6에서 볼 수 있듯이 노드가 열리지 않았다면 컨트롤러가 RestClient.requestItemDetails를 용어 세부사항을 비동기로 요청한다.
목록 6. RequestItemDetails 함수
//Performing AJAX Request to term details
RequestItemDetails:function( rid ){
this.toggleItemLoading(1);
this._bgRestClient.requestItemDetails
( rid,this,this.itemDetailsCallback , this.onError );
},
|
목록 7의 코드에서 컨트롤러의 콜백 메소드는 먼저 XSLProcessor 모듈을 사용하여 HTML 단편을 생성한 다음에 대상으로 하는 노드로 이를 삽입한다.
목록 7. itemDetailsEditCallback 함수
//Method will be called when AJAX request to term details returns .
itemDetailsEditCallback :function( xml ) {
//Extracting the rid of the term with XPath
var rid = this.extractStringValue »
( xml ,"//rest:termResource/rest:term/rest:uri" );
var div = dojo.query('div[rid=\"'+ rid +'\"]' , this.searchResults )[0];
//Processing XML of term details to create HTML edit fragment to be injected.�
var element = this._bgXslProcessor.processItemDetailsEdit( xml );
//Switching display
dojo.query('.doEditBussy' , div)[0].className = "doEdit";
dojo.query('.title-open' ,div )[0].className = "title-edit";
//Injecting the HTML fragment
dojo.place( element , dojo.query('.body-open' ,div )[0] , "replace");
dojo.place( this._selectTag ,dojo.query('.stewardValue' ,div )[0],"only" );
this.toggleItemLoading(0);
},
|
위젯은 Dojo JavaScript 클래스(BGRestClient)를 사용하여 지정된 자원에 대한 비동기 REST 호출을 수행한다.
목록 8은 AJAX GET 및 PUT 비동기 호출을 수행하는 두 가지 기본 헬퍼 함수를 보여준다.
목록 8. REST 클라이언트 코드 스니펫
//Performing AJAX Get Request
__performRequest: function( url , callbackMethod , errorMethod ) {
if ( this._xhr != null ) {
this._xhr.cancel();
}
this._xhr = dojo.xhrGet( { //
// The following URL must match that used to test the server.
url: url,
handleAs: "xml",
timeout: this._timeout, // Time in milliseconds
// The LOAD function will be called on a successful response.
load: callbackMethod,
// The ERROR function will be called in an error case.
error: errorMethod
});
},
//Performing AJAX Put Request
__performPutRequest: function ( url , data , callbackMethod , errorMethod ) {
return dojo.rawXhrPut( { //
// The following URL must match that used to test the server.
url: url,
handleAs: "xml",
putData : data ,
timeout: this._timeout, // Time in milliseconds
// The LOAD function will be called on a successful response.
load: callbackMethod,
// The ERROR function will be called in an error case.
error: errorMethod
});
},
|
bgTermFinderWidget.war에 들어 있는 BGRestClient.js 파일을 확인하여 JavaScript REST 클라이언트의 구현을 확인한다.
XSLProcessor는 크로스 브라우저 랩퍼로서 역할을 담당하여 API로부터 수신된 XML 자원을 HTML 단편으로 변환한다.
기본 XSLProcessor 변환 함수는 XML을 처리하기 위해 브라우저의 XSL 변환 엔진을 사용한다.
목록 9. XSLProcessor 코드 스니펫
__transform:function( xml , xsl ,paramsNames,paramsValues) {
var element = null;
if (dojo.isIE)
{
var template = new ActiveXObject("MSXML2.XSLTemplate");
template.stylesheet = xsl;
var processor = template.createProcessor();
processor.input = xml;
if (paramsNames != null ) {
for( i = 0 ;i < paramsNames.length ; i++){
processor.addParameter(paramsNames[i],paramsValues[i]);
}
}
processor.transform();
element = processor.output;
}
else if (dojo.isFF || dojo.isChrome)
{
xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
var i = 0;
if ( paramsNames != null ) {
for( i = 0 ;i < paramsNames.length ; i++){
xsltProcessor.setParameter(null,paramsNames[i]»
,paramsValues[i] );
}
}
//Performing the transformation of a fragment of xml
element = xsltProcessor.transformToFragment( xml , document)
}
return element;
}
|
Internet Explorer XSL 프로세서
Internet Explorer는 Microsoft.XMLDOM.transformNode 메소드를 사용하여 XML 노드와 해당 하위 항목을 지정된 XSL 문서로 처리한다. 해당 메소드는 변환된 노드의 일반 텍스트 버전으로 결과를 리턴한다.
Firefox XSL 프로세서
Firefox는 XSLTProcessor의 인스턴스를 작성하고 XSL 문서를 가져오며 변환을 수행하기 위한 xsltProcessor.transformToFragment 메소드를 사용하여 변환을 수행한다. 리턴된 결과는 DOMNode이다.
이전에 언급한 대로 이 기사는 독자가 XSLT 개발에 이미 익숙하다고 가정하지만,
Business Glossary REST API XML 자원이 다음의 설계된 XML 네임스페이스로 모두 선언되는 것을
참고하기 바란다.
http://www.ibm.com/is/bg/rest
이 네임스페이스는 XSLT를 개발할 때에 고려해야 한다. 예제는 목록 10을 참조한다.
목록 10. REST API 네임스페이스
<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:rest="http://www.ibm.com/is/bg/rest" >
|
목록 11은 선언된 rest 접두부를 사용하는 방법의 예제를 보여준다.
목록 11. 선언된 "rest" 접두부 사용하기
<div class="description"> <xsl:value-of select="rest:termResource/rest:term/rest:shortDescription"/> </div> |
위젯이 사용한 모든 XSL 파일은 js/bg/resources/xsl 디렉토리에서 bgTermFinderWidget.war 파일에 들어있다.
다음 단계를 사용하여 위젯을 배치한다.
- 다운로드 섹션으로 이동하여 bgTermFinderWidget.war 파일을 저장한다.
- WebSphere Application Server Web Administrative Console을 사용하여 WAR 파일을 배치한다. 반드시 Business Glossary REST API가 있는 동일한 호스트 또는 서브도메인 호스트에 배치해야 한다. 이러한 배치 요구사항은 모든 주요 브라우저에서 구현되는 동일한 원본 정책에 기인한 것이다. 해당 정책은 다른 원본이 있는 또 다른 사이트로 AJAX 호출을 수행하기 위해 하나의 사이트 원본으로부터 로드되는 스크립트를 방지한다.
- 배치된 WAR로 이동하고 Main.html 파일에서 RestAPIHost 속성을 수정하여 호스트의 이름과 일치시킨다.
- 위젯으로 작업하려면 브라우저를 열고 다음으로 이동한다.
http://<host>:<port>/bgTermFinderWidget위젯은 다음 브라우저를 지원한다.
- Internet Explorer 버전 6, 7 및 8
- Firefox 버전 2 및 3
- Google Chrome
다음은 써드파티 환경에 통합된 BGTerm Finder 위젯의 예제이다.
그림 10. Lotus Mashup 통합
위에 표시된 대로 샘플 위젯을 Lotus Mashup 프레임워크에서 또 다른 위젯으로 연결하기 위해 iWidget 표준을 사용할 수 있다.
그림 11. iGoogle
그림 12. Netvibes
IBM InfoSphere Business Glossary 8.1.1 REST API는 독자의 자체적인 사용자 정의 애플리케이션을 통해 사용자에게 용어집 내용을 노출하는 전례 없는 기능을 제공한다. 이 기사에서 제시된 예제들이 독자와 독자의 조직에서 REST API를 통한 InfoSphere Business Glossary의 성능을 활용하기 시작하는 데 사용할 수 있기를 바란다.
저자는 이 기사에 대한 피드백과 검토를 해준 Ilan Prager, Joshua Fox 및 Erel Sharf에 감사의 말을 전한다.
| 설명 | 이름 | 크기 | 다운로드 방식 |
|---|---|---|---|
| BGTermFinderWidget code sample | bgTermFinderWidget.war | 9.73MB | HTTP |
| Instructions for deploying BGTermFinderWidget | bgTermFinderWidget-deployment.doc | 1.33MB | HTTP |
- IBM InfoSphere Business Glossary를 설치하고 설치 옵션으로
해당 문서를 포함하여 IBM InfoSphere Business Glossary REST API 참조 문서를 얻자. 해당 문서는
InfoSphere Business Glossary >
Developing and extending applications 섹션 아래 설치된 IBM InfoSphere Information Server
Information Center의 서브세트이다. 자세한 InfoSphere
Business Glossary 정보는 온라인
IBM InfoSphere Business Glossary Information Center에서 확인할 수 있다.
-
W3Schools은 JavaScript, CSS,
HTML, DOM, XML 및 기타 등등의 많은 웹 기술에 대한 온라인 참조 정보를 제공한다.
- 웹 기술에 대한 더 심화된 정보는
developerWorks 웹 개발 영역 및 developerWorks XML
영역을 참조한다.
- Dojo JavaScript 툴킷에 대한 자세한 정보는 Dojo toolkit 문서
페이지를 참조한다.