Automating Metadata
Services
Ozgur Balsoy
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.xml
nuggets.org.
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.
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
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
SchemaWizard and XML
Annotated
XML Schema SchemaParser
XML For Wizard XML Instances
follows generates
input of
outputs
edited
SchemaWizard A Mapping of XML to SchemaWizard
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
SchemaWizard Architecture
•
The steps that take place in generating a XML form
wizard
– The Schema Wizard unpacks and deploys the Web application package into a Web server’s application repository (i.e.
webapps under Tomcat).
– User provides with a location of the Schema.
– 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.
– 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.
SchemaWizard Architecture
Castor Schema Unmarshaller
Castor Sourc Generator JavaBean s Castor SOM Sche ma Parser Velocity Template s Java Compiler
Annotated XML Schema
Web Application
Template
Librarie
s Classes JSPs
XML Form Wizard created as a Web Application
SchemaWizard Architecture
•
The steps that take place in generating a XML form
wizard (cont.)
– 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. – 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.
SchemaParse
Data 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 context with type info
<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><%
} %>
XML Schema location is given to SchemaWizard.
XML Form Wizard is generated.
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>
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>
Smaller input size
Textarea, row count set to 5
Unbounded element
with its own add/delete buttons
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.
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
XML
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
URLs and Contact
• Project Site:
http://ptlportal.ucs.indiana.edu/schemawiz
ard.
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
Why WSDI
• WSDI – Web Services
Dynamic
Invocation
No change
Stub needs to be
rebuilt
web
services
modified
Transparent
Generate stub code
for each web service
Invocation
Process
Dynamic
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
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(
Implementation
• WSDL plays the most import role
WSDL
Interface definition
abstract definitiontype of message and operation concrete information
Axis
complete
information
of service
WSIL
Source of
web services
W
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
Components(cont.)
WSDL Document
WSDL Document
WSDL Parser
GhostWSDL Parser
Schema Wizard
User Data Parser
Service Invocation
GhostWSDL
XML with User Data