Improving control of content versions is an area of ongoing research and development. An area in which content control is of particular importance is in regulated industries, such as the pharmaceutical industry, where what is said about a product can have repercussions with regulatory agencies. However, content version control is an issue that arises in a number of different fields, any of which could benefit by new techniques designed to offer greater control over content and messaging.
A technique involves allowing use of content only if the content has been approved for the use. The content can be stored in a universal content format to facilitate cross-platform approval in a single approval transaction. The content can include granular content items incorporated into larger documents. In a specific implementation, it is possible to grant approval for one or more of the granular content items.
A system making use of a universal content format can import content from relevant parties associated with an organization, group, association, or other entity, and allow other parties to edit or display the content in accordance with their roles within the organization. Systems that use the universal content format have a variety of advantages.
In the example of
A computer system, as used in this paper, is intended to be construed broadly. In general, a computer system will include a processor, memory, non-volatile storage, and an interface. A typical computer system will usually include at least a processor, memory, and a device (e.g., a bus) coupling the memory to the processor.
The processor can be, for example, a general-purpose central processing unit (CPU), such as a microprocessor, or a special-purpose processor, such as a microcontroller.
The memory can include, by way of example but not limitation, random access memory (RAM), such as dynamic RAM (DRAM) and static RAM (SRAM). The memory can be local, remote, or distributed. As used in this paper, the term “computer-readable storage medium” is intended to include only physical media, such as memory. As used in this paper, a computer-readable medium is intended to include all mediums that are statutory (e.g., in the United States, under 35 U.S.C. 101), and to specifically exclude all mediums that are non-statutory in nature to the extent that the exclusion is necessary for a claim that includes the computer-readable medium to be valid. Known statutory computer-readable mediums include hardware (e.g., registers, random access memory (RAM), non-volatile (NV) storage, to name a few), but may or may not be limited to hardware.
The bus can also couple the processor to the non-volatile storage. The non-volatile storage is often a magnetic floppy or hard disk, a magnetic-optical disk, an optical disk, a read-only memory (ROM), such as a CD-ROM, EPROM, or EEPROM, a magnetic or optical card, or another form of storage for large amounts of data. Some of this data is often written, by a direct memory access process, into memory during execution of software on the computer system. The non-volatile storage can be local, remote, or distributed. The non-volatile storage is optional because systems can be created with all applicable data available in memory.
Software is typically stored in the non-volatile storage. Indeed, for large programs, it may not even be possible to store the entire program in the memory. Nevertheless, it should be understood that for software to run, if necessary, it is moved to a computer-readable location appropriate for processing, and for illustrative purposes, that location is referred to as the memory in this paper. Even when software is moved to the memory for execution, the processor will typically make use of hardware registers to store values associated with the software, and local cache that, ideally, serves to speed up execution. As used herein, a software program is assumed to be stored at any known or convenient location (from non-volatile storage to hardware registers) when the software program is referred to as “implemented in a computer-readable storage medium.” A processor is considered to be “configured to execute a program” when at least one value associated with the program is stored in a register readable by the processor.
In one example of operation, the computer system can be controlled by operating system software, which is a software program that includes a file management system, such as a disk operating system. One example of operating system software with associated file management system software is the family of operating systems known as Windows® from Microsoft Corporation of Redmond, Wash., and their associated file management systems. Another example of operating system software with its associated file management system software is the Linux operating system and its associated file management system. The file management system is typically stored in the non-volatile storage and causes the processor to execute the various acts required by the operating system to input and output data and to store data in the memory, including storing files on the non-volatile storage.
The bus can also couple the processor to the interface. The interface can include one or more input and/or output (I/O) devices. The I/O devices can include, by way of example but not limitation, a keyboard, a mouse or other pointing device, disk drives, printers, a scanner, and other I/O devices, including a display device. The display device can include, by way of example but not limitation, a cathode ray tube (CRT), liquid crystal display (LCD), or some other applicable known or convenient display device. The interface can include one or more of a modem or network interface. It will be appreciated that a modem or network interface can be considered to be part of the computer system. The interface can include an analog modem, isdn modem, cable modem, token ring interface, satellite transmission interface (e.g. “direct PC”), or other interfaces for coupling a computer system to other computer systems. Interfaces enable computer systems and other devices to be coupled together in a network.
Networks can include enterprise private networks and virtual private networks (collectively, private networks). As the name suggests, private networks are under the control of an entity rather than being open to the public. Where context dictates a single entity would control a network, it should be understood that reference to a network is a reference to the private portion subset of that network. For example, a LAN can be on a WAN, but only the LAN under the control of an entity; so if an engine controls policy on the network, it may be that the engine only controls policy on the LAN (or some other subset of the WAN). Private networks include a head office and optional regional offices (collectively, offices). Many offices enable remote users to connect to the private network offices via some other network, such as the Internet.
The term “Internet” as used herein refers to a network of networks that uses certain protocols, such as the TCP/IP protocol, and possibly other protocols such as the hypertext transfer protocol (HTTP) for hypertext markup language (HTML) documents that make up the World Wide Web (the web). Content is often provided by content servers, which are referred to as being “on” the Internet. A web server, which is one type of content server, is typically at least one computer system which operates as a server computer system and is configured to operate with the protocols of the World Wide Web and is coupled to the Internet. The physical connections of the Internet and the protocols and communication procedures of the Internet and the web are well known to those of skill in the relevant art.
For illustrative purposes, it is assumed the computer-readable medium 102 broadly includes, as understood from relevant context, anything from a minimalist coupling of the components, or a subset of the components, illustrated in the example of
In the example of
In a specific implementation, the client-approval-controlled locked granular content server 104 can be implemented on a device that includes an administration engine, an authoring engine, a reporting engine, a versioning engine, and/or other engines that facilitate or are otherwise associated with content management or server operation.
In the example of
In a specific implementation, the clients 106 can be implemented on a device, such as a tablet, smart phone, or other computing device, that includes a user content datastore and presentation plugins. The device can be coupled to a device management system (not shown) that can include, for example, a content datastore, a device catalog, a synchronization services engine, a secure site SSL over sockets engine, or the like. Depending upon the implementation, the device can be referred to as a client of the device management system (though the clients 106 that are also on the devices can instead or in addition have a client-server relationship with the client-approval-controlled locked granular content server 104, potentially meaning the device has at least two “clients”). To make
In the example of
In an example of a system where a datastore is implemented as a database, a database management system (DBMS) can be used to manage the datastore. In such a case, the DBMS may be thought of as part of the datastore or as part of another applicable depicted component, or as a separate functional unit (not shown). A DBMS is typically implemented as an engine that controls organization, storage, management, and retrieval of data in a database. DBMSs frequently provide the ability to query, backup and replicate, enforce rules, provide security, do computation, perform change and access logging, and automate optimization. Examples of DBMSs include Alpha Five, DataEase, Oracle database, IBM DB2, Adaptive Server Enterprise, FileMaker, Firebird, Ingres, Informix, Mark Logic, Microsoft Access, InterSystems Cache, Microsoft SQL Server, Microsoft Visual FoxPro, MonetDB, MySQL, PostgreSQL, Progress, SQLite, Teradata, CSQL, OpenLink Virtuoso, Daffodil DB, and OpenOffice.org Base, to name several.
Database servers can store databases, as well as the DBMS and related engines. Any of the datastores described in this paper could presumably be implemented as database servers. It should be noted that there are two logical views of data in a database, the logical (external) view and the physical (internal) view. In this paper, the logical view is generally assumed to be data found in a report, while the physical view is the data stored in a physical storage medium and available to a specifically programmed processor. With most DBMS implementations, there is one physical view and an almost unlimited number of logical views for the same data.
A DBMS typically includes a modeling language, data structure, database query language, and transaction mechanism. The modeling language is used to define the schema of each database in the DBMS, according to the database model, which may include a hierarchical model, network model, relational model, object model, or some other applicable known or convenient organization. An optimal structure may vary depending upon application requirements (e.g., speed, reliability, maintainability, scalability, and cost). One of the more common models in use today is the ad hoc model embedded in SQL. Data structures can include fields, records, files, objects, and any other applicable known or convenient structures for storing data. A database query language can enable users to query databases, and can include report writers and security mechanisms to prevent unauthorized access. A database transaction mechanism ideally ensures data integrity, even during concurrent user accesses, with fault tolerance. DBMSs can also include a metadata repository; metadata is data that describes other data.
The content datastore 108 includes content that is served by the client-approval-controlled locked granular content server 104 to one or more of the clients 106. The content datastore 108 or a portion thereof can be implemented on the same device as the server 104 or the content datastore 108 can be implemented on a device distinct from the device on which the server 104 is implemented. In a specific implementation, the content datastore 108 or a portion thereof is implemented on the same device as one or more of the clients 106.
In the example of
An approval data structure in the approvals datastore 110 can include approver data, such as an identifier of a user, role, or group that granted the approval, the data an approval was granted, or the like. The approval data structure can also include an indication of the granularity of approval. For example, approval could be for a fixed deck that cannot be modified (or cannot be modified without invalidating the fixed deck approval indicator) or a flexible deck with approvals of slides or slide buckets on a more granular level.
In the example of
Advantageously, using the system illustrated by way of example in
In the example of
In the example of
The source catalog 218 can be implemented as a datastore and can, accordingly, be referred to as a “source datastore.”
In the example of
In the example of
In the example of
In the example of
In the example of
The layer action structure 412 can include actions that can be taken on layer media, such as slide, fade, dissolve, or the like. Applicable actions can vary depending upon the type of content that is being displayed (e.g., image, video, and text may have slightly or significantly different applicable actions). Applicable actions can be added as needed or desired. The actions can be stored as pointers, variables, functions, methods (e.g., within an object), or in some other applicable manner. In a specific implementation that relates to the visual animation of layer media, the layer action structure 412 can be referred to as including a layer animation structure. Colloquial distinctions between media and animation can be blurred in some cases. For example, an item of content, such as a bullet point, could be animated to fly into a slide with a “whooshing” sound. The bullet point would obviously be characterized as media, the animation flying the bullet point into the slide animation, but reasonable minds could differ about whether the “whooshing” sound is media or animation. For the purposes of this paper, the former definition is assumed. That is, the media file that contains the “whooshing” sound is defined as layer media.
The layer data structure 414 can include a Z-ordered set of layers. The layer data structure 414 includes data about each layer in the appropriate order.
In the example of
The slide transition structure 418 can include data sufficient to determine how a slide transitions to a next slide. The transition can depend upon a transition type, such as standard, video, agenda, or some other descriptor for a type of slide.
The slide data structure 420 can include notes for a speaker or master of ceremonies or slide descriptions, such as leaf node, title, ID, version, or the like that are descriptive of a slide. The slide data structure 420 includes data that essentially points to an entire, complete slide, as opposed to data that is directed to a more granular content item within a given slide.
The slide relationship structure 422 can include data about how slides are ordered with relation to one another. In a specific implementation, this data can be referred to as “n of X” data to represent how a specific slide, n, falls within the organization of all slides, X, in a deck. Depending on the technology, a slide could have a more complex relationship than “n of X,” such as when the slides are essentially in a tree with multiple conditional branches. However, it is expected that, due to the nature of presentations in general, the “n of X” relationship may be adequate, with branches being treated as exceptions.
In the example of
The bucket data structure 426 can include data about a bucket. In order to enable interdependency between buckets, each bucket must be identifiable to enable ordering within a deck. Thus, the bucket data structure 426 will generally at least include a bucket identifier or address.
The bucket interdependency structure 428 can include a set of rules and fields related to how slides can be presented with respect to one another. Bucket interdependency can include locked (one bucket must immediately follow another bucket), following (one bucket must follow another bucket), flexible (either bucket must follow the other), none (a bucket has no interdependencies and can be deleted if desired), to name several examples. In a specific implementation, the interdependency data is associated with approvals, with deviations from the interdependencies resulting in the approval being rescinded (assuming the system even allows users to deviate).
In the example of
In the example of
In the example of
In the example of
In the example of
In the example of
In the example of
In the example of
In alternative implementations, known non-standardized or proprietary formats can be used. Depending upon the capabilities of the system, it may or may not be possible to search for an unknown format, find an appropriate program, and convert the unknown format to a known format prior to transcoding (for import) or convert a known format to an unknown format after transcoding (for export).
In the example of
In the example of
In the example of
In the example of
Advantageously, users can change an element of, for example, a slide as they desire, then await approval such that the modification is approval-controlled. The granular approval process facilitates percolating the change through the system for all documents that include the content item so that all documents have the approval-controlled content. So, if appropriately configured, it is not necessary to go back to change documents after a content item is changed and old presentations can still be used, as long as the content is appropriately updated beforehand.
The universal format datastore 702 can include interfaces, which can be implemented as engines, for site administrators, authors, deck managers, and speakers. Universal format data structures stored in the universal format datastore 702 can be implemented as described with reference to
The site administration engine 704 manages users for an admin of a content approval-controlled site. A rights management framework can include assigning users, data about which can be maintained in the users & roles datastore 706, to groups or roles within a business ontology. As the site administration engine 704 updates user roles and other user data, the relevant parts of the users & roles datastore 706 can be updated as appropriate. Applicable data can be used in association with the universal format datastore 702 to provide granular content control for users of the system. As a matter of practical use, the site administration engine 704 can also provide reports, which is represented by the arrow from the site administration engine 704 to the reports datastore 708 in the example of
The deck creation engine 710 can upload content from the source content datastore 712. The uploading of content can include utilizing an import wizard, such as a power point import wizard, to create a basic deck for storage in the universal format datastore 702. The source content datastore 712 can include content stored in a variety of formats, such as text, image, audio, video, multimedia, power point, pdf, or the like.
The deck assignment engine 714 assigns decks to presenters (e.g., speakers). The assignment can entail adjusting rights of presenters in association with content items or decks. The assignment can be manually input by a presenter manager; automated based upon a calendar (and corresponding rule set that grants rights based upon upcoming event dates), roles of users (either in association with a calendar date or the user's role or ranking within their organization), or other criteria and rule sets; or a combination of the two, such as when a presenter manager sets rules to find appropriate speakers and automatically assigns appropriate rights or when an automated procedure identifies seemingly appropriate presenters for approval by the presenter manager. In a specific implementation, in all cases, presentation rights are only granted for content that has been subjected to a prior approval process.
The presentation customization engine 716 is coupled to the universal format datastore 702 and the presentation datastore 718. The presentation datastore 718 can include content stored in a variety of formats, the same as the source content datastore 712, but is more likely, due to the nature of presentations, to be in a pdf, power point, multimedia, or flash enhanced slide deck (ESD) format. The presentation customization engine 716 can include, for example, a deck output wizard capable of providing users with appropriate permissions content in its constituent parts (or as a deck).
Taking advantage of user data from the site administration engine 704, content from the deck creation engine 710, and approval controls from the deck assignment engine, the presentation customization engine can provide approval controlled content to a presenter through a portal. Advantageously, a user can customize a deck and select an appropriate format for the deck. In a specific implementation, the portal includes an online speaker portal. An online speaker portal can include, for example, a calendaring engine, a use-analysis engine, and other engines intended to increase utility of the system. In a specific implementation, the calendaring engine tracks presentations of users (assuming the users utilize a calendaring system, which may or may not be required in a given implementation). Tracking presentations can enable the creation of potentially useful statistics about when and where (geographic or venue-specific) presentations are given, in general or for a specific presenter, role, or group. In a specific implementation, a slide aggregation engine can aggregate slides to results without tracking specific users or members (e.g., by using a zip code where a presentation was given). This enables the effectiveness of the presentation to be weighed in applicable circumstances (e.g., in the area in which the presentation was given). In a specific implementation, the use analysis engine can use timestamps to determine time spent on a given item of content (such as a slide) during a presentation, learn a set of slides that are frequently used in combination, or use some other tool to facilitate gaining a better understanding of when, how, or how often content items are used.
The system of
In the example of
If it is determined that the deck has been saved (804-Y), then the flowchart 800 continues to module 806 with saving a version of the deck. Using the example format, the system would increment the zzz subfield of the xxx.yyy.zzz field by 1 when saving a new version of the deck. The xxx and yyy fields would remain unchanged.
In the example of
If it is determined that approval has been sought (808-Y), then the flowchart 800 continues to module 810 with initiating an approval process. In a specific implementation, the approval process can be initiated by sending the deck (or a link or identifier thereof) to a user or group, such as a MedReg board. Alternatively or in addition, the deck could be published to a location that is indicative of approval being sought, or a flag could be set in association with the deck indicating the same.
In the example of
If it is determined that the deck has not been approved (812-N), then at least conceptually the flowchart 800 ends. In a specific implementation, users could continue to make edits to the deck after having approval denied (see module 816, below). Alternatively, failure to obtain approval could result in rights being withdrawn (though, at least in theory, additional edits could be made to the deck if rights were reinstated).
If, on the other hand, it is determined that the deck has been approved (812-Y), then the flowchart 800 continues to module 814 where the approved version of the deck is saved. Using the example format, the system would increment the xxx subfield of the xxx.yyy.zzz field by 1 when saving an approved version of the deck. The yyy and zzz subfields would each be reset to 000. In a specific implementation, saving the approved version can entail saving other data, such as a date of publication of the approved version, identification of a user or group responsible for the approval, and other data that is considered to be convenient for the purpose of keeping track of the approval process. Approved versions, particularly in implementations that include content control for presentations, the approved versions of decks can be tracked and analyzed, with deck activity reports being generated to help understand the impact of presentations making use of the approved decks. Such activities can be ongoing even as edits are made to the approved version (the edited versions not necessarily being tracked until they are approved).
In the example of
If, on the other hand, it is determined that the deck has not been saved (812-N), then the flowchart 800 continues to decision point 818 where it is determined whether the deck has been cloned. If it is determined that the deck has not been cloned (818-N), then the flowchart 800 returns to decision point 808 and continues as described previously.
If, on the other hand, it is determined that the deck has been cloned (818-Y), then the flowchart 800 continues to module 806 and continues as described previously. Using the example format, when saving the cloned version of the deck at module 806, the system would increment the yyy subfield of the xxx.yyy.zzz field by 1 when saving a cloned version of the deck and reset the zzz subfield to 000. The xxx subfield would remain unchanged.
Advantageously, making use of the techniques described, version control can be accomplished. The example provided with reference to
Lower order subfields can be associated with content items of the deck. For example, a deck xxx.yyy.zzz could have obtained approval, which results in the yyy and zzz subfields each being reset to 000. The buckets that are components of the deck could also have subfields aaa.bbb.ccc, where bbb and ccc are reset to 000 when the deck is approved, and aaa is incremented by 1. Depending upon the characteristics of the bucket, and implementation- and configuration-specific factors, the buckets can be treated as approved buckets when incorporated into a new deck. If the new deck includes buckets that follow their rules of use to be “approved,” the new deck can be approved implicitly, making an explicit approval process unnecessary for decks utilizing approved buckets appropriately.
The detailed description discloses examples and techniques, but it will be appreciated by those skilled in the relevant art that modifications, permutations, and equivalents thereof are within the scope of the teachings. It is therefore intended that the following appended claims include all such modifications, permutations, and equivalents. While certain aspects of the invention are presented below in certain claim forms, the applicant contemplates the various aspects of the invention in any number of claim forms. For example, while only one aspect of the invention is recited as a means-plus-function claim under 35 U.S.C. sec. 212, sixth paragraph, other aspects may likewise be embodied as a means-plus-function claim, or in other forms, such as being embodied in a computer-readable medium. (Any claims intended to be treated under 35 U.S.C. §212, ¶6 will begin with the words “means for”, but use of the term “for” in any other context is not intended to invoke treatment under 35 U.S.C. §212, ¶6.) Accordingly, the applicant reserves the right to add additional claims after filing the application to pursue such additional claim forms for other aspects of the invention.
This application claims priority to U.S. Provisional Patent Application No. 61/694,719, filed Aug. 29, 2012, entitled “CONTENT VERSION CONTROL,” which is incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
61694719 | Aug 2012 | US |