System administrators of a content management system (CMS) can face challenging tasks in providing rich user experiences for users of the content management system. Administering the content management system may involve setting permissions for accessing different types of data, controlling how data is approved for display to both internal and external users of the content management system, managing how data is stored and organized, and so forth.
Typically, the amount of data stored in the content management system can become large (e.g., on the order of gigabytes/terabytes) and difficult for system administrators to organize and use efficiently in providing a rich user experience. Further, inefficient use of IT resources such as servers, hard drives, and associated administrative support to maintain the large amounts of data can result in excessive costs. Still further, while the content management system may provide a number of features, some of an enterprise's data is not managed by the content management system. As a result, system administrators face a difficult task of easily and efficiently organizing and managing the data stored in the content management system while also providing users of the content management system with a rich user experience.
This Summary is provided to introduce a selection of representative concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used in any way that would limit the scope of the claimed subject matter.
Briefly, various aspects of the subject matter described herein are directed towards a technology by which a content management system (such as part of Microsoft® Office SharePoint® Server) synchronizes data with an external (e.g., third-party) data storage system. For example, an administrator may input data to an event receiver of the content management system to create or modify an event, and if the event is one that is flagged as being coordinated with the external data store, the event receiver synchronizes the content management system with the external data storage system.
One-way communication from the content management system to the data storage system may take place, such as by calling APIs of the data storage system. Two-way communication (between the content management system and the data store) may also take place, including providing parameters to the content management system from the data store for use in various ways, such as to construct a URL. Notifications and queues may be used by the external data storage system to synchronize data with the content management system.
Other advantages may become apparent from the following detailed description when taken in conjunction with the drawings.
The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
Described herein is a technology that integrates a content management system/enterprise collaboration tool (e.g., such as provided by Microsoft Corporation's SharePoint® technology) with an external source of content, such as a web service that provides video content, in which the content management system does not have the capabilities of the web service (e.g., does not support video). As will be understood, this allows administrators to leverage the management and other capabilities of the content management system and the storage and other capabilities of the web service. For example, media streaming with optimized network bandwidth may be a feature provided by the web service, but is not a capability supported by the content management system.
While the examples herein are directed towards SharePoint® and an external source of content in the form of a web service that provides video content, it is understood that these are only examples. Any content management system/collaboration program, and/or web service that provides content such as SQL content, may benefit from the technology described herein. As such, the present invention is not limited to any particular embodiments, aspects, concepts, structures, functionalities or examples described herein. Rather, any of the embodiments, aspects, concepts, structures, functionalities or examples described herein are non-limiting, and the present invention may be used various ways that provide benefits and advantages in computing and data management in general.
Turning to one example implementation generally represented in
As represented in
In one example implementation, the technology allows the use of SharePoint's out-of-box features to pull the content from the list and display it on pages of the site (content roll up from the list to pages using CBQ webparts), workflows for content management, integration with an events calendar along with media streaming capabilities from the external data storage system including side by side slideshow, routing to closest servers, and so forth. In general, the technology described herein thus keeps data stored in SharePoint® or any similar program synchronized with data stored in external data stores, whereby various products may use the data while taking advantage of SharePoint®'s or any similar program's capabilities including data roll-up, and its user interfaces 116.
In one example implementation, the technology is implemented as a utility/module that synchronizes the metadata 118 associated with a custom list item or other data structure item in SharePoint® with the external data store/web service 108. This allows users to use to leverage the content management capabilities in Microsoft Office SharePoint® Server and the features provided by (e.g., third party) software using externally stored data. One example implementation facilitates synchronizing SharePoint® custom list data with the external data storage system data store, allowing users to use the data storage system's media streaming features, and providing an integrated media experience within Microsoft Office SharePoint® Server. Note that while synchronizing of media in the form of webcasts and the like are used in the examples, it is understood that any external data store of any content may be synchronized, (possibly in conjunction with some internally/locally stored content). For example, news data may be kept synchronized with an external news data source or other data set, audio data may be kept synchronized, and so forth.
By way of a video content example, the technology thus provides the centralized portal 104 for webcast content and videos. Users are able to browse for videos through various channels; editorial teams may promote previous and upcoming events. For example, the technology may provide browsing functionality for end users through a video catalog, an administration layer to allow editorial staff to upload assets and metadata, a workflow to streamline the content upload and approval process, and extensibility for additional channels that may be added. To this end, there is provided an interface to end users and administrators to browse and achieve event promotion, along with an integrated metadata repository for all streaming and on-demand content, and a scalable server solution to support increased demand for videos.
As described in the aforementioned related application, scenarios include announcements for live events, on-demand viewing, archive requests, calendar functionality, RSS feeds and so forth. Administrator scenarios include upload of an event to the module 112 that handles the synchronization. In general, when a publisher adds metadata to a product, module 112 synchronizes that metadata to the external data source system/web services 108. If any metadata is updated in the product or the external system web services 108, the metadata 112 is automatically synchronized back in the other direction via the module 112.
If so, as represented via step 204, step 206 is executed by the DSS platform to call APIs in order to create a media program, with an associated identifier. For example, the flag may cause an event receiver to invoke create/update APIs every time a change is made to the data, including upon creation. These APIs may create/update the event in the external data storage system and return parameters to the content management system via the data synchronization module 112; for example such parameters may identify the respective Program and Content IDs to SharePoint®. Any type of parameter is feasible, e.g., text, XML schema, and so forth.
Once the item is created (and stored, step 208) in the external data storage system, any settings required (e.g., for streaming purposes such as encoders, stations, players) are configured by the technical teams directly in the external data storage system (DSS), as represented via step 210. These settings may be set in the external data store, and because of the two-way synchronization, the content management system will be synchronized to automatically update the corresponding data (metadata) stored therein. The event receiver may generate a URL for the event, such as based on the parameters returned from the external data storage (e.g., identifiers) returned to the content management system. If the event is a not an external data storage system event, the Administrator may manually enter the URL and no APIs are invoked when the item is saved.
As represented in
In this example, the event has an associated expiration date and reminder date. On the reminder date, a notification is sent to the content owner indicating that the specific event is going to expire on the expiration date. On the expiration date, the event is deactivated in the external data store (step 220) and therefore in the content management system as well (step 221).
Example Schema in a SharePoint®-Based Content Management System.
The metadata for events is stored in a custom list that supports attachments. For example, this list may be located under XYZW>News & Events>StudioCasts>.
Any content type can be synchronized with a data store if the fields are mapped appropriately. In one example implementation, the list includes two content types: Event and Event Group. These content types derive from the “Item” content type.
Event Content Type:
Event Group Content Type:
Considering security, when an event is created, the Administrator enters the security groups and/or users that will have access to view the event. Administrators can check the “Default” checkbox to allow read access to all users. If no checkbox is checked, no end user can view the content. When the event is published, it is viewable only by the users that were granted permissions. To allow the administrators on the list to be able to view/edit the item, they will be granted permissions in addition to the ones selected by the administrator. Only the author of the event is granted full access to the item along with approvers for the list and a pre-specified security group, e.g., consisting of a set of “super broadcasters” for media content.
The item level security is propagated to the external data storage system from the content management system on item creation and update to maintain access control through their interface.
The event receiver triggers required actions when the data structure (e.g., StudioCast list) is modified. The following actions are triggered by the event receiver 104:
On Item Creation:
1) The item is pushed to the Event calendar list for publishing on item approval.
External data storage system integration: Metadata Storage
The metadata for events resides in the content management system (e.g., SharePoint®) and is replicated to the external data storage system for events managed through the external data storage system. This model of mastering the data in SharePoint® provides the benefit of the rich workflow capabilities in SharePoint®, handles the requirement to support external channels not streamed through the external data storage system, and simplifies Microsoft® Office SharePoint® Server calendar integration.
Because some data is maintained to two systems, they need to be kept synchronized. This is done by ingesting data from the content management system to the external data storage system, and synchronizing data from the external data storage system to the content management system. The external data storage system API calls are made through the Event receiver, described above.
For synchronizing data from the external data storage system to the content management system, changes from the external data storage system are pushed to the content management system using notifications. Notifications may be used for the following scenarios:
Notification for data synchronization:
The following describes example data structure fields that may be associated with an example video-related event:
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to: personal computers, server computers, hand-held or laptop devices, tablet devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth, which perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in local and/or remote computer storage media including memory storage devices.
With reference to
The computer 310 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer 310 and includes both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by the computer 310. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above may also be included within the scope of computer-readable media.
The system memory 330 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 331 and random access memory (RAM) 332. A basic input/output system 333 (BIOS), containing the basic routines that help to transfer information between elements within computer 310, such as during start-up, is typically stored in ROM 331. RAM 332 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 320. By way of example, and not limitation,
The computer 310 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media, described above and illustrated in
The computer 310 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 380. The remote computer 380 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 310, although only a memory storage device 381 has been illustrated in
When used in a LAN networking environment, the computer 310 is connected to the LAN 371 through a network interface or adapter 370. When used in a WAN networking environment, the computer 310 typically includes a modem 372 or other means for establishing communications over the WAN 373, such as the Internet. The modem 372, which may be internal or external, may be connected to the system bus 321 via the user input interface 360 or other appropriate mechanism. A wireless networking component 374 such as comprising an interface and antenna may be coupled through a suitable device such as an access point or peer computer to a WAN or LAN. In a networked environment, program modules depicted relative to the computer 310, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
An auxiliary subsystem 399 (e.g., for auxiliary display of content) may be connected via the user interface 360 to allow data such as program content, system status and event notifications to be provided to the user, even if the main portions of the computer system are in a low power state. The auxiliary subsystem 399 may be connected to the modem 372 and/or network interface 370 to allow communication between these systems while the main processing unit 320 is in a low power state.
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.
The present application claims priority to U.S. provisional patent application Ser. No. 60/961,180, filed Jul. 19, 2007 and hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
60961180 | Jul 2007 | US |