View
218
Download
0
Category
Tags:
Preview:
Citation preview
6/2/2003 O.Balsoy et al.
Automating Metadata Services
Ozgur BalsoyCommunity Grids Lab, Indiana
UniversityMarlon Pierce, Presenting
6/2/2003 O.Balsoy et al.
XML Metadata Management
• Managing metadata is a general problem faced all portals, problem solving environments.– EX: Data provenance
• The Community Grids Lab at IU has developed a number of tools for XML metadata management.– Wizard publishers allow you to create and publish XML
instances.– JMS-style brokers can be used to both store XML messages
persistently and deliver immediately.– Access control systems provide fine-grained topic management.– RSS catalogs allow topic postings to be browsed and searched.
• See various running examples at www.xmlnuggets.org. – Newsgroups, bibtex-based citation managers, glossary term
managers
6/2/2003 O.Balsoy et al.
6/2/2003 O.Balsoy et al.
Need for Metadata Generation
• Applications that guide users through a complicated task are usually called wizards.
• XML wizards are applications that receive user inputs to generate XML documents. Such applications with different capabilities are widely available for either freely or commercially.
• In our research on XML information frameworks, we help users generate schema-based XML content and publish into a XML messaging broker.
• Around the broker, the system allows new applications to plug-in easily; however, each application might require a different schema or a newer version of an older one.
• We analyzed the steps to develop and integrate such applications.
6/2/2003 O.Balsoy et al.
Steps for a Metadata Generator
• There were common tasks that we performed for each application:– Design an object model and create a W3C XML Schema to
represent it.– Create a memory object model of the schema, i.e.
corresponding Java classes.– Design an interface, i.e. HTML forms, for user inputs, and bind
the interface with the memory model.– Let users input data.– Finally, generate XML based on input, and publish it.
• Given these repetitive tasks, we have developed a general purpose tool that automates the creation of this process.
6/2/2003 O.Balsoy et al.
SchemaWizard and XML
• Schema Wizard maps XML Schema elements to HTML form elements through its schema parser, and creates the framework and logic for an XML form wizard.
• Users use newly generated wizards to create and publish XML instances, which follow a schema, to any destinations such as publish/subscribe messaging systems or through SMTP.
• XML form wizards are Web applications that also serve as validating XML editors and are customized through schema annotations.
6/2/2003 O.Balsoy et al.
SchemaWizard and XML
AnnotatedXML Schema
SchemaParser
XML FormWizard
XML Instances
follows generates
input of
outputs
edited
SchemaWizard
A Mapping of XML to SchemaWizard Parts
6/2/2003 O.Balsoy et al.
SchemaWizard Architecture
• Schema Wizard (SW) is composed of three major parts:– A Web application package with necessary
libraries and directory structure that serves as an application template;
– A SchemaParser that process W3C XML Schemas and builds the final XML form wizard;
– Velocity Macro templates that contain the view and the logic for the wizard.
6/2/2003 O.Balsoy et al.
SchemaWizard Architecture• The steps that take place in generating a XML form
wizard1. The Schema Wizard unpacks and deploys the Web application
package into a Web server’s application repository (i.e. webapps under Tomcat).
2. User provides with a location of the Schema.3. The Schema is read in to create an in-memory representation
(SOM) of the schema and also to create Java classes.• SOM=Castor’s Schema Object Model• SOM API provides a convenient interface to access the W3C XML
Schema structures.4. Using the SOM, Castor SourceGenerator creates Java classes
that correspond to the Schema structures. These classes form the memory model (i.e. Javabeans for JSP) and come with the necessary framework to parse and regenerate (marshal and unmarshal) XML instances.
5. Java classes are compiled, and binaries are placed into the new project’s directory structure.
6/2/2003 O.Balsoy et al.
SchemaWizard Architecture
Castor Schema UnmarshallerCastor Schema Unmarshaller
CastorSource
Generator
CastorSource
Generator
JavaBeans
Castor SOM
SchemaParser
SchemaParser
Velocity Templates
Java CompilerJava Compiler
Annotated XML Schema
WebApplicationTemplate
WebApplicationTemplate
Libraries Classes JSPs
XML Form Wizard created as a Web Application
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
6/2/2003 O.Balsoy et al.
SchemaWizard Architecture• The steps that take place in generating a XML form
wizard (cont.)6. Using the SOM once again, SchemaParser traverses the in-
memory schema and collects structure information, i.e. names, types, whether element or attribute, complex or simple type.
7. Based on this information, the parser chooses what type of template will be used, stores the information in a Velocity context, and invokes the template engine to generate the program logic presented in JSP. The parser also gathers the Schema annotations, i.e. page color, input sizes, at this level and place the parameters in the context.
8. The engine runs on templates placing each JSP code in its directory, creating the interface based on the user schema.
6/2/2003 O.Balsoy et al.
SchemaParserData Flow and Action
Traverse schema for types
Collect type information, create a context
Decide template:Project page
Index page
Simple type
Enumerated simple type
Unbounded simple type
Complex type
Unbounded complex type
Velocity Template Engine
Castor SOM
Schema object
Individual types
Velocity contextwith type info
Context, template
JSP
JavaBeans info
Templates
6/2/2003 O.Balsoy et al.
<tr><td>## if numbers is requested, then print out the leading numbers, ## i.e. 1. , 2.2, 3.4.2#if ($numbers)<%= ((Leveler)request.getAttribute("_leveler")).increase()%>#end$label</td><td> <select name="$name"> <option value="<%=REMOVE%>"><%=REMOVE%></option><% // print out option. select the one that matches in-memory value for(int i=0; i< values.length; i++) { String enm = values[i]; %> <option value="<%= enm %>"<%= (value != null && value.equals(enm)) ? " SELECTED" :"" %>><%= enm %> </option><% } %> </select></td></tr>
Velocity Template Example
6/2/2003 O.Balsoy et al.
XML Schema location is given to SchemaWizard.
XML Form Wizard is generated.
XML instance is marshaled.
6/2/2003 O.Balsoy et al.
Schema Annotations
• Users can make cosmetic changes for the final project beforehand with annotations in the schema.
• W3C XML Schema allows developers to embed user defined languages into the schema using <xs:annotation> and <xs:appinfo> structures.
• Annotations for the whole schema affects the whole page, i.e. page title, background color, default input sizes, leading numbers on and off, XML browsing on and off.<xs:annotation>
<xs:appinfo source="title">SchemaWizard Output for Topics Schema </xs:appinfo><xs:appinfo source="inputsize">30</xs:appinfo><xs:appinfo source="bgcolor">#e0e0ff</xs:appinfo><xs:appinfo source="leadingnumbers">false</xs:appinfo><xs:appinfo source="showxml">true</xs:appinfo>
</xs:annotation>
6/2/2003 O.Balsoy et al.
Schema Annotations
• Annotations for individual structures override the schema annotations, i.e. input size for each element. Also, labels for each element can be defined, and input fields can be changed to larger text areas with a textarea parameter and row numbers, or to password fields by a password parameter whose value set to true.
<xs:annotation><xs:appinfo source=“label">User Password</xs:appinfo><xs:appinfo source="inputsize">15</xs:appinfo><xs:appinfo source=“password">true</xs:appinfo>
</xs:annotation>…
<xs:annotation><xs:appinfo source=“label">Memo</xs:appinfo><xs:appinfo source=“textarea">5</xs:appinfo>
</xs:annotation>
6/2/2003 O.Balsoy et al.
Smaller input size
Textarea, row count set to 5
Unbounded elementwith its own add/delete buttons
XML browsing turned on
Title set
Background set to gray
6/2/2003 O.Balsoy et al.
XML Form Wizard• The final products of the Schema Wizard are XML Form Wizards
that help users to create XML instances.• The Wizards are Web applications compliant with the JSP
standards.• Each application is built around a form page.• Each schema element is mapped to a self-contained JSP nugget.• JSP nuggets are generated from templates.
– One template for each element type (simple, complex, enumerated, unbounded,….).
– Velocity is used for convenient scripting of JSP.• The final JSP page is an aggregate of the JSP nuggets files (using <
%@:include>).• Complex schema elements are mapped to JavaBeans generated
from the schema with Castor.– Scripting templates set up the imports
6/2/2003 O.Balsoy et al.
XML Form Wizard
Index Page
• create a root element bean as new or from existing XML• include sub element pages• if submitted, validate the bean content• if editing is complete, generate XML
Project Page
• create a session• initialize the environment• retrieve an XML instance list
XMLXML
Complex Types
• create a complex type bean• include sub elements• if submitted, validate the content
Simple Types
• if parent bean has data, display content for this type (or property) using a form element• if form is submitted, update the parent bean for this type
listXML
instance
Newcommand
includes
includes
6/2/2003 O.Balsoy et al.
URLs and Contact
• Project Site: http://ptlportal.ucs.indiana.edu/schemawizard.
• Email: Ozgur Balsoy, obalsoy@indiana.edu.
6/2/2003 O.Balsoy et al.
Web Services Invocation Methods
• Static– A local WSDL– A stub generator, e.g. wsdl2java utility– A programmer, generate stub code and make
changes
• Dynamic – Generate web-based interface and make SOAP
call on the fly
6/2/2003 O.Balsoy et al.
Why WSDI
• WSDI – Web Services Dynamic Invocation
Event Static Dynamic
Invocation Process
Generate stub code for each web service
Transparent
web services modified
Stub needs to be rebuilt
No change
6/2/2003 O.Balsoy et al.
What is WSDI
• Is a Java application based on Apache Axis and Tomcat
• Makes use of WSDL and WSIL technology
• Provides transparent environment for web services invocation
• Generates JSP interface dynamically
6/2/2003 O.Balsoy et al.
A Sample SOAP Call – echo
// Input data from the user
textToSend = “Hello World!”;
// Setup the TargetEndpointAddress
call.setTargetEndpointAddress( new java.net.URL(endpointURL) );
call.setOperationName( new QName("MyService", "serviceMethod") );
// I/O information for operations,
// type mapping will be required for complex type
call.addParameter( "arg1", XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnType( org.apache.axis.encoding.XMLType.XSD_STRING);
// Make the SOAP callret = (String) call.invoke( new Object[] { textToSend } );
6/2/2003 O.Balsoy et al.
Implementation
• WSDL plays the most import role
WSDLWSDL
Interface definitionInterface definition
Implementation bindingsImplementation bindings
abstract definition abstract definition
type of message and operationtype of message and operation
concrete information concrete information
port and binding protocol port and binding protocol
Axis SOAP calls
Axis SOAP calls
complete informationof service
complete informationof service
WSILWSIL Source of web services
Source of web services
WS
DL
WS
DL
WS
DL
WS
DL
6/2/2003 O.Balsoy et al.
Components
• Four important components– WSDL Parser
• gets the I/O information of each service
– GhostWSDL Parser • Parses the WSDL to schema format
– Schema Wizard• generates the user interface and gathers the input data
– User Data Parser• Simple type: parses the users’ data to its corresponding Java
value • Complex type: uses data to instantiate the Java object class
which generated by Schema Wizard
6/2/2003 O.Balsoy et al.
Components(cont.)
WSDLDocument
WSDLDocument
WSDLDocument
WSDLDocument
WSDL ParserWSDL Parser
GhostWSDL ParserGhostWSDL Parser
Schema WizardSchema Wizard
User Data ParserUser Data Parser
ServiceInvocation
ServiceInvocationGhostWSDL
XML with User Data
User Data
I/O information of the service
6/2/2003 O.Balsoy et al.
Architecture
WSD
L P
arse
r
Gho
stW
SDL
Par
ser
(12)
Web
Ser
vice
sIn
spec
tion
Pro
xy C
lien
t
Model
User Data Parser
Schema Wizard
JSP Interface
SOAP Web ServicesInspection Proxy
Server
WSDL Document
WSIL Document
HT
TP
HT
TP
(3)
(8)
(4)
(5)(6)
(7)
(5')(6')
HT
TP
(13)
(14)
(15)
(16')(16)
JSP Interface
Con
trol
ler
Users Service Provider
SOAPHTTP
(1)(2)
(9)(10)
(11)(17)
(12a)(12b)
Recommended