PReServ 0.3.1
P-assertion Recording for Services
Provenance Query interface to the provenance store:
functional specification of this interface can be found
here.
XQuery interface to the provenance store:
documentation on using this interface can be found
here.
Motivation
The importance of understanding the process by which a result was generated in an experiment is fundamental to science. Without such information, other scientists cannot replicate, validate, or duplicate an experiment. For generations, scientists have used lab notebooks to record the process by which an experimental result was produced. These scientists were capturing provenance, which for some data is the documentation of process that led to that data. However, with large scale insilico experiments, it may difficult for a scientist to capture provenance especially when the experiment is conducted using thousands of computers owned and operated by different organisations.
In order to facilitate the recording and querying of provenance, PASOA has developed PReServ an implementation of the Provenance Recording Protocol (PReP).
Software Components
The following is a description of the software components that make up PReServ. The interaction between these components is shown in figure 1.
Figure 1: PReServ Component Interactions
The
Provenance Store Web Service is a repository for provenance documentation. It handles requests both to store and query such documentation and provides well defined interfaces for doing so. Figure 2 shows the layered design of the Provenance Store.
Figure 2: PReServ Layers
Normally, a SOAP message is sent to PReServ to either record or query provenance documentation. (SOAP is the Web Services messaging layer.) Based on the port that the message was sent to, the SOAP Message Translator strips off the HTTP and SOAP Headers and passes the contents of the SOAP body to an appropriate PlugIn. Each PlugIn is responsible for knowing how to handle the content of the message it receives. The content, however, must conform to the schemas distributed with PReServ. For example, the Store PlugIn handles messages in order to record data in the Provenance Store. The selected PlugIn then makes calls on the backend data store to generate an appropriate response for the received message. Currently, PReServ comes with in-memory, and database backends. Each of these backends implements the same API, the Provenance Store Interface. This abstraction makes it easy to integrate new backend stores without having to change already developed PlugIns.
The Provenance Store is accessed directly using Web Service calls. (See figure 1) However, developers may not want to deal with the intricacies of building their own SOAP messages to send to the Provenance Store. Therefore, PReServ provides a set of
Java libraries to both record and query documentation from the Store. Figure 1 shows how the Java libraries (PS Client Side Library) can be used to interact with the Provenance Store. A recording API (Application Programming Interface) presents methods that are directly mapped to the messages that specified by PReP. A query API presents a set of basic methods for browsing the Provenance Store's hierarchy of data. Both APIs take method calls and translate them into Web Service invocations to the Store.
The third software component is an
Axis Handler. Axis is one of the most common set of libraries for developing Java based Web Services. Therefore, PReServ provides a mechanism for "automatically" recording interactions for services developed using Axis. A developer can add this functionality by adding a provided Jar file to their classpath. The developer's Web Service is then wrapped by PReServ's Axis Handler, which then intercepts all incoming and outgoing data and records it to a configured Store. This "automatic" recording is shown in Figure 1, where two Axis Handlers wrap the WS Client and Web Service in order to record their interaction in the Provenance Store.
Get PReServ
Download PReServ 0.3.1
Warning: This release may not be complete and is not completely documented. It is intended only as a technology preview. We assume you have had experience developing web services and using Apache Tomcat.
Dependencies:
- Java Version 1.5
- Apache Tomcat 5 or greater
- Apache Ant 1.62
PReSev and Java 1.4:
PReSev and Java 1.4
- If you need to run PReServ under Java 1.4 please contact us. We are moving towards adopting Java 1.5 completely on the Provenance Service side while maintaining Java 1.4 compatibility on the client side.
Change Log:
Changes between 0.3 and 0.3.1
- Bug fixes and performance improvements
Changes between 0.2.6 and 0.3
- Build file now contains targets to deploy/undeploy preserv from the command line
- Support for clients to server gzip compression
- The backend automatically compresses data
- We now use an in house xquery engine, LAXQuery, which provides greater scalability than the engine we used previously, IPSIXQ.
- Support for changing between LAXQuery and IPSIXQ in the web.xml configuration file
- Changes to the code to allow for easier development of multiple backends
- Code reorganisation to allow for a better set of distributions
- Fixed several threading bugs
- Compatible with the 025 Provenance Schemas
Changes between 0.2.5 and 0.2.6
- This release is compatible with a version 024 Provenance Schemas. These schemas increase the extensibility of the schemas.
- This release of PReServ is compatible with the 0.4 Client Side Library produced by the EU Provenance project
- Minor bug fixes in querying and recording
Changes between 0.2.4 and 0.2.5
- Maintenance release
- Fixed minor bugs with dataAccessors
Changes between 0.2.3 and 0.2.4
- Supports Provenance Query Inteface
- WSDL now designed for extensibility
- Fixed bugs in DOMWriter handling
Changes between 0.2.2 and 0.2.3
- Improved Developer Friendly WSDL
- WSDL is now JAX-RPC compatible
- Provenance Service handles JAX-RPC requests
Changes between 0.2.1 and 0.2.2
- Improved client library documentation
- Added ClientLibExample
- Improved building of provenance store (no need to modify any configuration files)
Changes between 0.2 and 0.2.1
- Changes in WSDL interfaces to be clearer and consise
Changes between 0.1.5 and 0.2
- Compatible with new structure of process documentation
- XQuery interface
- WSDL interfaces
- New database backend (easier to redeploy)
- Refactored code for future development, easier to add backends
- AxisHandler now supports the transmission of multiple tracers (replacing sessions)
Changes between 0.1.4 and 0.1.5
- PReServ now is distributed with Axis 1.2 rc 3
- The example and axishandler were updated to be compatible with this version of axi
Changes between 0.1.3 and 0.1.4
- Fixed a concurrency issue in the file system backend store
- Fixed bugs in in-memory backend store
Changes between 0.1.2 and 0.1.3
- Fixed a bug in the querying of actor (additional) provenance
Changes between 0.1.1 and 0.1.2
- Fixed a bug in the recording of actor (additional) provenance
Changes between 0.1 and 0.1.1
- Minor improvement to configuration process
- Better automatic service naming by axis handler
- Proper seperation of autodeploy and build ant scripts