[0001] This application is a continuation of application Ser. No. 09/166,120, filed Oct. 15, 1998, now allowed.
[0002] 1. Field of the Invention
[0003] The present invention is directed to automated workflow systems and more particularly, to an object-oriented framework used in developing and implementing consistent workflow systems in a single department or throughout an enterprise, such as a corporation or a government agency.
[0004] 2. Description of the Related Art
[0005] Computer programs have been written for businesses since the 1950's and 1960's using first machine code, then assembly languages, COBOL, and third, fourth and fifth generation languages. Most work in offices uses at least one and often several computer programs, including languages and software tools that are used in many different industries, such as word processing, spreadsheets, databases, etc., to industry-specific or line-of-business programs, many of which are used to manage the work performed in a specific industry or within certain parts of an industry. In the 1980's, imaging began to be used to support line-of-business programs, reducing the amount of paper required to perform the business functions by storing the paper image in the computer as part of the business program. In the late 1980's, companies such as Filenet, IBM, Wang, etc., developed workflow products of various types. At first, workflow processing products were added to imaging systems in an effort further the “paperless office”. Workflow was attached to image-enabled systems because the presence of the electronic image (as opposed to the paper document) allowed the workflow system to “push” work to users in addition to using “pull” technology. With an electronic image, the image could be presented to the user when the work was pushed to them; if paper was required, pushing work to an individual required that the individual then physically retrieve the paper when the work item was pushed to them. Workflow systems developed along several dimensions: “collaborative workflow” was developed to support ad hoc workflow requirements—where the knowledge worker developed a workflow based on the characteristics of each business case; “embedded workflow” was developed to support simple workflow requirements that are a required part of business systems; and “mission critical” workflow was developed to support high volume, predictive workflows.
[0006] Management of “mission critical” work in an organization requires significantly more than the features provided by embedded and collaborative workflow systems. A type of workflow processing system termed “utility” systems combine complex process rules stored in a database, existing system interfaces, and user interfaces that control what is available to a worker at a computer workstation or terminal, and may monitor the work being performed.
[0007] Three types of utility workflow processing products have evolved. The first products that were commercially available were development languages developed to support workflow. Instead of using general development languages (e.g., COBOL, Basic, Fortran), these workflow languages were developed to facilitate the programming of work processes, much as specialized development languages were developed for such functions as artificial intelligence (e.g., LISP) and process manufacturing. Examples of these “general purpose” workflow languages include FileNET's Visual WorkFlo, IBM's Flowmark, and Staffware's Staffware. Some of these products support a wide range of capabilities and functions for the enterprise, some are focussed on a smaller set of functions and smaller user implementations.
[0008] The other two types of utility workflow that have evolved include workflow that is specific to a line-of-business or application and workflow that has been added to a suite of business applications. Examples of the former include templates for various financial applications from Pegasystem, mutual fund applications from DST Systems, Inc, and Banctec's Plexus applications for the financial services industry. In these applications, business specific workflow rules and processes are provided as a full or partial solution (often referred to, respectively, as a package or a template). Some of these solutions are built using general purpose workflow development languages, some have been built using custom workflow languages. The workflow supported by this class of systems is typically hardcoded (necessitating coding changes to programs written in general purpose programming or workflow languages when changes are required) and supports only the specific workflow functionality required by the application. However, even if the workflows are offered for a range of business functions, they do not utilize the same process definitions and code; at best they reuse the code, at worst the code is unique for the line of business.
[0009] Examples of the third type of workflow solution include financial and enterprise resource planning (ERP) suites such as those from Oracle, Baan, and Systems, Applications, and Products in Data Processing (SAP). These application suites often share data and functions across the lines of business, but only support rudimentary workflow functions and should not be characterized as mission critical workflow. They are included in this category only because they are marketed as mission critical solutions.
[0010] The state of the art is that there are powerful workflow toolsets that require specific products to support their use and enable a user to create a customized workflow processing system with significant effort. There are also many products designed for specific applications within an industry that can be customized with varying amounts of effort. Examples in the claims processing area include Quick Start for Data Entry from American Management Systems and similar products from IPD, Image Matrix, and others.
[0011] However, there are no scalable products designed to provide standardized workflow processes in a department or throughout an enterprise, that are applicable across industries; provide the coding efficiency of object-oriented design; and utilize open standards to work with existing third party tools and languages, such as databases, graphical user interface languages, etc., currently in use or desired to be used by the organization implementing the workflow processing system.
[0012] Additional aspects and/or advantages of the invention will be set forth in part in the description which follows and, in part, will be obvious from the description, or may be learned by practice of the invention.
[0013] It is an object of the present invention to provide a framework for developing a workflow processing system using object-oriented design principals to minimize coding effort and maintenance requirements in implementation in individual departments and throughout an enterprise.
[0014] It is another object of the present invention to provide a workflow processing framework utilizing existing third party tools and languages through adherence to standards and an open architecture.
[0015] It is a further object of the present invention to provide a workflow processing framework that enables users to define logical queues through dynamic work divisions without requiring coding changes to programs written in programming languages.
[0016] It is a yet further object of the present invention to provide a workflow processing framework that can operate on folders containing any type of data accessible in electronic form and prefetch the data without requiring knowledge of how to access and utilize the specific type of data by the user defining what is included in a folder.
[0017] The above objects can be attained by a workflow processing framework, scalable for use by a single department to an entire enterprise, including a set of software objects, each unique throughout the enterprise, to support corresponding business functions; a database, accessed by a subset of said software objects, defining work taxonomy and work steps for workflow processing; and a workflow engine utilizing said software objects and the work taxonomy to perform the workflow processing. The workflow processing framework can be used to develop a workflow processing system by entering data into the database to define work types and work steps for workflow processing, creating a graphical user interface (GUI) to use the set of objects, and defining the workflow in the workflow engine.
[0018] These together with other objects and advantages which will be subsequently apparent, reside in the details of construction and operation as more fully hereinafter described and claimed, reference being had to the accompanying drawings forming a part hereof, wherein like numerals refer to like parts throughout.
[0019] These and other aspects and/or advantages of the invention will become apparent and more readily appreciated from the following description of the aspects of the present invention, taken in conjunction with the accompanying drawings of which:
[0020]
[0021]
[0022]
[0023] FIGS.
[0024]
[0025]
[0026] Reference will now be made in detail to the embodiments of the present invention, examples of which are illustrated in the accompanying drawings, wherein like reference numerals refer to like elements throughout. The embodiments are described below in order to explain the present invention by referring to the figures.
[0027] There are several drawbacks in the state of the art of workflow processing development systems. Existing toolsets can be used to generate many types of systems, but the effort required for an entire enterprise would be only a slight improvement over using general purpose programming languages from scratch since many workflow functions would need to be built for each and every individual application. Existing template products are similarly designed for small-scale applications and are not powerful enough to serve a variety of workflow processing applications throughout an enterprise. Many of the currently available products are generally proprietary in nature, i.e., they are easily used only with products from the same vendor or a small number of third party vendors or in specific lines-of-business. The remaining products were designed with such a narrow focus that the products cannot easily be scaled to serve a variety of types of workflow processing.
[0028] The three-dimensional drawing in
[0029] As in the case of “line of business” products, the prior art includes cross-functional workflow processing systems like those arranged along the vertical axis. Generic accounts payable systems are available in the form of templates from Unisys and Crowe Chisek. Similarly, workflow processing systems capable of being used for call centers are available from Pegasystems and Mosaix as well and routing products are available from middleware vendors such as Hewlett-Packard and Early Cloud (now owned by IBM).
[0030] Typically, the data operated on by workflow processing systems is determined when the workflow processing system is designed and is limited to a few types, such as database records, electronic documents, e.g., word processing documents, and images, such as TIFF Level 4, GIF, JPEG, etc. for images, CAD drawings, medical X-rays, etc. As described below, the present invention is designed to handle all known data types and is flexible enough to add additional data types with minimal changes to the framework of objects used by the present invention.
[0031] If existing prior art systems were mapped onto the three-dimensional drawing illustrated in
[0032] The present invention uses a set of software objects, each uniquely performing a corresponding function in a workflow processing system and a set of process definitions, accessed by a subset of the software objects, to provide a flexible workflow processing system that can be expanded in any of the three directions illustrated in
[0033] The relationship between the objects in a workflow processing framework according to the present invention and the peripheral processes is illustrated in
[0034] The foundation objects
[0035] The objects
[0036] Common objects
[0037] Business processes
[0038] The following description of these business processes is done in context of a typical workflow system. The Case Builder is used to determine either when to create a new case or when and how to rendezvous an incoming document with an existing case folder. The Events Processor, on the other hand is executed whenever an event occurs that requires a change in workflow. An event can be any change by a worker (user of the workflow processing system) or system module, or the expiration of a timer. The Events Processor is scheduled at intervals throughout the workflow. One of the events that the Events Processor executes is the creation of a new case from Case Builder. After the Events Processor has determined the reason for moving the case folder through the workflow, Queue Assignment is executed to determine in which work step division the case should be processed. Finally, if the workflow processing system requires that the determined work step division should have users assigned to the cases, the User Assignment module is executed.
[0039] As illustrated in FIGS.
[0040] Of the final two top-level common objects, BLProgramSecurity
[0041] The second type of security is the task of the user, e.g., process claim 1, process claim 2. The second type of security is typically used in a situation where a single user interface is created that operates in different modes. In this situation although there are different work steps in the workflow, a single user interface may be used as the work step business application, with its configuration changed for each different mode of operation. The tasks are defined in the tables described later and are identified in a user record. An example of a user record is provided immediately below.
[0042] BL_USERPROFILE
[0043] SUSERID=juser
[0044] SUSERNAME=Joe User
[0045] BISAVAILABLE=Y
[0046] BL_PROGRAMSECURITY
[0047] SUSERID=juser
[0048] SPROGRAMNAME=Claim Processing
[0049] BL_TASKSECURITY
[0050] SUSERID=juser
[0051] SPROGRAMNAME=Claim Processing
[0052] STASKNAME=Claim1
[0053] BL_FUNCTIONSECURITY
[0054] SUSERID=juser
[0055] SPROGRAMNAME=Claim Processing
[0056] STASKNAME=Claim1
[0057] SFUNCTIONNAME=Write Custom Letter
[0058] The third level of security is the function within the task. For example, while a function such as Write Custom Letter may be included in an insurance claim application, only certain users might be allowed to access this function. Other workers would be limited to ordinary correspondence processing and customer service functions illustrated in
[0059] BLCaseWorkList
[0060] BLCaseWorkList
[0061] Whenever a case is retrieved from the database platform in conventional platforms
[0062] The worklist is determined based on user identification obtained when the worker logs into the computer system on which the workflow processing system is running. BLCaseWorkList
[0063] Once a worklist has been obtained, the user can select one of the cases on which to work. The GetCase function is called by BLCase Session and returns an object called BLCase
[0064] BLCaseEvents
[0065] The next two objects illustrated in FIGS.
[0066] In addition to calling the objects illustrated in FIGS.
[0067] BLCaseAuditSessions
[0068] As an example, a user can suspend a case awaiting a signature document using a module like the Case Manager described below with reference to
[0069] Preferably graphical user interfaces (GUIs) in a general purpose language like Visual Basic are included in a workflow processing system according to the present invention to provide programmers with the bulk of the code necessary to implement modules like those described above. Examples are Scan, Index, System Maintenance, Case Retrieval, and Document Retrieval interfaces.
[0070] After incoming documents are prepared for input and sorted into appropriate batches, operators scan documents in batches into the imaging system. The Scan interface provides a processing window that requires users to enter information specific to the current batch. The user also has the ability to set properties of the scanner. When the mandatory information is entered and the user is satisfied with the settings, the scan processing window allows the user to start and stop the actual scanning process.
[0071] The Index interface provides the ability to assign data values to a document for future retrieval. The Scan process dispatches batches to an Index and Reassembly process. When a user starts the Index and Reassembly process, the process retrieves a user work list for that user and the divisions within the Index and Reassembly work step. The process loads the first batch in the user's work list onto the Index and Reassembly window. The process loads the first document of the batch into the image viewer and the document is ready for indexing. The actual index fields displayed for indexing is based on the document class and varies widely with each system implementation. Therefore, the Index process does not implement the index values control which may, for example, be an Active X control developed by the organization that uses the workflow processing system. When a user finishes indexing the document, he/she clicks the index button. The Index process saves the index values for the current document and loads the next document that has not been indexed.
[0072] The Index and Reassembly process allows for the reassembly of documents in parallel with the indexing of documents. When reassembling documents within a batch, the user may have the ability to add documents, delete document separators, mark documents for rescan, move pages, copy pages, and paste pages. These capabilities are easily provided when, for example, Visual WorkFlo is used as the workflow engine. The user can view the structure of the batch in the batch reassembly tree to determine whether or not to take these reassembly actions. For example, some fax transmissions are received as one transmission but contain several documents. There is no exact method to determine the document breaks within a single transmission. The indexer reviews each batch and adds new documents as necessary. The indexer can then move pages into the newly created documents.
[0073] When the user indexes all documents in the current batch, the process prompts the user to commit the batch. If the user chooses to commit the batch, then the process commits the batch and loads the next batch in the user's work list. If the user chooses not to commit the batch, the user is allowed to continue re-indexing documents or reassembling the batch until the user is ready to commit via the commit batch menu option.
[0074] The System Maintenance interface is a program that is customized for each system implementation. While some of the code is very specific to an implementation, e.g., specific edit checks, some things remain the same. There is always a set of baseline tables that have a constant table structure and there is a framework for selecting and displaying table information. Therefore code for these functions is preferably provided by a workflow processing system according to the present invention.
[0075] The System Maintenance interface has two basic screens. The first is the main window, which has a picture list-box down the left-hand side and a grid control covering the remainder of the window. The window creates itself dynamically from a set of constant data structures which lists the icon to be shown in the picture list-box as well as the fields in the corresponding table to be show in the grid for that selection. The second window is a sample property-tabbed dialog that the user uses to update any of the values from the grid. No data is actually modified in the grid. BLErrorLog
[0076] Document Retrieval is also a commonly requested interface. Although the actual window that users view from implementation to implementation differs, the basics of creating and executing a query against the imaging platform in the conventional platforms
[0077] Document Retrieval (and Case Retrieval) preferably use conventional protocols of the operating system for selecting files. An interface is preferably included in the basic workflow processing system to provide a simple search criteria window. When the user clicks Search, the program preferably uses the workflow engine in the conventional platforms
[0078] Document Retrieval will make full use of the BLErrorLog, CNativeErrorLog, BLStatLog, BLDebugLog, CNativeDebugLog, BLDBConnMgr and BLProgramSecurity objects. The majority of the code will be implemented in a COM object to allow other programs to include Document Retrieval capabilities within their operations.
[0079] Although Case Retrieval has slightly more variation from one system implementation to another than Document Retrieval, the basics are still the same. The window in Case Retrieval will look very similar to Document Retrieval. There will be a simple search criteria window allowing the user to enter specific case data values. After clicking search, the main window will expand to show a grid with case data for any matching cases.
[0080] The Index, Document Retrieval, and Case Retrieval interfaces are implemented with common functions and features and may be implemented with a basic interface control that provides sample search data capabilities. Each specific implementation modifies this interface control without changing the rest of the application or re-compiling the application.
[0081] The GUI can be thought of as a standalone program, a menu option in a case management GUI, or as the beginnings of a Balance WorkLoad process, where managers multi-select from the list of found cases and reassign them or prompt them into the workflow (Unpend any PENDED items).
[0082] Case Retrieval makes full use of the BLErrorLog, CNativeErrorLog, BLStatLog, BLDebugLog, CNativeDebugLog, BLDBConnMgr, BLProgramSecurity, BLCaseSession and BLCase objects. The majority of the code is preferably implemented in a COM object to allow other programs to include Case Retrieval capabilities within their operations.
[0083] As discussed above, a letter generation wizard is preferably included to provide a graphical user interface that steps a user through the creation of a custom letter. It is usually called from a Case Manager process that is customized for each client. The letter generation wizard interfaces with a word processing program in the conventional platforms
[0084] Illustrated in
[0085] One example of tables that could be used in the present invention is provided below. This is merely one example of many possible ways that tables could be used to minimize the extent that programs have to be modified during system implementation.
[0086] The Case table (BL_CASE) is the main processing table. It stores a record for each case per work type in the system. It is accessed by BLCase BL_CASE ( SCASEID VARCHAR2(16) not null, SWORKTYPE VARCHAR2(16) not null, SSTATUS VARCHAR2(16) not null, SOWNERID VARCHAR2(16) null , DCREATED DATE not null, SLASTUPDATEUSERID VARCHAR2(16) null , DLASTUPDATED DATE null , SACCOUNTNUM VARCHAR2(32) null , )
[0087] The Case Event table (BL_CASEEVENT) stores all the received and pending events associated with cases. It is written to and read from by BLCaseEvents BL_CASEEVENT ( SWORKTYPE VARCHAR2(16) not null, SCASEID VARCHAR2(16) not null, SEVENTCODE VARCHAR2(32) not null, SEVENTSTATE CHAR(1) not null, SEVENTDESC VARCHAR2(256) not null, DEXPIRE DATE null , SGROUPID VARCHAR2(16) null , SGROUPEVENTCODE VARCHAR2(32) null , SPROCESSINGSTATUS CHAR(1) not null, DRECEIVED DATE null , SCASEITEMNAME VARCHAR2(64) null , SOPTIONALEVENTDATA VARCHAR2(128) null , DCREATED DATE not null, )
[0088] The Case Item table (BL_CASEITEM) stores the reference to the items associated with cases. For example, the reference number for documents associated with cases are stored in the table. BLCaseItems BL_CASEITEM ( SCASEID VARCHAR2(16) not null, SWORKTYPE VARCHAR2(16) not null, SITEMNAME VARCHAR2(64) not null, SITEMDISPLAYNAME VARCHAR2(128) null , IITEMTYPE NUMBER(4) not null, DCREATED DATE not null, )
[0089] The Draft Case Item table (BL_DRAFTCASEITEM) stores the draft items and data associated with cases. For example, the binary draft documents associated with cases are stored in the table. BLDraftCaseItems BL_DRAFTCASEITEM ( SCASEID VARCHAR2(16) not null, SWORKTYPE VARCHAR2(16) not null, SDRAFTITEMNAME VARCHAR2(64) not null, SDRAFTITEMDISPLAYNAME VARCHAR2(128) null , SDOCUMENTCLASS VARCHAR2(32) not null, SDRAFTITEMTYPE VARCHAR2(64) not null, SINDEXVALUES VARCHAR2(2000) null , BITEMDATA LONG RAW null , DCREATED DATE not null, )
[0090] The Case Lock table (BL_CASELOCK) stores the cases that are currently locked for processing by any program module. BLCaseSession BL_CASELOCK ( SCASEID VARCHAR2(16) not null, SWORKTYPE VARCHAR2(15) not null, SUSERID VARCHAR2(16) not null, DLOCKED DATE not null, )
[0091] The Case Relationship table (BL_CASERELATIONSHIP) stores the relationship between cases. It is accessed by the BLCase object using the GetChildren and GetParent methods.
BL_CASERELATIONSHIP ( SCHILDCASEID VARCHAR2(16) not null, SCHILDWORKTYPE VARCHAR2(16) not null, SPARENTCASEID VARCHAR2(16) not null, SPARENTWORKTYPE VARCHAR2(16) not null, DCREATED DATE not null, )
[0092] The Case Audit Session table (BL_CASEAUDITSESSION) is the parent table for all audits during a case session. It is accessed by BLCaseAuditSession BL_CASEAUDITSESSION ( SWORKTYPE VARCHAR2(16) not null, SCASEID VARCHAR2(16) not null, SSESSIONID VARCHAR2(16) not null, DCREATED DATE not null, SUSERID VARCHAR2(16) not null, )
[0093] The Scan Productivity table (BL_SCANPRODUCTIVITY) is a processing table used to store the statistics to run a productivity report for scan operators. The table records are written by the Scan interface (described below) and are not modified by any other process.
BL_SCANPRODUCTIVITY ( SBATCHNAME VARCHAR2(18) null , BBATCHACCEPTED CHAR(1) null , SUSERID VARCHAR2(8) null , DRECEIVEDDATE DATE null , IEXPECTEDCOUNT NUMBER(3) null , IACTUALCOUNT NUMBER(3) null , IPAGECOUNT NUMBER(3) null , SDOCTYPE VARCHAR2(20) null , DSCANSTARTTIME DATE null , DSCANSTOPTIME DATE null , )
[0094] The Index Productivity table (BL_INDEXPRODUCTIVITY) is a processing table used to store the statistics to run a productivity report for index operators. The table records are written by the Index interface (described below) and are not modified by any other process, but are used for reporting purposes.
BL_INDEXPRODUCTIVITY ( SBATCHNAME VARCHAR2(18) null , SUSERID VARCHAR2(8) null , IDOCUMENTCOUNT NUMBER(3) null , INUMBERINDEXED NUMBER(3) null , INUMBERRESCANNED NUMBER(3) null , INUMBERADDED NUMBER(3) null , INUMBERDELETED NUMBER(3) null , DSTARTTIME DATE null , DSTOPTIME DATE null , )
[0095] The Rescan table (BL_RESCAN) is a processing table that stores documents that need to be rescanned. The table records are written by the Index interface and are not modified by any other process.
BL_RESCAN ( SDOCID VARCHAR2(8) null , SBATCHNAME VARCHAR2(18) null , SUSERID VARCHAR2(8) null , INUMBERPAGES NUMBER(3) null , SPAGEPOSITION VARCHAR2(25) null , SDOCTYPE VARCHAR2(20) null , DRESCANTIME DATE null , )
[0096] The Document Type table (BL_DOCTYPE) stores the valid business document types and their associated scan settings. This table is accessed by the Scan and Index graphical user interfaces. The Scan and Index interfaces use the table to provide a list of valid document types to the user. Once a valid document type is chosen, the Scan program looks up the associated settings and template to which to attach the scan batch. This table can be modified by business users through the System Maintenance interface (described below).
BL_DOCTYPE ( SDOCTYPE VARCHAR2(20) not null, SSETTINGS VARCHAR2(20) not null, STEMPLATE VARCHAR2(20) null , )
[0097] The Case Audit Detail table (BL_CASEAUDITDETAIL) stores audit records created for each case. It is accessed by BLCaseAudit BL_CASEAUDITDETAIL ) SSESSIONID VARCHAR2(16) not null, DCREATED DATE not null, SCATEGORY VARCHAR2(16) not null, SACTION VARCHAR2(16) not null, SDESCRIPTION VARCHAR2(512) null , SAUDITDETAIL1 VARCHAR2(64) null , SAUDITDETAIL2 VARCHAR2(64) null , SAUDITDETAIL3 VARCHAR2(64) null , )
[0098] A set of baseline tables need to be configured for each implementation of the present invention. Each system implementation builds upon this framework to add its own tables. The baseline tables that need to be configured are:
BL_USERPROFILE BL_PROGRAMSECURITY BL_TASKSECURITY BL_FUNCTIONSECURITY BL_USERWORKLOAD BL_USERWORKSTEP BL_USERWORKSTEPDIVISION BL_WORKTYPE BL_WORKSTEP BL_WORKSTEPDIVISION BL_WORKSTEPRULE BL_BOOKMARKCONFIG BL_BOOKMARKMAP BL_DOCTYPEMAP BL_UPDATEORDER BL_SYSTEMPARAM BL_EVENTPROCFIELDMAP BL_LETTER BL_LETTERGROUP
[0099] In addition, there will almost always be a set of business specific tables at each site.
[0100] The User Profile table (BL_USERPROFILE) is a reference table that stores all the users in the system and their associated characteristics. The User Distribution process accesses the User Profile table to determine whether a user is available to receive work.
BL_USERPROFILE ( SUSERID VARCHAR2(8) not null, SUSERNAME VARCHAR2(64) not null, BISAVAILABLE CHAR(1) not null, )
[0101] The Program Security table (BL_PROGRAMSECURITY) stores the first level of security, the program module level. BLProgramSecurity BL_PROGRAMSECURITY ( SUSERID VARCHAR2(8) not null, SPROGRAMNAME VARCHAR2(16) not null, )
[0102] The Task Security table (BL_TASKSECURITY) stores the second level of security, the task level. BLProgramSecurity BL_TASKSECURITY ( SUSERID VARCHAR2(8) not null, SPROGRAMNAME VARCHAR2(16) not null, STASKNAME VARCHAR2(16) not null, )
[0103] The Function Security table (BL_FUNCTIONSECURITY) stores the third level of security, the function level. BLProgramSecurity BL_FUNCTIONSECURITY ( SUSERID VARCHAR2(8) not null, SPROGRAMNAME VARCHAR2(16) not null, STASKNAME VARCHAR2(16) not null, SFUNCTIONNAME VARCHAR2(16) not null, )
[0104] The User Work Load table (BL_USERWORKLOAD) stores the relative load that each user should be assigned during the User Distribution process. The records in the table are maintained by business users through the System Maintenance interface.
BL_USERWORKLOAD ( SUSERID VARCHAR2(8) not null, SWORKTYPE VARCHAR2(16) not null, ILOADFACTOR NUMBER(4) not null, )
[0105] The User Work Step table (BL_USERWORKSTEP) defines the work steps that a user is allowed to access.
BL_USERWORKSTEP ( SUSERID VARCHAR2(8) not null, SWORKTYPE VARCHAR2(16) not null, SWORKSTEP VARCHAR2(16) not null, )
[0106] The User Work Step Division table (BL_USERWORKSTEPDIVISION) stores the order of work step divisions in which a user receives work. BLCaseSession BL_USERWORKSTEPDIVISION ( SUSERID VARCHAR2(8) not null, SWORKTYPE VARCHAR2(16) not null, SWORKSTEP VARCHAR2(16) not null, SWORKSTEPDIV VARCHAR2(16) not null, IWORKSTEPDIVPRIORITY NUMBER(2) not null, )
[0107] The Work Type table (BL_WORKTYPE) stores each different type of work in the system. A work type is defined as the data and processes associated with work. The parameters associated with each work type describe the database table and the workflow engine class that should be accessed for processing. Work Types are associated with a specific BLCase Table and the system can support multiple Work Types.
BL_WORKTYPE ( SWORKTYPE VARCHAR2(16) not null, SWORKTYPENAME VARCHAR2(64) not null SCASETABLENAME VARCHAR2(64) not null, SWORKELOWOLASS VARCHAR2(64) null , BPROCESSMULTIPLEEVENTS CHAR(1) null , )
[0108] The Work Step table (BL_WORKSTEP) stores all the work steps associated with a work type. The work steps must also correspond to the workflow engine process map. There are characteristics about work steps that are captured in this table. The table is configured initially during system implementation. It is not changed often during the life of the system.
BL_WORKSTEP ( SWORKTYPE VARCHAR2(16) not null, SWORKSTEP VARCHAR2(16) not null, SWORKSTEPNAME VARCHAR2(64) not null BISSYSTEMSTEP CHAR(1) not null, BISFILTERED CHAR(1) not null, BISEVENTALLOWED CHAR(1) not null, SWORKFLOWPERFORMERNAME VARCHAR2(64) null , SEVENTACTIONCODE CHAR(1) null , )
[0109] The Work Step Division table (BL_WORKSTEPDIVISION) stores the work step divisions associated with each work type and work step combination. Work Step Divisions are segmentations of Work Steps that provide work specialization. The records are maintained by business users through the System Maintenance interface.
BL_WORKSTEPDIVISION ( SWORKTYPE VARCHAR2(16) not null, SWORKSTEP VARCHAR2(16) not null, SWORKSTEPDIV VARCHAR2(16) not null, SWORKSTEPDIVNAME VARCHAR2(64) not null, IWORKSTEPDIVTYPE NUMBER(1) not null, BISDEFAULT CHAR(1) not null, )
[0110] The Work Step Rule table (BL_WORKSTEPRULE) stores the rules associated with work step divisions. The rules are prioritized to read and determine to which work step division a case should be assigned. These rules may be maintained by business users through the System Maintenance interface.
BL_WORKSTEPRULE ( SWORKTYPE VARCHAR2(16) not null, SWORKSTEP VARCHAR2(16) not null, IWORKSTEPRULENUM NUMBER(4) not null, SWORKSTEPRULE VARCHAR2(2000) not null, SNEWWORKSTEPDIV VARCHAR2(16) not null, BDISABLED CHAR(1) not null, )
[0111] The Book Mark Configuration table (BL_BOOKMARKCONFIG) stores the height and width of each letter field. It is accessed by the Letter Generation Wizard to size each bookmarked field when presenting the data entry screen to a user. This table is optional and is managed by business users through the System Maintenance interface.
BL_BOOKMARKCONFIG ( SBOOKMARKNAME VARCHAR2(64) not null, IHEIGHT NUMBER(2) null , IWIDTH NUMBER(2) null , )
[0112] The Book Mark Map table (BL_BOOKMARKMAP) stores the association between a letter bookmark and the case field that should be assigned to it. The Letter Generation Wizard uses the table to query by the bookmark name and replace the bookmark with the specified case field value.
BL_BOOKMARKMAP ( SBOOKMARK VARCHAR2(64) not null, SWORKTYPE VARCHAR2(16) not null, SFIELDNAME VARCHAR2(64) not null, IFIELDTYPE NUMBER(2) not null, )
[0113] The Doc Type Map table (BL_DOCTYPEMAP) maps an incoming document type to a work type. This table is accessed by the Case Builder process.
BL_DOCTYPEMAP ( SDOCTYPE VARCHAR2(16) not null, SWORKTYPE VARCHAR2(16) not null, )
[0114] The Update Order table (BL_UPDATEORDER) dictates the order in which tables should be updated for a transaction. DBConnMgr BL_UPDATEORDER ( IORDER NUMBER not null, STABLENAME VARCHAR2(64) not null, )
[0115] The System Parameter table (BL_SYSTEMPARAM) stores system wide parameters. It is accessed by each program module.
BL_SYSTEMPARAM ( SPARAMNAME VARCHAR2(32) not null, SPRAMVALUE VARCHAR2(256) null , )
[0116] The Event Process Field Map table (BL_EVENTPROCFIELDMAP) stores the work object fields that are created when a work object is injected into the workflow engine. There are different mappings for each work type. The table provides a configurable method to map fields to the work object before it is injected into the workflow. This is determined at each system implementation without needing to modify code. It is accessed by the Event Processor module.
BL_EVENTPROCFIELDMAP ( SFIELDNAME VARCHAR2(64) not null, IFIELDTYPE NUMBER(2) not null, SWORKITEMFIELDNAME VARCHAR2(64) not null, SWORKTYPE VARCHAR2(16) not null, )
[0117] The Letter table (BL_LETTER) stores all the letter templates in the system and their associated characteristics. They are associated with the Letter Group table. The Letter Generation Wizard accesses the table to retrieve all the letter templates into a list given a letter group. The table is maintained by business users through the System Maintenance interface.
BL_LETTER ( SGROUPID VARCHAR2(16) not null, SLETTERID VARCHAR2(16) not null, SLETTERDISPLAYNAME VARCHAR2(128) not null, SLETTERFILENAME VARCHAR2(32) not null, IDISPLAYORDER NUMBER(4) not null, )
[0118] The Letter Group table (BL_LETTERGROUP) stores the list of letter templates grouped in business groups. The Letter Generation Wizard reads this table to display the list of valid tables for the user to select from. The Letter Group table is maintained by business users through the System Maintenance interface.
BL_LETTERGROUP ( SGROUPID VARCHAR2(16) not null, SGROUPDISPLAYNAME VARCHAR2(128) not null, IDISPLAYORDER NUMBER(4) not null, )
[0119] An example of workflow processing in a workflow processing system according to the present invention is illustrated in
[0120] If a letter is created in step
[0121] Preferably, at various times during work on a case, a check is made
[0122] As illustrated in
[0123] The present invention has been described with respect to exemplary embodiments of a workflow processing framework, workflow development system and workflow processing system. However, the invention is not limited to these specific embodiments, but encompasses all of the subject matter of the following claims.
[0124] The many features and advantages of the invention are apparent from the detailed specification and, thus, it is intended by the appended claims to cover all such features and advantages of the invention which fall within the true spirit and scope of the invention. Further, since numerous modifications and changes will readily occur to those skilled in the art, it is not desired to limit the invention to the exact construction and operation illustrated and described, and accordingly all suitable modifications and equivalents may be resorted to, falling within the scope of the invention.
[0125] Reference will now be made in detail to the embodiments of the present invention, examples of which are illustrated in the accompanying drawings, wherein like reference numerals refer to like elements throughout. The embodiments are described below in order to explain the present invention by referring to the figures.