This disclosure relates to content management systems, and more particularly to techniques for creating and managing extensible content object metadata.
Cloud-based content management services and systems have impacted the way personal and corporate electronic information objects (e.g., files, images, videos, etc.) are stored, and has also impacted the way such personal and corporate content objects are shared and managed. Content management systems provide an ability to securely share large volumes of content objects among trusted collaborators on a variety of user devices, such as mobile phones, tablets, laptop computers, desktop computers, and/or other devices. In some systems, sharing and collaboration activities include one or more operations that are performed over the content objects. Such operations are often organized into workflows. Workflows specify certain operations that are to be performed in an ordered sequence or “flow” over the content objects.
The operations of a workflow may be performed by one user, multiple users (e.g., collaborators), and/or even autonomously by one or more computing entities (e.g., processes, agents, applications, etc.). As an example, a document approval workflow might facilitate the approval of a published document by automatically forwarding the document in a sequence to a set of approvers for user viewing, editing, and approval. As the number of users and content objects served by cloud-based content management systems continues to increase, so does the number of workflows and underlying operations that are performed over the content objects.
The execution efficiency of many operations performed over the content objects can be improved by accessing various attributes of the content objects. Such object attributes can describe the size, creation date, last modification date, and/or other characteristics of the content object. For example, a document backup operation might consider the last modification date of a content object to determine if that content object has been changed since the last backup event. In such a case, the efficiency of the backup operation is improved by not backing up a content object that has not changed since the last backup event. The aforementioned object attributes can be embedded in the content object (e.g., in a media file) and/or included in the file system metadata associated with the content object.
Modern cloud-based content management systems often implement a single global metadata schema that is applied over all content objects so as to capture properties and/or metadata associated with the content objects. Such a global metadata schema is often statically configured to, for example, hold file system metadata and/or a mix of file system metadata and other metadata that facilitates performance of various collaboration activities.
Unfortunately, such a static global metadata schema is deficient with respect to efficient execution of operations and/or workflows. To illustrate, consider a contract dashboard workflow that presents a list of active contracts sorted by contract value. This workflow can be efficiently performed if a contract value attribute such as a contract value attribute expressed in dollars were to be included in the metadata associated with contracts. Having the contract value attribute in the metadata would obviate the need of having to open each contract content object in order to extract (e.g., parse, analyze, etc.) respective contract values. However, it can happen that a contract value attribute (or some other attribute that pertains to a different example) might be a newly demanded metadata attribute that is specific only to a specific contract dashboard workflow. As such, it would most likely not be included in a global metadata schema.
One possible approach to adding and managing workflow-specific metadata or any such specialized metadata is to extend, as the need arises, the global metadata schema to include the workflow-specific metadata. As can be seen however, this approach would consume significant computing resources to continually update and maintain a global metadata schema to accommodate a growing number of workflows and/or other operations. This sort of continuous updating becomes extremely inefficient and/or impractical. Moreover, many content objects that are not subject to a particular workflow would need to nonetheless carry metadata associated with that specific workflow. What is needed is a way to efficiently associate workflow-specific metadata and/or operation-specific metadata and/or other specialized metadata with individual instances of content objects.
The present disclosure describes techniques used in systems, methods, and in computer program products for creating and managing extensible content object metadata, which techniques advance the relevant technologies. More specifically, the present disclosure describes techniques used in systems, methods, and in computer program products for creating and maintaining extensible metadata for shared content objects. Certain embodiments are directed to technological solutions that apply structured sets of extensible metadata to content objects to facilitate the execution of operations (e.g., workflows) associated with the content objects.
The disclosed embodiments modify and improve over legacy approaches. In particular, the herein-disclosed techniques provide technical solutions that address the technical problems attendant to efficiently associating extensible metadata with content objects in highly collaborative content management systems. Such technical solutions involve specific implementations (i.e., data organization, data communication paths, module-to-module interrelationships, etc.) that relate to the software arts for improving computer functionality. In particular, various applications of the herein-disclosed improvements in computer functionality serve to reduce demands for computer memory, reduce demands for computer processing power, reduce network bandwidth usage, and reduce demands for intercomponent communications. For example, unnecessary management of metadata (e.g., unnecessary duplication, unnecessary propagation metadata, etc.) is avoided, which in turn results in less memory being used and fewer CPU cycles being demanded.
The ordered combination of steps of the embodiments serve in the context of practical applications that perform steps for applying structured sets of extensible metadata to shared content objects. Moreover, the herein-disclosed techniques for applying structured sets of extensible metadata to content objects serve to overcome long standing yet heretofore unsolved technological problems associated with efficiently associating extensible metadata with content objects in highly collaborative content management systems.
Aspects of the present disclosure achieve performance and other improvements in peripheral technical fields including (but not limited to) workflow management and design of human-machine interfaces.
Further details of aspects, objectives, and advantages of the technological embodiments are described herein, and in the drawings and claims.
The drawings described below are for illustration purposes only. The drawings are not intended to limit the scope of the present disclosure.
Aspects of the present disclosure solve problems associated with using computer systems for efficiently associating extensible metadata with content objects in highly collaborative content management systems. These problems are unique to various computer-implemented methods that efficiently associate extensible metadata with content objects in highly collaborative content management systems. Some embodiments are directed to approaches for associating structured sets of extensible metadata to content objects so as to facilitate the execution of operations (e.g., workflows) over the content objects. The accompanying figures and discussions herein present example environments, systems, methods, and computer program products for extensible metadata for shared content objects.
Disclosed herein are techniques for applying structured sets of extensible metadata to content objects to facilitate the execution of operations (e.g., workflows) associated with the content objects. The sets of extensible metadata are structured in accordance with an extensible metadata data model. The extensible metadata data model is structured to accommodate a variety of extensible metadata that are specific to a particular operation or set of operations and specific to a particular content object. In certain embodiments, the operation-specific portion of the extensible metadata data model is associated with one or more metadata templates. A metadata template comprises information that characterizes the operation-specific portion of an extensible metadata data model. More specifically, A metadata template is a preconfigured set of attributes that pertain to a specific content object or a specific workflow or workflow stage.
Metadata templates might be created, for example, to establish extensible metadata that facilitate the execution of respective operations or sets of operations (e.g., workflows) over certain select content objects. A single content object can take on multiple associations with multiple metadata templates and that single object can serve in multiple contexts. For example, a content object used in a physical loss insurance claim context might be associated with a photograph, and that photograph might take on a first set of metadata that informs a first workflow, whereas in a different context, such as in a case of a ransomware or hacking or other sort of electronic data loss insurance claim the object might include a textural description that takes on a second set of metadata that informs a second workflow.
Certain metadata templates might be created for a set of respective workflows by one or more workflow administrators or architects that have detailed knowledge of the workflows and the content objects that are to be subjected to the workflows. As described herein, the extensible metadata attached to a content object (e.g., in accordance with a metadata template or an extensible metadata data model) is distinct from any workflow metadata that might be attached to the workflow (e.g., to manage workflow participants, workflow sequencing, etc.).
At some moment in time, some or all of the extensible metadata for a particular content object is initially assigned to the content object and populated in accordance with the extensible metadata data model and any underlying metadata templates. The timing of when the metadata assignment and/or the initial metadata population are performed can vary. In certain embodiments, an initial set of extensible metadata is assigned to a content object in response to a metadata template being attached to the content object by an administrator. Such attachment can be performed asynchronously to the execution of any operations (e.g., workflows) performed over the content object.
While certain default metadata values may be associated with a particular metadata template, other portions of the extensible metadata may be automatically populated at a later time (e.g., during execution of the underlying operations or workflows). The operations (e.g., workflows) are executed over the content objects based at least in part on the extensible metadata values, which may also be modified in accordance with the operations. In certain embodiments, the extensible metadata of a particular workflow are subjected to a set of workflow rules to determine one or more actions (e.g., workflow responses) associated with the workflow.
Some of the terms used in this description are defined below for easy reference. The presented terms and their respective definitions are not rigidly restricted to these definitions—a term may be further defined by the term's use within this disclosure. The term “exemplary” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the word exemplary is intended to present concepts in a concrete fashion. As used in this application and the appended claims, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or is clear from the context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A, X employs B, or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances. As used herein, at least one of A or B means at least one of A, or at least one of B, or at least one of both A and B. In other words, this phrase is disjunctive. The articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or is clear from the context to be directed to a singular form.
Various embodiments are described herein with reference to the figures. It should be noted that the figures are not necessarily drawn to scale, and that elements of similar structures or functions are sometimes represented by like reference characters throughout the figures. It should also be noted that the figures are only intended to facilitate the description of the disclosed embodiments—they are not representative of an exhaustive treatment of all possible embodiments, and they are not intended to impute any limitation as to the scope of the claims. In addition, an illustrated embodiment need not portray all aspects or advantages of usage in any particular environment.
An aspect or an advantage described in conjunction with a particular embodiment is not necessarily limited to that embodiment and can be practiced in any other embodiments even if not so illustrated. References throughout this specification to “some embodiments” or “other embodiments” refer to a particular feature, structure, material or characteristic described in connection with the embodiments as being included in at least one embodiment. Thus, the appearance of the phrases “in some embodiments” or “in other embodiments” in various places throughout this specification are not necessarily referring to the same embodiment or embodiments. The disclosed embodiments are not intended to be limiting of the claims.
The logical depiction of
Global metadata, as used herein, is metadata that is structured according to a single metadata schema (e.g., global metadata schema) that is applied to all content objects in a system. As such, the scope of the object attributes described by the instances of global metadata attached to the content objects is uniform over the entire corpus of content objects in the system. Global metadata might describe the size, creation date, last modification date, and/or other attributes of the content objects. In contrast to global metadata, extensible metadata is information that is applicable to particular content object or a particular type of content objects. As used herein extensible metadata is information that is particular to a given workflow and content object pair. The extensible metadata informs the workflow as to how to perform those operations on paired content object. Extensible metadata is different from global metadata at least in that a particular unit of extensible metadata can be associated with a content object in addition to that content object's global metadata.
In modern content management systems and, in particular, in highly collaborative systems having a large number of content objects, the number and variety of operations and/or combinations of operations performed over content objects is exploding. New workflows are being defined each day, which workflows are performed over one or more content objects so as to achieve certain outcomes. Such operations might be associated with editing, viewing, sorting, filtering, querying, copying, deleting, and/or other activities performed over the content objects. The operations may be performed autonomously by a computing entity (e.g., process, agent, application, etc.) or in conjunction with certain user interactions (e.g., user inputs at a user interface).
Workflows can be used in many practical applications. For example, a computing entity performing a document backup operation might access the last modification date recorded in the global metadata of a content object to determine if the content object has been changed since the last backup event. In this case, computing resources are saved by not backing up a content object that has not changed since the last backup event.
As earlier mentioned, however, while some operations may be efficiently executed over a content object using the global metadata associated with the content object, many other operations might be most efficiently executed by using object attributes that are not included in the global metadata. However, extending the global metadata schema to include a full range of operation-specific metadata would consume significant computing resources that would be needed to continually update and maintain the ever-expanding schema over the corpus of content objects in a system.
The herein disclosed techniques associate operation-specific metadata with content objects. Structured sets of extensible metadata are associated with specific content objects. The information in the extensible metadata facilitates execution of operations of respective workflows.
Consider an operation 110M that is to be executed over file F1 to achieve an outcome 112M, and an operation 110N that is to be executed over file F2 to achieve an outcome 112N. In this case, respective instances of an extensible metadata data model associated with operation 110M and operation 110N are established (operation 1). An extensible metadata data model defines the content and structure of a set of extensible metadata. More specifically, the extensible metadata data model identifies the object attributes and/or other information to be included in the extensible metadata and the structure of how such object attributes and/or other information are codified in the extensible metadata. For example, a particular implementation of an extensible metadata data model might identify a “vendor” object attribute, a “status” object attribute, and a “value” object attribute that are to be organized with their respective values in a key-value structure (e.g., <attribute>: <value>) in a set of extensible metadata. The extensible metadata data model is structured to accommodate a variety of extensible metadata that are specific to a particular operation or set of operations and specific to a particular content object. As indicated in the figure, a first instance “M” of the extensible metadata data model is configured to facilitate the operation 110M, and a second instance “N” of the extensible metadata data model is configured to facilitate the operation 110N.
At some moment in time, instances of extensible metadata 106 are assigned to select content objects in accordance with the respective instances of the extensible metadata data model (operation 2). Specifically, a set M1 of extensible metadata is assigned to file F1 in accordance with data model instance “M”, and a set N2 of extensible metadata is assigned to file F2 in accordance with data model instance “N”. The operations (e.g., operation 110M and operation 110N) are performed over the content objects (e.g., file F1 and file F2) in accordance with the respective sets (e.g., M1 and N2) of extensible metadata assigned to the content objects (operation 3). As merely one example, the inclusion or exclusion of file F1 in a list of files at a user interface might be determined by the outcome of a filter operation performed over a certain object attribute in the extensible metadata assigned to file F1. As another example, file F2 might be positioned in a list of files according to the outcome of a sorting operation performed over one or more object attributes included in the respective sets of extensible metadata assigned to file F2 and the other files in the list.
The assignment of operation-specific and object-specific sets of extensible metadata to content objects as disclosed herein facilitates improvements in computer functionality that serve to reduce the demand for computer memory, reduce the demand for computer processing power, reduce network bandwidth use, and reduce the demand for intercomponent communication. Specifically, consumption of such computing resources to continually update and maintain a global metadata schema and corresponding instances of global metadata over the corpus of content objects in a system to accommodate a growing number and variety of operations performed over the content objects is eliminated.
The foregoing discusses techniques for assigning operation-specific sets of extensible metadata to facilitate the execution of operations over the content objects. As earlier mentioned, such operations are often organized into workflows. Workflows are combinations of operations that are to be performed in an ordered sequence or “flow” over one or more content objects. The operations of a workflow may be performed by one user, multiple users (e.g., collaborators), and/or even autonomously by one or more computing entities (e.g., processes, agents, applications, etc.). One embodiment of the herein disclosed techniques as applied to workflows in a content management environment is disclosed as follows.
The logical depiction of
The herein disclosed techniques address such problems attendant to efficiently associating workflow-specific metadata with content objects in highly collaborative content management systems by applying structured sets of extensible metadata to content objects to facilitate the execution of respective workflows performed over the content objects. As earlier described, the sets of extensible metadata are structured in accordance with respective instances of an extensible metadata data model. In the embodiment of
The metadata templates and associated instances of the extensible metadata data model are created according to the herein disclosed techniques to facilitate the execution of respective workflows over the content objects. For example, a metadata template 116J is created for content objects that are subjected to workflow 120J, and metadata template 116K is created for content objects that are subjected to workflow 120K. As can be observed, the object attributes (e.g., “a4”, “a5”, and “a6”) identified by metadata template 116J, the object attributes (e.g., “a7”, “a8”, and “a 9”) identified by metadata template 116K, and the object attributes (e.g., “a1” and “a2”) identified by global metadata schema 1141 are all distinct from one another.
Shared object attributes over the various templates, data model instances, and schemas are possible. In some cases, the metadata templates might be created for a set of respective workflows by one or more workflow administrators or architects that have a detailed knowledge of the workflows and the content objects that are to be associated with the workflows. In any case, the extensible metadata attached to a content object (e.g., in accordance with a metadata template and/or extensible metadata data model) that is subject to a workflow is distinct from any workflow metadata (e.g., workflow metadata 108J and workflow metadata 108K) that might be attached to the workflow itself (e.g., to manage workflow participants, workflow sequencing, etc.).
When the metadata templates are established, they are associated with one or more select content objects (operation 5). In the example scenario of
The timing of when the metadata template association and/or the initial extensible metadata population are performed can vary. In certain embodiments, an initial set of extensible metadata is assigned to a content object in response to a metadata template being attached to the content object by an administrator. Such attachment can be performed asynchronously to the execution of any workflows or operations performed over the content object. While certain default metadata values may be associated with a particular metadata template, other portions of the extensible metadata may be automatically populated at a later time (e.g., during execution of the underlying operations or workflows).
The workflows are executed over the content objects based at least in part on the workflow-specific extensible metadata (operation 7). More specifically, workflow 120J accesses the extensible metadata of file F1 that is structured according to metadata template 116j to facilitate the execution of workflow 120J, and workflow 120K accesses the extensible metadata of file F1 that is structured according to metadata template 116K to facilitate the execution of workflow 120K. In some cases, the extensible metadata may be modified in accordance with responses generated by a particular workflow. For example, object attributes “a4” and “a5” are modified in response to executing the workflow 120J and object attribute “a8” is modified in response to executing the workflow 120K. Portions of global metadata 104 (e.g., object attribute “a2”) may also be modified in accordance with one or more workflows (e.g., workflow 120K). For instance, object attribute “a2” may be modified from value “B” to value “B′”, as shown.
One embodiment of techniques for managing extensible content objects is disclosed in further detail as follows.
The setup operations 210 of extensible content object metadata management technique 200 commences by maintaining a set of content objects that are shared or otherwise accessed by multiple users (step 212). As an example, the content objects might be maintained by a content management system that facilitates access to and interactions over the content object by a plurality of users. In such systems, one or more workflows might be established to operate over the content objects (step 214). The workflows comprise one or more operations that are executed over certain ones of the content objects. The workflows and/or operations may involve interactions by the users and/or may be performed autonomously by one or more computing entities. To facilitate the herein disclosed techniques, one or more metadata templates that correspond to the one or more workflows are created (step 216). In some cases, a metadata template identifies a specific set of object attributes that will improve the execution performance of a respective workflow and/or its underlying operations.
As indicated in workflow operations 220 of extensible content object metadata management technique 200, a workflow event that corresponds to a workflow associated with a particular content object is detected (step 222). The workflow event can be one of many workflow events that correspond to the execution of the aforementioned workflows over the content objects. In this case, a workflow event corresponding to a particular one of the workflows being executed or to be executed over a particular one of the content objects is considered. The workflow event might be invoked upon creation of the workflow, and/or upon launch of the workflow over the content object, and/or upon creation and/or modification of the content object, and/or upon occurrence of some other event.
In response to identifying the workflow event, a set of extensible metadata is assigned to the content object in accordance with the metadata template associated with the workflow (step 224). In some cases, the assignment is achieved by associating the content object with the set of extensible metadata in a data record in a database (e.g., a row in a data table) according to an extensible metadata data model. Some or all of the extensible metadata may be populated in response to the assignment or prior to the assignment (e.g., as default metadata template values). The extensible metadata may be populated by one or more user inputs (e.g., by a user at a user interface) and/or automatically by one or more computing entities. As an example, an extensible metadata manager might access one or more learning models to determine certain portions of the extensible metadata.
When the extensible metadata associated with the content object is assigned and populated, the workflow is executed over the content object based at least in part on the extensible metadata (step 226). More specifically, the workflow accesses the extensible metadata of the content object that is defined by the metadata template to facilitate the execution of the workflow.
One embodiment of a system, data flows, and data structures for implementing the extensible content object metadata management technique 200 and/or other herein disclosed techniques, is disclosed as follows.
As shown, system 300 comprises an instance of a server 310 operating at content management system 350. Server 310 comprises a message processor 312, an extensible metadata manager 314 (which further comprises a template generator 315), and a workflow engine 316 (which further comprises a workflow generator 317). A plurality of instances of the foregoing components might operate at a plurality of instances of servers (e.g., server 310) at content management system 350 and/or any portion of system 300.
Such instances can access each other (e.g., through a communications layer 318) and/or a set of storage devices 330 that store various information that facilitates the operation of the components of system 300 and/or any implementations of the herein disclosed techniques. For example, server 310 might facilitate access to shared content in content objects 102 by the users (e.g., user 3101, . . . , user 310N) from a respective set of user devices (e.g., user device 3021, . . . , user device 302N). The content objects (e.g., files, folders, etc.) in content objects 102 are characterized at least in part by a set of global metadata 104 stored at storage devices 330. As earlier described, global metadata 104 might be structured in accordance with a global metadata schema 1142. Furthermore, the users are characterized at least in part by a set of user attributes 348 stored in a set of user profiles 338 at storage devices 330.
As discussed herein, the users who access the content objects maintained at content management system 350 perform various operations over the content objects to carry out certain activities (e.g., collaboration activities). Such operations are often combined and sequenced into workflows. To establish a workflow, a user issues a set of workflow specifications in one or more instances of messages 322 to be received by message processor 312. Specifically, such workflows might be specified by users (e.g., user 3101, . . . , user 310N) interacting with various instances of workflow views (e.g., workflow views 3081, . . . , workflow views 308N) presented at user interfaces (e.g., user interface 3041, . . . , user interface 304N) accessible by the users (e.g., at user device 3021, . . . , user device 302N).
The workflow specifications received at message processor 312 are forwarded to workflow generator 317 to generate an instance of a set of workflows 332 stored in storage devices 330. Workflows 332 are characterized by respective sets of workflow objects 342 that are generated by workflow generator 317 based at least in part on the submitted workflow specifications. Workflow generation might be performed exclusively by a user, or in a computer-aided fashion. In some cases, workflow objects 342 are generated autonomously from workflow specifications 417.
The workflow objects 342 describe, for example, the one or more operations that comprise the workflow, the relationships (e.g., parent-child relationships) between the operations, and the workflow states that correspond to the operations. As shown, workflow objects 342 can comprise instances of workflow metadata 108 that is accessed to facilitate the management of workflow participants, workflow sequencing, and/or other characteristics of workflows 332.
After a workflow is established, workflow engine 316 executes the workflow at least in part by receiving instances of workflow events and issuing instances of workflow responses according to a set of workflow states 324 associated with the workflow. In some cases, the workflow events and/or workflow responses are transmitted as instances of messages 322 between server 310 and the user devices of the users. Specifically, user 3101 and user 310N might interact with respective instances of workflow views 3081 and workflow views 308N to invoke workflow events and receive workflow responses associated with a particular workflow. For example, a user might click an “Approve” button in a workflow view to create a workflow event that might change the workflow state of the workflow.
In some cases, the workflow views can be derived from the workflow responses. For example, a workflow state change might precipitate a workflow response that results in presenting a signature box to a user (e.g., an approver) in a workflow view. The workflow responses may also invoke changes to workflow metadata 108. For example, a workflow event corresponding to a “Forward” button click might generate a workflow response comprising an update to workflow metadata 108 that describes a workflow state change (e.g., from “active” to “done”) which then triggers a workflow alert to be sent to the user device of the owner of the next operation(s) in the workflow.
In accordance with the herein disclosed techniques, the execution of workflows 332 is facilitated at least in part by extensible metadata 106 stored in storage devices 330 of content management system 350. Specifically, sets of extensible metadata 106 are attached to select instances of content objects 102 to facilitate execution of workflows 332 over the content objects. The sets of extensible metadata 106 are structured according to respective instances of an extensible metadata data model 344. Each instance of extensible metadata data model 344 is configured to facilitate the execution of one or more operations or sets of operations (e.g., workflows).
The operation-specific portion of extensible metadata data model 344 is often derived from instances of metadata templates 116. In the shown embodiment, a metadata template is defined by a set of template specifications issued to content management system 350 in one or more instances of messages 322. Such template specifications might identify the object attributes, the value options and/or types for the object attributes, and/or the default values to be included in instances of extensible metadata that are associated with the metadata template.
In certain embodiments, template generator 315 at extensible metadata manager 314 presents various instances of metadata template views (e.g., metadata template views 3061, . . . , metadata template views 306N) at the user devices of the users to facilitate selection and recording of the template specifications. The users interact with the metadata template views (e.g., a sequence of views that comprise a metadata template generation wizard) to submit the template specifications to template generator 315, which uses the specifications to generate respective instances of metadata templates 116. Metadata templates 116 and extensible metadata data model 344 are consulted by extensible metadata manager 314 to populate and assign sets of extensible metadata 106 to select instances of content objects 102. In some cases, instances of messages 322 comprising various metadata values are issued by the users (e.g., from user inputs entered at their respective user interfaces) and received at extensible metadata manager 314 to facilitate the population of the extensible metadata 106. In other cases, extensible metadata manager 314 accesses various computing entities at content management system 350 to populate the extensible metadata 106.
Workflow engine 316 accesses the sets of extensible metadata 106 associated with certain content objects to facilitate the workflows executed over those content objects. In some embodiments, workflow engine 316 applies the extensible metadata to a set of workflow rules 334 to determine the workflow responses of the workflows. In some cases, certain workflow events and/or workflow metadata may also be applied to workflow rules 334 to determine the workflow responses. As shown, such workflow rules are stored in a set of workflow rules 334 in storage devices 330 of content management system 350. A set of rules (e.g., rule base) such as workflow rules 334, or any other rules described herein, comprise data records storing various information that can be used to form one or more constraints to apply to certain functions and/or operations. For example, the information pertaining to a rule in the rule base might comprise the conditional logic operands (e.g., input variables, conditions, constraints, etc.) and/or operators (e.g., “if”, “then”, “and”, “or”, “greater than”, “less than”, etc.) for forming a conditional logic statement that returns one or more results.
In some cases, the information pertaining to a rule might comprise the conditions (e.g., predicates, conditional expressions, field names, field values, etc.) and commands and clauses (e.g., “select”, “where”, “order by”, etc.) for forming a data statement (e.g., a query) that returns one or more results. Workflow rules 334, for example, might consume certain object attributes from the sets of extensible metadata 106 as inputs to determine one or more workflow responses as outputs.
The foregoing discussions include techniques for creating metadata templates that correspond to one or more workflows (e.g., step 216 of
The representative data structures of
According to metadata template creation technique 4A00, user 3101 interacts with various instances of metadata template views 3061 at user interface 3041 of user device 3021 to create metadata templates. Specifically, user 3101 issues instances of template specifications 416 to template generator 315 to create respective instances of metadata templates 116. When a set of extensible metadata 106 is assigned to a content object and populated according to the herein disclosed techniques, one or more of the metadata templates 116 are applied to an extensible metadata data model to determine the structure and/or organization of the set of extensible metadata. More specifically, the one or more metadata templates 116 define the content and structure of the operation-specific portion of the set of extensible metadata, as earlier discussed.
As shown in the representative depiction of extensible metadata data model 344 in
One application of the extensible metadata as disclosed herein assigns sets of extensible metadata to content objects to facilitate the execution of workflows or other specialized services over the content objects. To establish such workflows, user 3101 interacts with various instances of workflow views 3081 at user interface 3041 of user device 3021. Specifically, user 3101 interacts with workflow views 3081 to issue instances of workflow specifications 417 to workflow generator 317 to generate respective instances of workflows 332 and associated instances of workflow rules 334.
As depicted in select workflow object attributes 442, each instance of workflows 332 is represented by an object that describes a workflow identifier (e.g., stored in a “wfID” field), a workflow name (e.g., stored in a “name” field), a workflow description (e.g., stored in a “description” field), a set of operations associated with the workflow (e.g., stored in an “operations []” object), and/or other attributes. As can be observed, each operation of the workflow is described by an operation sequence index (e.g., stored in an “index” field), an operation state description (e.g., stored in a “state” field), a parent operation associated with the operation (e.g., stored in a “parent” field), one or more identifiers that correspond to the one or more content objects associated with a particular instance of the operation (e.g., each identifier stored in an “objID” field in an “object []” object), one or more identifiers that correspond to one or more workflow rules associated with the operation (e.g., each identifier stored in a “ruleID” field in a “rules []” object), and/or other attributes.
As indicated in select workflow rule attributes 444, each instance of workflow rules 334 is described by a rule identifier (e.g., stored in a “ruleID” field), information for accessing a set of extensible metadata to apply to the rule (e.g., stored in an “EXmeta []” object), information for accessing a set of global metadata to apply to the rule (e.g., stored in a “GLmeta []” object), information for accessing a set of workflow metadata to apply to the rule (e.g., stored in a “WFmeta []” object), various operators associated with the rule (e.g., stored in an “operators []” object), data pertaining to workflow responses generated by the rule (e.g., stored in a “responses []” object), and/or other attributes. As shown, the information for accessing a set of extensible metadata to apply to the rule (e.g., stored in an “EXmeta []” object) might describe a metadata template identifier (e.g., stored in a “metaID” field), one or more keys for querying the extensible metadata (e.g., stored in a “keys []” object), and/or other attributes.
The associations 446 between the aforementioned data structures serve to facilitate execution of workflows over content objects using sets of extensible metadata assigned to the content objects. Specifically, when a workflow is invoked or transitions to a next step (e.g., next “index” value), the “objID” of the content object (or content objects) associated with the then-current operation of the workflow is identified according to select workflow object attributes 442. This “objID” is mapped to the “objID” depicted in extensible metadata data model 344 to facilitate access to the set of extensible metadata associated with the then-current content object that is subject to the workflow. As indicated by select workflow object attributes 442, the then-current operation of the workflow also references one or more workflow rules identified by a “ruleID” attribute. This “ruleID” is mapped to the “ruleID” of select workflow rule attributes 444 to facilitate access to the attributes of any rules associated with the then-current operation. Each associated rule accesses the operation-specific portion of the extensible metadata using the information stored in the “metaID” field and “keys []” object of select workflow rule attributes 444. As shown in associations 446, this information is then used to query the extensible metadata of the content object (or content objects) associated with the then-current operation to determine one or more workflow responses in accordance with the workflow rules associated with the then-current operation. In some cases, the workflow responses (e.g., stored in a “responses []” object) invoke modifications to one or more values (e.g., stored in a “value” field in a “metadata []” object) in the extensible metadata.
The foregoing discussions include techniques for a user interacting with various metadata templates views to create metadata templates. One embodiment of such metadata template views is disclosed as follows.
As depicted in
For example, consider a contracts dashboard workflow that is designed to present a dashboard of contract-related content objects to facilitate efficient navigation and/or other actions over the content objects. In this case, user 3101 may interact with metadata template view 30611 to create a “Contracts” metadata template. As shown, user 3101 interacts with an “Add new attribute” button to add certain object “Attributes” for a particular contract document to the template that describe a “Vendor,” a contract “Status,” a contract “Amount,” a contract “Expiration,” and/or other workflow-specific attributes.
As can be observed in metadata template view 30611, user 3101 also specifies the “Type” of object attributes. As one example, the “Status” attribute is a selectable from a user-specified list of options (e.g., “Pending”, “Executed”, “Expired”, etc.) using a dropdown interface element. Upon clicking a “Save” button, the “Contracts” metadata template can then be applied to sets of extensible metadata 106 associated with content objects (e.g., contracts) that are to be the subject of the contracts dashboard workflow. In some cases, the user interface 3041 facilitates further types of object attributes. For example, such object attributes might be specified to comport with (e.g., stored as or cast into) a particular data type, such as, a text data type or a single enum data type, or a multiple enum data type, or a number data type, or a date data type or a time data type, etc.
In some cases, such attributes and/or attribute values might be automatically created and/or populated to correspond to a particular form object, or to correspond to a particular type of document object (e.g., a contract, etc.). In some cases, the automation services that are used to automatically create and/or populate attributes and/or attribute values can be hosted by a third party. For example, a specialized processing service might be defined to parse a form or document and then, based on determinations from the parsing, the service can identify or generate an applicable extensible metadata schema. In some cases, such a service can identify or generate an applicable schema for integrating metadata even when the cloud-based collaboration platform does not provide specific metadata guidelines to the service. Consider for example, an intelligent form field extraction capability configured to extract attributes and values and/or to generate extensible metadata based on particular instances of predefined forms (e.g., a government-provided form, an insurance claim form, etc.). In the foregoing example involving predefined forms, the specialized processing service may receive a XLS specification or an XML DTD or other computer-readable representation of a specification for generating extensible metadata associated with a particular instance of a predefined form or for generating extensible metadata associated with a particular instance of a particular type of content item. The specialized processing service can be further configured to provide the generated extensible metadata and/or its corresponding schema to the cloud-based collaboration platform. In some embodiments, the schema may be wholly or partially predefined by an author of the specialized processing services (e.g., by a third-party developer). In other embodiments, a processing entity associated with the specialized processing service may be configured to generate extensible metadata and/or its corresponding schema by applying rules and/or machine learning techniques.
Further details regarding general approaches to use of specialized processing services are described in Patent Application Ser. No. PCT/US18/55096 “INTEGRATING EXTERNAL DATA PROCESSING TECHNOLOGIES WITH A CLOUD-BASED COLLABORATION PLATFORM”, filed on Oct. 9, 2018, which is hereby incorporated by reference in its entirety.
Using controls (e.g., buttons, other widgets) of the user interface, a user or administrator can manage the template. As specific cases, the user interface may support adding/removing and/or hiding/showing, and/or enabling/disabling, and/or deleting attributes. In cases that a particular attribute is deleted, the particular attribute might be merely marked in the metadata as deleted. However, if it is desired to delete the entire set of extensible metadata, an administrator or similarly privileged user can indicate such a deletion. In response, any content objects that are associated with the to-be deleted extensible metadata are marked to reflect the intended deletion. A synchronous or asynchronous clean-up process can be scheduled to cause actual deletion of the extensible metadata.
In some embodiments, any of the foregoing operations can be accomplished through application programming interface call. Specifically, a user interface 3042 can be operated by an administrator. Actions taken at the user interface may cause calls to an API, and results of execution of a particular API call may result in extensible metadata being defined.
The foregoing discussions include techniques for assigning sets of extensible metadata to content objects in accordance with metadata templates created, for example, using one or more metadata template views (e.g., step 224 of
The figure is presented to illustrate one embodiment of certain steps and/or operations that facilitate generation and management of metadata templates. As depicted in the figure, the steps and/or operations are associated with step 224 of
Extensible metadata management technique 500 commences by determining a content object and a workflow associated with a workflow event (step 502). As illustrated, for example, a file F1 and a contracts dashboard workflow 526 might be associated with a workflow event from various instances of workflow events 522. As indicated by a set of representative workflow events 524, any of the workflow events 522 might pertain to one or more user actions (e.g., at a user interface) that raises a workflow event, and/or creation and/or enablement of a workflow, initiation of a workflow, a workflow response generated during the execution of a workflow, and/or other operations associated with one or more workflows or workflow operations. In some cases, accessing a content object itself raises a workflow event. Furthermore, when a workflow is being processed, it can happen that some operations of the workflow initiates other workflows and/or determines other content objects that are to be subjected to workflow processing. In some cases, it can happen that an operation of the workflow invokes one or more third-party workflows. For example, a workflow that processes a contract might initiate a document signing workflow that is managed by a third party, possibly at a different domain or possibly using a licensed third-party product. Still other embodiments may raise a workflow event when a user accesses a directory or folder. In some cases, a newly-created content object may be automatically paired with a given workflow, and the act of pairing serves to raise a workflow event.
As shown, a metadata template that corresponds to the workflow associated with a given workflow event is selected (step 504). As can be observed, a contracts metadata template 528 is identified as related to the contracts dashboard workflow 526. Contracts metadata template 528, identified by a “contracts” template identifier, specifies certain operation-specific and/or workflow-specific object attributes (e.g., contract “vendor”, contract “status”, contract “amount”, etc.) that are to be included in any extensible metadata associated with file F1.
A set of extensible metadata is then populated in accordance with the metadata template (step 506) and associated with the content object (step 508). As illustrated in the figure, various instances of data sources 530 are accessed to populate the operation-specific object attributes of contracts metadata template 528 and/or other metadata that constitute the set of extensible metadata. Data sources 530 might include the subject content object (e.g., file F1), data from one or more user inputs (e.g., submitted from a user interface), data from a learning model 532, data from a third-party process 533, and/or data from other data sources. As an example, learning model 532 might facilitate automatic population of certain extensible metadata based at least in part on certain historical and/or then-current user attributes, user collaboration activities (e.g., user-to-user interactions, user-to-content interactions, etc.), workflow responses, workflow object attributes, and/or other information. As another example an external, third-party process 533 might be used to perform optical character recognition over a contract.
Further details regarding general approaches to use of third-party process are described in PCT Application Ser. No. PCT/US18/55096 titled “INTEGRATING EXTERNAL DATA PROCESSING TECHNOLOGIES WITH A CLOUD-BASED COLLABORATION PLATFORM”, filed on Oct. 9, 2018, which is hereby incorporated by reference in its entirety.
As depicted in a set of select extensible metadata 5341, the populated extensible metadata values associated with file F1 and the “contracts” metadata template describe a contract type as “vendor” a name of vendor, “acme”, and a contract “amount” of “1000000” (e.g., in dollars). As can be observed, file F1 might be associated with other metadata templates (e.g., a “sales” metadata template), and/or other content objects (e.g., file FN) might be associated with extensible metadata corresponding to any of the aforementioned metadata templates. As further indicated in select extensible metadata 5341, some or all of extensible metadata 106 can be stored according to an extensible metadata data model in a schema-less column-oriented data store, such as HBase. In such embodiments, the column families of the extensible metadata in the data store correspond to metadata families (e.g., metadata family 5401 and metadata family 5402) that are populated according to respective instances of metadata templates (e.g., a “contracts” metadata template and a “sales” metadata template).
The foregoing discussions include techniques for executing workflows over content objects based at least in part on sets of extensible metadata that are assigned to the content objects (e.g., step 226 of
Workflow execution technique 600 commences by detecting a workflow event that invokes a workflow comprising one or more operations (step 602). For example, a workflow event that invokes the contracts dashboard workflow 526 from workflows 332 might be detected. For each operation (e.g., executed in sequence) of the workflow, one or more content objects and workflow rules associated with the operation are identified (step 604). As merely one example, a set of identified content objects 622 associated with an operation of the contracts dashboard workflow 526 might include file F1 and other files and/or content objects. As earlier described, identified content objects 622 might be identified in the information associated with the operation as codified in a workflow object describing the contracts dashboard workflow 526. As can be observed, an identified workflow rule 624 from workflow rules 334 is also identified as being associated with the operation. As depicted in a set of pseudo code, identified workflow rule 624 pertains to a query of the extensible metadata associated with identified content objects 622 that selects any of the content objects (e.g., contracts) having an “amount” attribute that is greater than “5e5” (e.g., 500,000) and returns the query results ordered by the “amount” attribute (e.g., from largest to smallest).
Workflow execution technique 600 continues by accessing a set of extensible metadata that corresponds to the content objects and the workflow (step 606). A set of select extensible metadata 5342 represents the portion of extensible metadata 106 that pertains to identified content objects 622. The identified workflow rule or rules are applied to the extensible metadata accessed at extensible metadata 106 to determine one or more workflow responses (step 608). For example, the aforementioned query of identified workflow rule 624 is applied to the portion of extensible metadata 106 pertaining to identified content objects 622 to determine the workflow responses. In this and other scenarios, workflow responses can include collaboration activities such as requests or suggestions to share the content object, actions to move the content, actions to assign new collaborators, actions to assign new metadata, actions to update metadata, actions to create tasks, actions that raise new events that in turn invoke further workflows, actions that invoke a workflow in a third party's flow, actions that cause display of a user interface, actions that invoke synchronous processing, actions that invoke asynchronous processing, actions that result in issuance of messages, actions that perform searching and/or sorting, waiting for conclusion of certain operations of the workflow, etc. In the depicted example, carrying out the workflow response (step 610) results in a workflow view 30811. As depicted in workflow view 3081 1, an operation or operations of the contracts dashboard workflow 526 serves to present a list of contracts over $500,000, which contracts are sorted and displayed in decreasing order by amount.
The system 7A00 comprises at least one processor and at least one memory, the memory serving to store program instructions corresponding to the operations of the system. As shown, an operation can be implemented in whole or in part using program instructions accessible by a module. The modules are connected to a communication path 7A05, and any operation can communicate with any other operations over communication path 7A05. The modules of the system can, individually or in combination, perform method operations within system 7A00. Any operations performed within system 7A00 may be performed in any order unless as may be specified in the claims.
The shown embodiment implements a portion of a computer system, presented as system 7A00, comprising one or more computer processors to execute a set of program code instructions (module 7A10) and modules for accessing memory to hold program code instructions to perform: assigning a metadata template to a content object (module 7A20); populating a set of extensible metadata associated with the content object, the set of extensible metadata being organized in accordance with the metadata template (module 7A30); and executing one or more operations over the content object, the one or more operations being executed in accordance with the set of extensible metadata (module 7A40).
Variations of the foregoing may include more or fewer of the shown modules. Certain variations may perform more or fewer (or different) steps and/or certain variations may use data elements in more, or in fewer, or in different operations. Still further, some embodiments include variations in the operations performed, and some embodiments include variations of aspects of the data elements used in the operations.
The system 7B00 comprises at least one processor and at least one memory, the memory serving to store program instructions corresponding to the operations of the system. As shown, an operation can be implemented in whole or in part using program instructions accessible by a module. The modules are connected to a communication path 7B05, and any operation can communicate with any other operations over communication path 7B05. The modules of the system can, individually or in combination, perform method operations within system 7B00. Any operations performed within system 7B00 may be performed in any order unless as may be specified in the claims.
The shown embodiment implements a portion of a computer system, presented as system 7B00, comprising one or more computer processors to execute a set of program code instructions (module 7B10) and modules for accessing memory to hold program code instructions to perform: establishing two or more workflows to operate over content object (module 7B20); assigning two or more sets of extensible metadata to the content object, the two or more sets of extensible metadata being respectively associated with the two or more workflows (module 7B30); and executing the two or more workflows over the content object, the two or more workflows being executed in accordance with the two or more sets of extensible metadata (module 7B40).
According to an embodiment of the disclosure, computer system 8A00 performs specific operations by data processor 807 executing one or more sequences of one or more program instructions contained in a memory. Such instructions (e.g., program instructions 8021, program instructions 8022, program instructions 8023, etc.) can be contained in or can be read into a storage location or memory from any computer readable/usable storage medium such as a static storage device or a disk drive. The sequences can be organized to be accessed by one or more processing entities configured to execute a single process or configured to execute multiple concurrent processes to perform work. A processing entity can be hardware-based (e.g., involving one or more cores) or software-based, and/or can be formed using a combination of hardware and software that implements logic, and/or can carry out computations and/or processing steps using one or more processes and/or one or more tasks and/or one or more threads or any combination thereof.
According to an embodiment of the disclosure, computer system 8A00 performs specific networking operations using one or more instances of communications interface 814. Instances of communications interface 814 may comprise one or more networking ports that are configurable (e.g., pertaining to speed, protocol, physical layer characteristics, media access characteristics, etc.) and any particular instance of communications interface 814 or port thereto can be configured differently from any other particular instance. Portions of a communication protocol can be carried out in whole or in part by any instance of communications interface 814, and data (e.g., packets, data structures, bit fields, etc.) can be positioned in storage locations within communications interface 814, or within system memory, and such data can be accessed (e.g., using random access addressing, or using direct memory access DMA, etc.) by devices such as data processor 807.
Communications link 815 can be configured to transmit (e.g., send, receive, signal, etc.) any types of communications packets (e.g., communication packet 8381, communication packet 838N) comprising any organization of data items. The data items can comprise a payload data area 837, a destination address 836 (e.g., a destination IP address), a source address 835 (e.g., a source IP address), and can include various encodings or formatting of bit fields to populate packet characteristics 834. In some cases, the packet characteristics include a version identifier, a packet or payload length, a traffic class, a flow label, etc. In some cases, payload data area 837 comprises a data structure that is encoded and/or formatted to fit into byte or word boundaries of the packet.
In some embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement aspects of the disclosure. Thus, embodiments of the disclosure are not limited to any specific combination of hardware circuitry and/or software. In embodiments, the term “logic” shall mean any combination of software or hardware that is used to implement all or part of the disclosure.
The term “computer readable medium” or “computer usable medium” as used herein refers to any medium that participates in providing instructions to data processor 807 for execution. Such a medium may take many forms including, but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks such as disk drives or tape drives. Volatile media includes dynamic memory such as RAM.
Common forms of computer readable media include, for example, floppy disk, flexible disk, hard disk, magnetic tape, or any other magnetic medium; CD-ROM or any other optical medium; punch cards, paper tape, or any other physical medium with patterns of holes; RAM, PROM, EPROM, FLASH-EPROM, or any other memory chip or cartridge, or any other non-transitory computer readable medium. Such data can be stored, for example, in any form of external data repository 831, which in turn can be formatted into any one or more storage areas, and which can comprise parameterized storage 839 accessible by a key (e.g., filename, table name, block address, offset address, etc.).
Execution of the sequences of instructions to practice certain embodiments of the disclosure are performed by a single instance of a computer system 8A00. According to certain embodiments of the disclosure, two or more instances of computer system 8A00 coupled by a communications link 815 (e.g., LAN, public switched telephone network, or wireless network) may perform the sequence of instructions required to practice embodiments of the disclosure using two or more instances of components of computer system 8A00.
Computer system 8A00 may transmit and receive messages such as data and/or instructions organized into a data structure (e.g., communications packets). The data structure can include program instructions (e.g., application code 803), communicated through communications link 815 and communications interface 814. Received program instructions may be executed by data processor 807 as it is received and/or stored in the shown storage device or in or upon any other non-volatile storage for later execution. Computer system 8A00 may communicate through a data interface 833 to a database 832 on an external data repository 831. Data items in a database can be accessed using a primary key (e.g., a relational database primary key).
Processing element partition 801 is merely one sample partition. Other partitions can include multiple data processors, and/or multiple communications interfaces, and/or multiple storage devices, etc. within a partition. For example, a partition can bound a multi-core processor (e.g., possibly including embedded or co-located memory), or a partition can bound a computing cluster having plurality of computing elements, any of which computing elements are connected directly or indirectly to a communications link. A first partition can be configured to communicate to a second partition. A particular first partition and particular second partition can be congruent (e.g., in a processing element array) or can be different (e.g., comprising disjoint sets of components).
A module as used herein can be implemented using any mix of any portions of the system memory and any extent of hard-wired circuitry including hard-wired circuitry embodied as a data processor 807. Some embodiments include one or more special-purpose hardware components (e.g., power control, logic, sensors, transducers, etc.). Some embodiments of a module include instructions that are stored in a memory for execution so as to facilitate operational and/or performance characteristics pertaining to extensible metadata for shared content objects. A module may include one or more state machines and/or combinational logic used to implement or facilitate the operational and/or performance characteristics pertaining to using extensible metadata and workflows over shared content objects.
Various implementations of database 832 comprise storage media organized to hold a series of records or files such that individual records or files are accessed using a name or key (e.g., a primary key or a combination of keys and/or query clauses). Such files or records can be organized into one or more data structures (e.g., data structures used to implement or facilitate aspects of extensible metadata for shared content objects). Such files, records, or data structures can be brought into and/or stored in volatile or non-volatile memory. More specifically, the occurrence and organization of the foregoing files, records, and data structures improve the way that the computer stores and retrieves data in memory, for example, to improve the way data is accessed when the computer is performing operations pertaining to extensible metadata for shared content objects, and/or for improving the way data is manipulated when performing computerized operations pertaining to applying structured sets of extensible metadata to content objects so as to facilitate the execution of operations (e.g., workflows) associated with the content objects.
A portion of workspace access code can reside in and be executed on any access device. Any portion of the workspace access code can reside in and be executed on any computing platform 851, including in a middleware setting. As shown, a portion of the workspace access code resides in and can be executed on one or more processing elements (e.g., processing element 8051). The workspace access code can interface with storage devices such as networked storage 855. Storage of workspaces and/or any constituent files or objects, and/or any other code or scripts or data can be stored in any one or more storage partitions (e.g., storage partition 8041). In some environments, a processing element includes forms of storage, such as RAM and/or ROM and/or FLASH, and/or other forms of volatile and non-volatile storage.
A stored workspace can be populated via an upload (e.g., an upload from an access device to a processing element over an upload network path 857). A stored workspace can be delivered to a particular user and/or shared with other particular users via a download (e.g., a download from a processing element to an access device over a download network path 859).
In the foregoing specification, the disclosure has been described with reference to specific embodiments thereof. It will however be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the disclosure. For example, the above-described process flows are described with reference to a particular ordering of process actions. However, the ordering of many of the described process actions may be changed without affecting the scope or operation of the disclosure. The specification and drawings are to be regarded in an illustrative sense rather than in a restrictive sense.
The present application claims the benefit of priority to U.S. Patent Application Ser. No. 62/723,435 titled “COLLABORATION SYSTEMS”, filed on Aug. 27, 2018, which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62723435 | Aug 2018 | US |