970 likes | 1.11k Views
SPECIFICATION OF THE FIMS MEDIA SOA FRAMEWORK. REPOSITORY SERVICE INTERFACES. Loic Barbou & Ashraf Tadros. Update since Geneva. Outstanding questions from Geneva REP group has work on providing answers to questions raised by the group during the Geneva Meeting
E N D
SPECIFICATION OF THEFIMSMEDIA SOA FRAMEWORK REPOSITORY SERVICE INTERFACES Loic Barbou & Ashraf Tadros
Update since Geneva • Outstanding questions from Geneva • REP group has work on providing answers to questions raised by the group during the Geneva Meeting • Answers are listed at the end of the presentation • CDMI/CMIS • REP Group has evaluated CDMI and CMIS • No direct overlap in existing FIMS Repository Interface • No impact on current FIMS Repository Interface design
Update since Geneva • Design Changes • Extension model for enumeration • New version of XSD and WSDL • Outstanding Tasks • Simplify design for Event models
Goals for Today • Validate • Operation and Object Names • Objects impacting FIMS base services • NOT work on • Redesigning API • Adding requirements
BMContentType Structure • BMContentType == BMO • BMContentFormatType • BMEssenceLocatorType
Repository Service - Operations • GenerateUniqueID OK • AddObject Replace with AddContent • AddContent Replace with AddEssence • ReplaceObject Replace with ReplaceContent • UpdateProperties Replace with UpdateContentProperties • Lock OK • UnLock OK • ClearLock OK • RetrieveOpenLocks Replace with GetLocks • DeleteContent RemoveEssence
Repository Service - Operations • UnDeleteContent Replace with UnRemoveEssence • DeleteObject Replace with RemoveContent • UnDeleteObject Replace with UnRemoveContent • PurgeContent Replace with PurgeEssence • PurgeObject Replace with PurgeContent • GetBMContent Replace with GetContent • GetBMContentCollection Replace with GetContentCollection • RetrieveBMEssence Replace with RetrieveEssence • MediaQuery Replace with ContentQuery
Repository Service – Objects to be discussed • RepositoryProfileType • To be renamed to CredentialType • Add extensionGroup • Add object to baseServices XSD “To be discussed during FIMS DEV meeting 21st” • QueryParameterOperand Replace with QueryParameterOperator • QueryGroupOperand Replace with QueryGroupOperator • Enumeration Extension No red flag • ReferenceTypeID
RCR Operations • GetRepositoryState • GetStorageAvailableCapacity • GetPerformanceIndicator • GetRepositoryReport • GetGeneralCapability • GetSchemaExtensions • GetUpdatableProperties • GetQueryResultsetDefinitions • GetSearchableProperties • GetRepositoryDefinitions • GetSuperLockToken • GetSupportedStatus
Notifications/Call Back Operations • NotifyAddContentResult Replace with NotifyAddEssenceResult • NotifyAddContentFault Replace with NotifyAddEssenceFault • NotifyPurgeContentResult Replace with NotifyPurgeEssenceResult • NotifyPurgeContentFault Replace with NotifyPurgeEssenceFault • NotifyPurgeObjectResult Replace with NotifyPurgeContentResult • NotifyPurgeObjectFault Replace with NotifyPurgeContentFault • NotifyRetrieveBMEssenceResult Replace with NotifyGetContentResult • NotifyRetrieveBMEssenceFault Replace with NotifyGetContentFault • RepositoryEvent
Services • Repository Service • Repository Service Operations • Repository Capabilities Registry (RCR) Operations • Repository Notification Service • Asynchronous Operations Notifications • Events Subscriptions
Repository Service - Operations • Lock, Unlock, Clear Lock, Retrieve Open Locks • Generate Unique ID • Add Object • Add Content (Async.) • Update Object (Replace, Update Properties) • Update Status * • Delete and UnDelete Object/Content • Purge Object (Async.) • Purge Content (Async.) • Get BM Content(s) • Retrieve Essence (Async.) • Media Query
Repository Service - RCR • Repository State (online, offline, failover) • Storage Capacity (Names, available and total space) • Performance (Performance Indicator %) • Vendor Specific Report (Report HTML) • General Capability (supported functionalities) • Vendor Defined Schema Extensions • Updatable and Searchable Properties • Vendor Defined Query Result Set Definitions • Repository Definitions (name & Description) • Retrieve Administrative Super Lock Token • Supported Object/Content Status
Notification Service - Async. Operations • Add Content (Notify and Fault) • Purge Content (Notify and Fault) • Purge Object (Notify and Fault) • Retrieve Essence (Notify and Fault)
Notification Service - Events Subscription • System Events • Exceptions • Performance • Asset Events • Status Changed • Object/Content Created • Object Deleted • Content Deleted/Purged • Object/Content Format/Essence Locator Update
Clarifications • Asynchronous Operations Notifications • Request => ResourceType => AsyncEndpointType • Ack: timeStamp + operationId • Notify Result: result + operationId • Notify Fault: RepositoryFaultType + some related info + operationId • Lock Token • RepositoryLockTokenType • RepositorySuperLockTokenType
Clarifications • Status • Object - BMContentStatusType • Content - BMEssenceLocatorStatusType • BMStatusType - new, online, offline, deleted, purged, invalid, processing. • Vendor specific - BMCustomStatusExtensionType. • RepositorySupportedStatusType
Clarifications • Object • BMContentType • Content • BMEssenceLocatorType - SimpleFileLocatorType, ListFileLocatorType or FolderLocatorType) • Light Object • BMContentLightType
Clarifications • Delete vs. Purge • Delete: flags for deletion. • Purge: removes completely from DB and repository storage. • Purge object purges all related contents. • Update Object vs. Update Properties • Update object: fully replaces the object. • Update properties: updates the specific passed property only. • RepositoryProfileType
GenerateUniqueID • Description • Generates a Unique ID within the scope of a given repository. • Must be obtained before Object or Content Add operations. • Doesn’t have to be generated by this operation and can be created by an external service as long as ID uniqueness is respected. • Request • RepositoryProfileType • Response • ResourceIDType
AddObject • Description • Uses the generated Unique ID. • Submits a new BMContentType to be added to the system. • Request • AddObjectRequestType • Response • BMContentType
AddContent • Description • Associate a physical essence – BMEssenceLocatorType (SimpleFileLocatorType, ListFileLocatorType or FolderLocatorType) to an existing object – BMContentLightType. • Uses the generated Unique ID. • BMContentFormatType is optional input. • Request • AddContentRequestType • Ack • AddContentOperationAckType
AddContent Notification • Notify Result • NotifyAddContentResult Operation => AddContentOperationNotificationType • Notify Fault • NotifyAddContentFault Operation => AddContentOperationFaultNotificationType
ReplaceObject • Description • Updates “metadata” properties of a BMContent object. • Behaves as an object replace not as update properties. • Sets omitted properties in input object to null. • A new version will be created (If versioning supported). • Request • ReplaceObjectRequestType • Response • BMContentType
UpdateProperties • Description • Updates “metadata” of BMContent object (BMContentType). • Applies only on addressable and updatable properties – RepositoryUpdatablePropertyInfoType (defined by the RCR). • PropertyInfosType parameter includes properties Xpath, values and RepositoryActionType (update, new, remove). • Request • UpdatePropertiesRequestType • Response • BMContentType
UpdateStatus ( Remove !) • Description • Updates object status only (BMContentStatusType not BMEssenceLocatorStatusType) • Should the service allow status update from outside the repository system? • Status automatically updated through the object and essence life cycle and other operations (DeleteObject, PurgeContent ..) • Request • UpdateStatusRequestType • Response • BMContentType
Lock • Description • Create a lock on a given resource or add a resource to an existing lock token. • Adds a reference to be locked to the RepositoryLockTokenType . • Lock expiration is per RepositoryLockTokenType and not per resource. • Request • LockRequestType • Response • RepositoryLockTokenType
UnLock • Description • Removes the lock from multiple references. • If no references passed in the request, will unlock all resources associated with the RepositoryLockTokenType . • Request • UnLockRequestType • Response • RepositoryLockTokenType
ClearLock • Description • A mechanism to override a lock. • A RepositorySuperLockTokenType must be obtained from the RCR before calling the operation. • Request • ClearLockRequestType • Response • RepositoryLockTokenType
RetrieveOpenLocks • Description • Gets all open locks within the system. • A RepositorySuperLockTokenType must be obtained from the RCR before calling the operation. • Request • RetrieveOpenLocksRequestType • Response • RepositoryLockTokensType
DeleteContent • Description • Sets the BMEssenceLocatorStatusType for an active BMEssenceLocatorType (SimpleFileLocatorType, ListFileLocatorType or FolderLocatorType) to ‘deleted’. • No physical bytes are deleted • Request • DeleteContentRequestType • Response • BMContentType
UnDeleteContent • Description • Sets the BMEssenceLocatorStatusType for the BMEssenceLocatorType (SimpleFileLocatorType, ListFileLocatorType or FolderLocatorType) to an active status (invalid, online, offline ..). • Repository system is responsible about tracking and resetting the status in the undelete operation implementation. • Request • UnDeleteContentRequestType • Response • BMContentType
DeleteObject • Description • Sets the BMContentStatusType for an active BMContentType to ‘deleted’ • Repository system is responsible about setting related essences - BMEssenceLocatorStatusType for the BMEssenceLocatorType (SimpleFileLocatorType, ListFileLocatorType or FolderLocatorType) to ‘deleted’. • Request • DeleteObjectRequestType • Response • BMContentType
UnDeleteObject • Description • Resets the BMContentStatusType for a deleted BMContentType. • Repository system is responsible about tracking and resetting the status in the undelete operation implementation. • Repository system is responsible about resetting related essences - BMEssenceLocatorStatusType for the BMEssenceLocatorType. • Request • UnDeleteObjectRequestType • Response • BMContentType
PurgeContent • Description • Can only be executed on an Essence in a “deleted” state. • Physically removes essence from repository database & storage. Physical bytes are deleted. • If the essence is the last representation in a BMContentFormatType, the format entry will be removed from the BMContentType. • Request • PurgeContentRequestType • Ack • PurgeObjectOperationAckType
PurgeContent Notification • Notify Result • NotifyPurgeContentResult Operation => PurgeContentOperationNotificationType • Notify Fault • NotifyPurgeContentFault Operation => PurgeContentOperationFaultNotificationType
PurgeObject • Description • Can only be executed on BMContentType in a “deleted” state. • Physically removes asset information and all related essences from repository database & storage. • Request • PurgeObjectRequestType • Ack • PurgeObjectOperationAckType
PurgeObject Notification • Notify Result • NotifyPurgeObjectResult Operation => PurgeObjectOperationNotificationType • Notify Fault • NotifyPurgeObjectFault Operation => PurgeObjectOperationFaultNotificationType
GetBMContent • Description • Retrieves a single BMContentType. • Ability to specify the structure of the retrieved object by setting: RepositoryMetadataFilterOutType: • Null: All available information • Physical: Metadata describing physical essence information • Editorial: Metadata describing editorial content • Request • GetBMContentRequestType • Response • BMContentType
GetBMContents • Description • Retrieves multiple BMContentType(s). • RepositoryMetadataFilterOutType: physical, editorial • Request • GetBMContentsRequestType • Response • BMContentsType
RetrieveBMEssence • Description • Copy an essence BMEssenceLocatorType (SimpleFileLocatorType, ListFileLocatorType or FolderLocatorType) to a known supported destination by the repository – RepositoryKnownLocationType • Request • RetrieveBMEssenceRequestType • Ack • RetrieveBMEssenceOperationAckType
RetrieveBMEssence Notification • Notify Result • NotifyRetrieveBMEssenceResult Operation => RetrieveBMEssenceOperationNotificationType • Notify Fault • NotifyRetrieveBMEssenceFault Operation => RetrieveBMEssenceOperationFaultNotificationType
Query • Description • Consumer is an orchestration engine. • A search parameter must match a property defined in the asset schema BMContentType or RepositorySchemaExtensionType and defined in the RCR - RepositorySearchablePropertyInfoType. • The max number of supported search parameter across all query operations is defined in RCR. • Operation Structure Parameters Query Definition Operands Group Query Payload Amount of Data Output Definition Data Structure
Query • Request • MediaQueryRequestType • QueryProfileType - RCR • Configures number of total items returned, number of total items returned per page and timeout value for query operations. • QueryInputDefinitionType • Multiple simple and compound search criteria parameters - QueryExpressionType (QueryParameterType, QueryGroupType) . QueryGroupOperandType (and, or) – QueryParameterOperandType (equal, greater, less) and Page number. • QueryOutputDefinitionType • Defines the QueryResultInfoType: noItems, full, light, metadata, physical, specific (Service specific result set – must be defined in the RCR). And specify ordering within query operation – QueryResultSortDirectionType (ascending, descending). • Response • MediaQueryResponseType
Query • QueryExpressionType: Simple Query: Title = NY • QueryParameterType • name = Title • value = NY • valueType = string • operand = equal • negated = false • <queryExpression > <resourceID>00000000-0000-0000-0000-000000000001</resourceID> <parameter> <resourceID>00000000-0000-0000-0000-000000000002</resourceID> <name>Title</name> <value>NY</value> <valueType>string</valueType> <Operand>equal</Operand> <negated>false</negated> </parameter></queryExpression>
Query • QueryExpressionType: Compound Query: • Title = NY OR Title = Boston OR (DateModified > 2010 AND DateModified < 2012 AND Not (DateCreated=2011)) • QueryGroupType (Compound Query.xml) • operand = OR • parameters • name = Title, value = NY, valueType = string, operand = equal, negated = false • name = Title, value = Boston, valueType = string, operand = equal, negated = false • groups • operand = AND • parameters • name = DateModified, value = 2010, valueType = YYYY, operand = greater, negated = false • name = DateModified, value = 2012, valueType = YYYY, operand = less, negated = false • name = DateCreated, value = 2011, valueType = YYYY, operand = equal, negated = true • Title = NY • OR • Title = Boston • OR • (DateModified > 2010 • AND • DateModified < 2012 • AND • Not (DateCreated=2011))
RCR ? • Definition • Datastore containing a list of properties describing the implementation behavior of the repository interface. • Provide the ability for a vendor to implement a FIMS repository interface on top of their product based on its capabilities • Service interoperability is achieved by having a common interface with a preset list of behaviors and settings (Support Lock, Extension Registration, Queryable Properties,… ) • External service can query the RCR to retrieve settings and behaviors