80 likes | 197 Vues
Explore the concept and role of Client Side Library (CSL) in fostering communication with provenance store services, enforcing architecture rules, and embedding within applications. Learn about CSL's implementation and interaction within a layered model in this detailed text.
E N D
Client Side Library Dr. Sheng Jiang Provenance Team sj@ecs.soton.ac.uk
Concept and role of CSL • Client Side Library (CSL) is a collection of functions, which • allows provenance-aware applications to communicate with provenance store services • helps application developers enforce architecture rules • An implementation of the CSL should contain at least one of query library, record library and management library • CSL is intends to be embedded as part of provenance-aware applications
Interaction of Application Host A Host B Message Actor A Actor B
Message (embedded p-header) Source: hostA Sink: hostBVK: isSenderPAssertions CSL Source: hostA Sink: hostBVK: isReceiverPAssertions CSL ProvenanceStore Server ProvenanceStore Server Provenance-aware Application Host A Host B Actor A Actor B
Application API Utilities Layered Model of CSL Applications Client Side Library Provenance Store Server Server API
Server API • Defined our provenance store interface in several WSDL files • WSRF compatible • Generated stubs from these WSDL • Using WSDL2Java from the GT4 • Used as server API • Security is not enabled yet • Too complicated to be used by application developers
Application API • Simple interfaces and data structures • Re-usable information • Helper facilities • Relationship helper • Documentation style helper, Policy helper, P-Header helper, Tracer helper (not available yet) • Is Mapped to the server API using utilities
Simple Example ProvenanceService ps = new ProvenanceServiceImpl (recordPort, xQueryPort, pQueryPort) InteractionRecord irInstance = ps.newInteractionRecord (msgSink, msgSource, asserter, viewKind) GlobalPAssertionKey gpakIPA = irInstance.addInteractionPAssertion(message, documentationStyle) RecordResult rResult = irInstance.record()