Abstract:
Methods for launching a process based on annotations made to a document in an enterprise content management system. It is determined whether an annotation has been added to a document in the enterprise content management system, wherein the annotation is stored as a separate element and the separate element is associated with the document. It is determined whether the annotation is of a type indicating that a subsequent workflow process is to be performed. In response to determining that the annotation is of a type indicating that a subsequent workflow process is to be performed, the annotation is parsed to obtain information to be used in the subsequent workflow process. The subsequent workflow process is launched. The launch uses at least some of the information obtained from parsing the annotation as parameters in the subsequent workflow process.

Description:
BACKGROUND 
       [0001]    The present invention relates to Enterprise Content Management (ECM) Systems, and more specifically, to techniques for initiating various types of processes in ECM systems. ECM generally refers to the collection strategies, methods and tools used to capture, manage, store, preserve, and deliver content and documents related to organizational processes. ECM tools and strategies allow the management of an organization&#39;s unstructured information, wherever that information exists. 
         [0002]    ECM systems typically include an image viewer application that provides the capability for a user to annotate an image document. The annotations can be used, for example, to call attention to specific areas of the graphic, to apply a stamp of approval, or to add text notes. Most conventional ECM systems also allow users to launch various types of workflows. Certain ECM systems, such as the IBM FileNet P8® Platform, which is available from International Business Machines Corporation of Armonk, N.Y., include capabilities for associating a subscription with content events, which events can subsequently launch an associated workflow. 
         [0003]    While most ECM systems have capabilities for carrying out a wide range of distinct operations, these operations typically need to be handled separately. Thus, it is both cumbersome and error-prone to require users to both annotate and remember to manually dispatch or launch a workflow process of a work item. It would be desirable to have a more integrated ECM system compared to conventional ECM systems. 
       SUMMARY 
       [0004]    According to one embodiment of the present invention, techniques are provided for launching a process based on annotations made to a document in an enterprise content management system. It is determined whether an annotation has been added to a document in the enterprise content management system, wherein the annotation is stored as a separate element and the separate element is associated with the document. It is determined whether the annotation is of a type indicating that a subsequent workflow process is to be performed. In response to determining that the annotation is of a type indicating that a subsequent workflow process is to be performed, the annotation is parsed to obtain information to be used in the subsequent workflow process. The subsequent workflow process is launched. The launch uses at least some of the information obtained from parsing the annotation as parameters in the subsequent workflow process. 
         [0005]    The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features and advantages of the invention will be apparent from the description and drawings, and from the claims. 
     
    
     
       DESCRIPTION OF DRAWINGS 
         [0006]      FIG. 1  shows a schematic view of an ECM system, in accordance with one embodiment. 
           [0007]      FIG. 2  shows an exemplary screenshot of user interface of an ECM system, in accordance with one embodiment. 
           [0008]      FIG. 3  shows an exemplary screenshot of an annotated document in the ECM system, in accordance with one embodiment. 
           [0009]      FIG. 4  shows an exemplary screenshot of an inbox of a user of the ECM system, in accordance with one embodiment. 
           [0010]      FIG. 5  shows a flowchart of a process ( 500 ) for launching a workflow process in an ECM system, in accordance with one embodiment. 
           [0011]      FIG. 6  shows a class diagram ( 600 ) of how content management system metadata can be organized in accordance with one embodiment. 
       
    
    
       [0012]    Like reference symbols in the various drawings indicate like elements. 
       DETAILED DESCRIPTION 
     Overview 
       [0013]    The various embodiments described herein pertain to techniques in ECM systems for using structured annotations such as text, sticky notes, approval stamps, etc. to serve as triggers for launching workflows or dispatching a work item in the ECM system. For example, applying a stamp of approval to a loan document might automatically initiate a workflow process routing the document for further loan processing or disbursement of funds. If a ‘Rejected’ annotation is applied to the loan document, then the workflow is automatically routed to inform the applicant that their loan has been denied. Another example in which these techniques can be applied is the health care industry. In this case, the document can be an x-ray image and an evaluator of the x-ray image can apply an “arrow annotation” to identify an area of the x-ray image that shows, for example, a fracture. In response to the evaluator applying the “arrow annotation,” a work item can be automatically routed to a physician to begin a treatment plan. 
         [0014]    The various embodiments of the invention that are described herein can realize several advantages. For example, the number of distinct operations a user needs to remember and perform is reduced, which also leads to increased efficiency in initiating new processes and a reduction in the number of errors caused by the users. Once a workflow is associated with a content engine update event for a given annotation, the end user can simply annotate the document and be assured that the proper business process will be initiated automatically, rather than having to manually initiate the business process as a separate task, which greatly simplifies the workflow. Whenever a given annotation is applied to an image, it is assured that the proper corresponding workflow process will be launched, i.e. the consistency is improved compared to conventional techniques. From an auditing perspective, this model assures that a given business process is always (automatically) run after a given annotation is applied, thus improving the compliance of workflow processes. 
         [0015]    As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present invention may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon. 
         [0016]    Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0017]    A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. 
         [0018]    Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. 
         [0019]    Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user&#39;s computer, partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). 
         [0020]    Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
         [0021]    These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks. 
         [0022]    The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. 
       Exemplary ECM System Architecture 
       [0023]      FIG. 1  shows a schematic example of an ECM system ( 100 ) in which various embodiments of the invention can be implemented. As can be seen in  FIG. 1 , the ECM system ( 100 ) includes a client application ( 102 ) that communicates with a document repository ( 106 ) and a workflow engine ( 108 ) over a network ( 104 ). The network ( 104 ) can be any type of conventional network, such as an Intranet or the Internet and the communication between the client application ( 102 ), the document repository ( 106 ) and the workflow engine ( 108 ) can occur through any conventional techniques, which are familiar to those of ordinary skill in the art. The client application ( 102 ) is typically some type of stand-alone or web-based image viewer application that provides the capability for a user to annotate an image document stored in the document repository ( 106 ). The workflow engine ( 108 ) is responsible for coordinating and executing the various steps of the workflow process, in accordance with rules defined by the ECM system administrator or the ECM system users. As will be seen below, various actions can be used to automatically trigger other actions within the ECM system ( 100 ), for example, by various types of subscription mechanisms. As was described above, the P8 FileNet® system is one example of an ECM system ( 100 ) of this type, in which the various embodiments of the invention can be advantageously implemented. 
       Exemplary Embodiment Described From A User Experience Perspective 
       [0024]    An exemplary embodiment will now be described from a user experience perspective and with reference to the drawings. As was discussed above, in this embodiment, it is assumed that the ECM system is an ECM system similar to the ECM system ( 100 ) described above with reference to  FIG. 1 , that is, an ECM system in which annotations are stored separately from the document (e.g., as a separate content elements), and in which the annotations are stored in a structured format that can be parsed. The content of the annotation can then be used to launch or dispatch an event, as will be described below. 
         [0025]    In this usage scenario, it is assumed that user Bob is a Loan Officer at a bank who is reviewing a loan application. The loan application has been scanned into the ECM system and available as an image document in a client application or presentation layer in which documents and folders can be browsed, viewed, etc. For simplicity, this will be referred to as a “client application” below.  FIG. 2  shows a screenshot of a user interface in which the loan application is shown as a list item. Next, Bob opens the loan application document in an Image Viewer in order to review the application, by clicking on the loan application in the list. 
         [0026]    Bob decides to approve the loan application, and annotates the document by adding an annotation saying “Approved by Bob Apr. 4, 2008”, as shown in  FIG. 3 . When the document with the annotation is saved, the presence of an “Approved” annotation launches a Business Process Management (BPM) workflow. The BPM workflow results in a new work item appearing in a different user&#39;s inbox, as shown in  FIG. 4 . 
       Exemplary Embodiment Described From A Technical Perspective 
       [0027]      FIG. 5  shows a flowchart of a process ( 500 ) for launching a workflow process in an ECM system, in accordance with one embodiment. The document (in this case, the image of the loan application) is stored in the Content Engine. When the user opens the loan application, the document is retrieved from the content engine and is displayed to the user (step  502 ). An annotation is then received from the user, and the annotated document is saved (step  504 ). In this embodiment the annotation is stored as an additional content element in the document. It should however be noted that in a generic content management system, the annotation object can also be stored as its own independent object, with a link to the document object. 
         [0028]    In response to saving the document, a content engine update event is fired (step  506 ). A subscription to content engine update events triggers a custom event action, which in this case examines whether an annotation has been added to the document (step  508 ). If it is determined that the correct kind of annotation has been added (e.g. “approved”), the annotation is parsed (step  510 ). The expression “correct kind of annotation”, as used herein, refers to an annotation (among a large set of possible annotations) that is linked to a workflow. For example, adding a different annotation, such as a line, would not cause a workflow process to be launched, while an “approved” annotation would launch a workflow process. Parsing the annotation, as used herein, refers to programmatically determining what annotation type was used, and possibly extracting any data from the annotation types that have customizable fields in the annotation, such as, for example, pulling the user name and date out of an annotation that says “Approved by Bob on March 3 rd ”, for example. 
         [0029]    As the skilled person realizes, there are several ways in which it can be determined what type of annotation has been added to a document. In one implementation, the annotation sub-types can be listed as classes underneath the Annotation class, as illustrated in the UML diagram ( 600 ) of  FIG. 6 , and the program can discover the annotation type based upon the class instance. For example, as can be seen in  FIG. 6 , the content management system metadata can be organized as an Annotation parent class ( 602 ) having the following subclasses: Approved annotation ( 604 ), Rejected annotation ( 606 ), Arrow annotation ( 608 ), and Line annotation ( 610 ). 
         [0030]    In another implementation, the content of the annotation itself can be parsed. For example, rather than relying upon the class structure above, the program can simply examine the content to determine whether it says, “Approved”, by whom, on what date, etc. 
         [0031]    Finally, a workflow process is launched for the annotation (step  512 ), with any variables such as &lt;user&gt; and &lt;date&gt; available as properties, and the process ( 500 ) ends. These extracted properties can be used as metadata on the workflow itself, for example, to set the participating users in the workflow, to set date fields, such as expiration dates or other deadlines, etc. Many further variations can be envisioned by those of ordinary skill in the art. It should, of course, also be noted that the notion of launching a workflow by means of an annotation and the notion of progressing a step in a workflow by means of an annotation are two completely independent processes, which may or may not be combined. That is, there might be situations in which adding an annotation at a certain step causes the workflow process to move forward to the next step, and where adding an annotation at a different step of the same workflow process causes a different workflow process to be launched. Many variations can be envisioned by those of ordinary skill in the art. 
         [0032]    Concluding Comments 
         [0033]    The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. 
         [0034]    The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. 
         [0035]    The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.