The present invention in its several embodiments relates generally to data binding in a workflow architecture, and more particularly to binding documents of workflow components.
In a workflow built with a component-based workflow infrastructure, a property of a workflow activity, e.g., an activity on the data consumer end of a workflow component, can be bound to a property of another workflow activity, e.g., an activity on the data provider end of the second workflow component, so that the value of those two properties can be made consistent. Within document automation systems, files can be processed via activities either individually, or as groups, or as sets, of documents. An operative presumption is that all of the documents in a document set are from a single activity, acting as a data provider, and that once processed according to a present activity, the output documents will be consumed by another single activity, acting as a data consumer. Accordingly, a workflow activity involving documents, i.e., a document-dealing activity, typically has one or more properties defined for the documents as a document set. Generally, binding is associating two or more programming object or value items for a period of time. So the state of the art has all documents within a document set treated the same in terms of property binding.
Some workflow components, particularly activities pertaining to documents, handle documents collectively having a wide range of types, while some other activities pertaining to documents exclusively handle a specific document type. This diversity of document types across workflow components is presently neglected by the level at which property values are bound and sustains an unnecessary complexity and inconvenience for document automation system functionality.
The above presumption, in action, may be illustrated in a scenario where a collection of related documents are being scanned into a workflow. In this scenario, it is desirous to start specific processes for scanned documents of specific types that are different from other scanned documents having other specific types. The scan activity may scan several types of documents and provide all the documents in a document set to any downstream activities. So practically, this might mean sending to an invoice processing activity the scanned invoice documents along with the other documents of the document set, sending to a shipping processing activity the scanned shipping notes along with the other documents of the document set, and sending to a billing process the scanned billing statements along with the other documents of the document set. However, document downstream activity of a workflow is limited to document format. That is, the invoice activity can only work on a document in invoice format neglecting the remainder of the documents of the document set, the shipping activity can only work on a document in the shipping format, and the billing activity can only work on a document in the billing format.
input_document=bind(component=component1,property=output_document)
This invention in its several embodiments pertains to document automation workflow by allowing the user to group a collection of documents into a document set and bind each individual document in the set to potentially a different data source. The exemplary embodiments of the invention provided herein are systems, methods, and computer-readable media for executing workflow by selecting an element of a first document set, selecting an element of a second document set; and establishing a binding relationship between the element of the first document set and the element of the second document set. The element of the first document set may be a document data element and the element of the second document set may be a document data element.
Embodiments of the present invention are illustrated by way of example and not limitation in the figures of the accompanying drawings, and in which:
Beyond the prior art example of
Embodiments of the present invention may be executed via a computer device, such as the one shown in
Examples of the present invention have a workflow as an executable program having components where the components are the language constructs of the workflow. Accordingly, a workflow framework provides the infrastructure for building a workflow from individual workflow components specific to a problem domain, and as such provides a runtime environment for executing the workflow and many other supporting services, e.g. design-time experience, persistence, and security. An exemplary operating environment may be a document management system built with Microsoft™ Workflow Foundation™. Accordingly, one or more actual workflows may be built and executed using the above framework which may implement portions or all of a desired functionality of an application. The resulting applications may host the runtime execution environment and also support a user interface.
For example, some embodiments of the present invention may be used (not necessarily in the following order): (a) setup binding to individual elements of a set of documents; (b) setup binding to the document as a whole, i.e., as an entire logical data entry; (c) establish, at the individual document level, data references for modification; (d) combine and distribute modified documents as a single logical data entity that may also comprise unmodified documents.
An embodiment of the present invention may be a document management workflow system that: (a) collects input electronic documents from data sources, e.g., a multifunction peripheral (MFP) having a scanner, email, particularly email attachments, an FTP site, and a shared folder; (b) processes the input documents, e.g., reformat, stamp, optical character recognition (OCR), and data extraction; and (c) distributes processed and/or unprocessed documents to data destinations, e.g., an MFP printer, email, database, the Microsoft™ Office SharePoint™ server, and a shared folder. At design time, binding may be established between either a set comprising multiple documents, or binding may be established from a single document of a set, to a single document of another set.
The functionality to setup binding to individual elements of a group, or set of documents, yet retain the ability of establishing binding to the document set as a whole logical data entity, includes the functionality of the processing workflow to reference and modify data from each individual document, and then combine and distribute modified or unmodified documents as a single logical data entity. An example of such a document set is one that may comprise: (a) one or more scanned images from an MFP scanner; (b) one or more files retrieved from a database; and (c) one or more documents taken as attachments of one or more emails received by the exemplary workflow; where all of these files are combined and passed as a single data entity to downstream workflow activities for further processing.
In some embodiments, the workflow process may merge files, or data elements, from multiple sources such as an image scanned from an MFP device, a database, or file on a server into a single logical data entity, and then distribute the data/files to activities regardless whether an activity is enabled to process all or part of data of the single logical data entity.
The functionality of a document automation workflow is to collect data from various data sources and organize the data into a document set as a single logical data entity and then to distribute the data to various activities/components along the processing flow. Functionality may be present for workflow activities to refer, modify, retrieve and contribute data to or from individual or all documents in the document set. Functionality may be present for the output to be a synthesis of all of the input documents, or for the output to be a set of modified or unmodified data or documents.
Exemplary pseudocode of this embodiment may be as follows:
or, using arrays or vectors:
Exemplary pseudocode of this document-subset-to-document-subset binding embodiment may be as follows:
or, using arrays or vectors:
Illustrated in
Exemplary pseudocode of this embodiment may be as follows:
Based on the foregoing, it should be appreciated that provided herein are systems, methods, and computer-readable media for executing workflow by identifying a first element of a first document set, identifying a first element of a second document set; and establishing a binding relationship between the first element of the first document set and the first element of the second document set. One of ordinary skill in the art will also appreciate that the modules and functions described herein may be further subdivided, combined, and/or varied and yet still be in the spirit of the embodiments of the invention. In addition, while a number of variations of the invention have been shown and described in detail, other modifications, which are within the scope of this invention, will be readily apparent to those of ordinary skill in the art based upon this disclosure, e.g., the exemplary flowcharts or processes described herein may be modified and varied and yet still be in the spirit of the invention. It is also contemplated that various combinations or subcombinations of the specific features and aspects of the embodiments may be made and still fall within the scope of the invention. Accordingly, it should be understood that various features and aspects of the disclosed embodiments can be combined with or substituted for one another in order to form varying modes of the disclosed invention. Thus, it is intended that the scope of the present invention herein disclosed should not be limited by the particular disclosed embodiments described above.