A case management application helps an enterprise to manage its business processes by providing a computer-based framework for collecting, tracking and storing business process information. For example, a case management application can assist the enterprise to collect and store case management data associated with a loan application process, an insurance claim process, and the like. In some cases, the case management application can also support data searching services that allow an end-user to search for and to retrieve case management data and/or non-enterprise related information relevant to performing a process task. In these cases, the application can be referred to as a search-based case management application.
Typically, the search-based case management application is customized to the enterprise's business process. Building such an application is complex and typically requires skilled programmers to write customized code to handle various phases of the enterprise's business process. Enabling search capabilities is particularly difficult because the programmers must build search queries for a variety of backend storage structures, must configure search indexing engines to build indexes based on the enterprise's specifications, and must configure document analyzers to annotate documents in the repository in order to make them searchable. Accordingly, the application building process for a search-based case management application is expensive and time-consuming.
To address some aspects of this issue, computer-based solutions are available that allow the enterprise's business expert to design and configure a case management application for a business process without requiring programmers to write custom code. In essence, the solution supports automated code generation based on configuration information provided by the business expert. For example, Documentum xCP Designer by EMC Corporation of Hopkinton, Mass. is a configuration-based solution that provides graphical composition tools for the business expert to design case management applications. Using a drag-and-drop graphical toolset, the business expert can model business processes, design electronic forms, and design user interfaces, from which the system can build the application.
While computer-based application building solutions can significantly reduce or eliminate the need for custom coding to build a case management application, enabling a search service within the case management application is not supported and therefore, remains a manual process requiring a skilled programmer to write custom coding. Accordingly, building a search-based case management application continues to be an expensive and time-consuming process.
Advantages of the subject matter claimed will become apparent to those skilled in the art upon reading this description in conjunction with the accompanying drawings, in which like reference numerals have been used to designate like elements, and in which:
The subject matter presented herein provides a computer-based system for designing, building, and deploying a search service application. According to an embodiment, an application design system includes a search service application builder component that provides a model configured to guide a business expert through a series of steps to design a custom search service application. In an embodiment, the model allows the business expert to select which attributes of an object can be searched and what information will be returned in a search result. The model can also enable the business expert to specify other search features, such as filters, facets, sorts and the like. When the business expert is done designing the search service application, the search service application builder component automatically provides computer code for the custom search service application based on the business expert's selections. The resulting custom search service application can then be a standalone component and/or integrated with a case management application.
In an embodiment, when the search service application is built, the application building component can also automatically deploy the search service application. For example, a deployment engine provided by the application building component can automatically configure a search engine associated with a data store that stores the information relating to the object. In an embodiment, the search engine can be directed to generate new search indexes and/or to re-index existing search indexes to optimize the search process. In an embodiment, new search indexes can be generated based at least on the selected searchable attributes of the object and based on the information that will be returned in the search result. The search engine can also be directed to expose the other search features specified by the business expert, such as attributes associated with filters, and facets, and sortable attributes.
Prior to describing the subject matter in detail, an exemplary hardware device in which the subject matter may be implemented shall first be described. Those of ordinary skill in the art will appreciate that the elements illustrated in
The bus 114 may comprise any type of bus architecture. Examples include a memory bus, a peripheral bus, a local bus, etc. The processing unit 102 is an instruction execution machine, apparatus, or device and may comprise a microprocessor, a digital signal processor, a graphics processing unit, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), etc. The processing unit 102 may be configured to execute program instructions stored in memory 104 and/or storage 106 and/or received via data entry module 108.
The memory 104 may include read only memory (ROM) 116 and random access memory (RAM) 118. Memory 104 may be configured to store program instructions and data during operation of device 100. In various embodiments, memory 104 may include any of a variety of memory technologies such as static random access memory (SRAM) or dynamic RAM (DRAM), including variants such as dual data rate synchronous DRAM (DDR SDRAM), error correcting code synchronous DRAM (ECC SDRAM), or RAMBUS DRAM (RDRAM), for example. Memory 104 may also include nonvolatile memory technologies such as nonvolatile flash RAM (NVRAM) or ROM. In some embodiments, it is contemplated that memory 104 may include a combination of technologies such as the foregoing, as well as other technologies not specifically mentioned. When the subject matter is implemented in a computer system, a basic input/output system (BIOS) 120, containing the basic routines that help to transfer information between elements within the computer system, such as during start-up, is stored in ROM 116.
The storage 106 may include a flash memory data storage device for reading from and writing to flash memory, a hard disk drive for reading from and writing to a hard disk, a magnetic disk drive for reading from or writing to a removable magnetic disk, and/or an optical disk drive for reading from or writing to a removable optical disk such as a CD ROM, DVD or other optical media. The drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the hardware device 100.
It is noted that the methods described herein can be embodied in executable instructions stored in a computer readable medium for use by or in connection with an instruction execution machine, apparatus, or device, such as a computer-based or processor-containing machine, apparatus, or device. It will be appreciated by those skilled in the art that for some embodiments, other types of computer readable media may be used which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, RAM, ROM, and the like may also be used in the exemplary operating environment. As used here, a “computer-readable medium” can include one or more of any suitable media for storing the executable instructions of a computer program in one or more of an electronic, magnetic, optical, and electromagnetic format, such that the instruction execution machine, system, apparatus, or device can read (or fetch) the instructions from the computer readable medium and execute the instructions for carrying out the described methods. A non-exhaustive list of conventional exemplary computer readable medium includes: a portable computer diskette; a RAM; a ROM; an erasable programmable read only memory (EPROM or flash memory); optical storage devices, including a portable compact disc (CD), a portable digital video disc (DVD), a high definition DVD (HD-DVD™), a BLU-RAY disc; and the like.
A number of program modules may be stored on the storage 106, ROM 116 or RAM 118, including an operating system 122, one or more applications programs 124, program data 126, and other program modules 128. A user may enter commands and information into the hardware device 100 through data entry module 108. Data entry module 108 may include mechanisms such as a keyboard, a touch screen, a pointing device, etc. Other external input devices (not shown) are connected to the hardware device 100 via external data entry interface 130. By way of example and not limitation, external input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like. In some embodiments, external input devices may include video or audio input devices such as a video camera, a still camera, etc. Data entry module 108 may be configured to receive input from one or more users of device 100 and to deliver such input to processing unit 102 and/or memory 104 via bus 114.
A display 132 is also connected to the bus 114 via display adapter 110. Display 132 may be configured to display output of device 100 to one or more users. In some embodiments, a given device such as a touch screen, for example, may function as both data entry module 108 and display 132. External display devices may also be connected to the bus 114 via external display interface 134. Other peripheral output devices, not shown, such as speakers and printers, may be connected to the hardware device 100.
The hardware device 100 may operate in a networked environment using logical connections to one or more remote nodes (not shown) via communication interface 112. The remote node may be another computer, a server, a router, a peer device or other common network node, and typically includes many or all of the elements described above relative to the hardware device 100. The communication interface 112 may interface with a wireless network and/or a wired network. Examples of wireless networks include, for example, a BLUETOOTH network, a wireless personal area network, a wireless 802.11 local area network (LAN), and/or wireless telephony network (e.g., a cellular, PCS, or GSM network). Examples of wired networks include, for example, a LAN, a fiber optic network, a wired personal area network, a telephony network, and/or a wide area network (WAN). Such networking environments are commonplace in intranets, the Internet, offices, enterprise-wide computer networks and the like. In some embodiments, communication interface 112 may include logic configured to support direct memory access (DMA) transfers between memory 104 and other devices.
In a networked environment, program modules depicted relative to the hardware device 100, or portions thereof, may be stored in a remote storage device, such as, for example, on a server. It will be appreciated that other hardware and/or software to establish a communications link between the hardware device 100 and other devices may be used.
It should be understood that the arrangement of hardware device 100 illustrated in
In the description that follows, the subject matter will be described with reference to acts and symbolic representations of operations that are performed by one or more devices, unless indicated otherwise. As such, it will be understood that such acts and operations, which are at times referred to as being computer-executed, include the manipulation by the processing unit of data in a structured form. This manipulation transforms the data or maintains it at locations in the memory system of the computer, which reconfigures or otherwise alters the operation of the device in a manner well understood by those skilled in the art. The data structures where data is maintained are physical locations of the memory that have particular properties defined by the format of the data. However, while the subject matter is being described in the foregoing context, it is not meant to be limiting as those of skill in the art will appreciate that various of the acts and operation described hereinafter may also be implemented in hardware.
To facilitate an understanding of the subject matter described below, many aspects are described in terms of sequences of actions. At least one of these aspects defined by the claims is performed by an electronic hardware component. For example, it will be recognized that the various actions can be performed by specialized circuits or circuitry, by program instructions being executed by one or more processors, or by a combination of both. The description herein of any sequence of actions is not intended to imply that the specific order described for performing that sequence must be followed. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context.
Search Service Application Building
Referring now to
According to an embodiment, the application server 402 can also be configured to host a content management system 403.
The case management application 510 can be configured to collect and manage information relating to a business process, such as, for example, a loan application process, an insurance claim process, and the like. The case management application 510, in an embodiment, can include configuration information 512 that defines tasks and objects 514 associated with the business process. Each object 514 can be associated with a plurality of attributes 515. For example, for an insurance claim process, an object 514 can represent a customer and its attributes 515 can include the customer's first name and the customer's last name. In an embodiment, each attribute 515 is associated with an attribute type that defines its data type. Exemplary data types include integer, string, date, time, etc.
During runtime, a task manager component 516 in the case management application 510 can manage the business process by distributing tasks 405, 405a to task workers 400a and knowledge workers 400b. When a task, e.g., 405, is directed to collecting information, e.g., documents or forms, the task worker 400a can perform the task and transmit the information 406 back to the case management application 510. A content manager component 518 in the case management application 510 can be configured to receive the information 406 and to store it in a backend data store 450, which can be configured to support a storage structure for managing and storing the information 406. Exemplary storage structures include a file storage system, a relational database, a native XML database, and the like. In an embodiment, more than one backend data store 450a-450c can be provided to support more than one storage structure. In each data store 450a-450c, the information 406 can be stored as a data record 460 in the corresponding storage structures.
In addition, in an embodiment, the content manager 518 can transmit the collected information 406 to the search engine 520 and/or to the content classification engine 530 for processing. According to an embodiment, each backend data store 450 can be associated with a search engine 520 configured to process search requests for information stored in the associated data store 450. Thus, as shown in
In an embodiment, each the search engine 520 can include an index manager 522 that manages, e.g., creates and updates, a plurality of existing search indexes 524 pertaining to a plurality of data records 460 stored in the associated data store 450. In an embodiment, the data records 460 include information relating to the objects 514 associated with the business process. When new or updated information 406 is received, the index manager 522 can update the appropriate search indexes 524. In addition or alternatively, when needed, the content classification engine 530 can be configured to semantically analyze the content of the information 406 in order to classify and categorize the information. The content classification engine 530 can be configured, in an embodiment, to create content metadata, which can then be used by the search engine 520 to update search indexes 524.
With reference to
According to an embodiment, an enterprise's business expert 440 and/or case management administrator can be responsible for configuring a case management application 510. For example, the business expert 440 can define the objects 514, e.g., business objects, content objects, task objects, and the like, and object attributes 515 associated with the objects 514 and their respective data types. In addition, the business expert 440 can be responsible for building applications, such as search service applications 600, that are used by the case management application 510. According to an embodiment, the business expert 440 can submit the request to build a search service application 600 directly to the search service application builder component 320. Alternatively, the request can be submitted to the case management application 510, which can be configured to route the request to the search service application builder component 320 in the application design engine 300. In an embodiment, the request received by the search service application builder component 320 can include information identifying the first object 514.
The case management application 510 can be configured to receive the request to build the search service application via a network subsystem 503 and an application protocol layer, or other higher protocol layer, as illustrated by an exemplary HTTP protocol layer 504, among many possible standard and proprietary protocol layers. These higher protocol layers can encode, package, and/or reformat data for sending and receiving messages over a network layer, such as Internet Protocol (IP), and/or a transport layer, such as Transmission Control Protocol (TCP) and/or User Datagram Protocol (UDP). A command handler component 507 in the case management system 403 can be configured to receive the request via an incoming message handler 505 and to route the request to the case management application 510 or to the application design engine 300.
In an embodiment, when the search service application builder component 320 in the application design engine 300 receives the request to build the search service application from the business expert 440, it can be configured to invoke a search build model 321 that allows the business expert 440 to configure the search service application 600 through a series of build interfaces 700. For example, in an embodiment, a build interface 700 can allow the business expert 440 to update the first object 514 by adding or removing an attribute 515 associated with the first object 514. In addition, the business expert 440 can modify a property, e.g., the data type, of an existing attribute 515 via the build interface 700. For example, in a relational database, a data type associated with an attribute corresponding to “birthdate” can be changed from a “string” data type to a “date” data type. When the application is deployed, the relational database will drop a column of type “string” and create a new column of type “date” for the attribute “birthdate.”
In addition, in another embodiment, the business expert 440 can specify a query type for the first object 514 via a build interface 700 that presents a plurality of query types associated with a plurality of storage structures. Exemplary query types include full-text queries, real-time queries, historical queries, and task-list queries; and as stated above, exemplary storage structures include a relational database, a native XML database, a file storage system, and a real-time data store. Other query types and other storage structures exist and are not limited to those types listed above. In an embodiment, the search service application builder component 320 can be configured to receive an indication specifying the query type via the build interface 700.
Referring again to
In addition to specifying a query type, the business expert 440 can also determine which query inputs the search service application 600 will accept from an end-user.
In
Referring again to
According to an embodiment, the search build model 321 can allow the business expert 440 to determine what information the search service application 600 will return to the end-user as a search result.
In an embodiment, the search result can be sorted based on any of the search result output fields 710. For example, during the search service application building process, the business expert 440 can enable sorting by selecting a box 711 associated with the search result output field 710. In
In addition to selecting output fields 710, the search build model 321 can also allow the business expert 440 to select search result filtering fields to filter the search result in another embodiment. For example, in
In another embodiment, the search build model 321 can also allow the business expert 440 to select a facets field corresponding to an attribute 515 associated with the object 514 in order to group the search results by the attribute 515 corresponding to the facets field.
According to an exemplary embodiment, in addition to determining end-user inputs and configuring the result set, the business expert 440 can design a user interface for the end-user, e.g., a knowledge worker 400b. In an embodiment, the application design engine 300 can include a user interface builder component 330 that is configured to receive a request from the business expert 440 to design an end-user interface template 331 for the search service application for the first object 514. In response to receiving the request, the user interface builder component 330 can present a build interface 700 that allows the business expert 440 to design the end-user interface template 331.
In an embodiment, the business expert 440 can select the first 730a and second 730b widgets from a widget window 704 and drop it into a preview window 705 to design the end-user interface template 331. In
Referring again to
In an embodiment, the application design engine 300 can include a code library 340, which includes a plurality of code templates 342. Each template 342 includes code and metadata that can be loaded into extensible tools, e.g., an Integrated Development Environment (IDE), to automate the development of a family of software products. According to an embodiment, each template 342 can be designed to build a family of applications, e.g., case management applications 510, where each member of the family represents a variation of the underlying application. For example, a particular code template 342 can be used to build a family of case management applications 510, which includes applications representing a loan approval process, a loan refinance process, and a loan restructure process.
In an embodiment, the code library 340 can be a software factory repository and the code templates 342 can be software factory templates. Each software factory template 342 can be associated with a software factory schema (not shown) that defines a particular family of applications. A more detailed discussion of software factories and software factory templates 342 is provided in “Software Factories: Assembling Applications with Patterns, Models, Frameworks and Tools,” by Jack Greenfield and Keith Short (2004).
According to an embodiment, the selected template 342b can include code for creating a particular type of search model for the first object 514. For example, as mentioned above, when configuring the search service application 600, the business expert 440 can specify the type of search query the search service application 600 will generate for the first object 514. In an embodiment, the specified query type can be associated with a storage structure supported by a particular backend data store 450a-450c, and therefore the generated search query will be compatible with the supported storage structure. For example, when the supported storage structure is a relational database, the generated search query will be formatted as an SQL or DQL query. Accordingly, the selection of the template 342b can be based on the specified query type so that the created search model is configured to generate a search query that is compatible with the supported storage structure associated with the specified query type.
Referring again to
In an embodiment, the application builder tool 322 can be configured to receive the template 342b from the library 340 and the business expert's selections provided via the build interfaces 700 from the search build model 321. The application builder tool 322 can then generate the software components of the search model by integrating the selections, including the end-user inputs 704 and the search result outputs 710, with the code template 342b.
In an embodiment, the code template 342b provides the underlying programming code associated with each of the components 620, which can be customized by the business expert's selections. For example, the search query generator component 620a can be configured to generate a search query 622 using a search query model 621 that includes at least the end-user input field 704 and the search result output field 710. In an embodiment, when a query type has been specified, the search query model 621 can be associated with the specified query type so that the search query 622 generated is compatible with the storage structure supported by the backend data store 450.
In an embodiment, the search result generator component 620b can be configured to generate a search result 632 that includes information requested by an end-user 400b. In addition, the search result generator component 620b can be configured to filter the information based on the value 716 of the selected search result filtering field 712, and/or to group the information based on the selected facets field(s) 722. Moreover, the UI generator component 620c can be configured, in an embodiment, to generate a query page 800 based on the UI template 331 designed by the business expert 440 and to provide the query page 800 to the end-user 400b when a request for information relating to the first object 514 is received from the end-user 400b and/or when the search result 632 is provided to the end-user 400b.
Search Service Application Deployment
According to an embodiment, once the application build tool 322 has generated and configured the software components 620 of the search model 610, the application build tool 322 can be configured to compile the programming code and to prepare the search model 610 for deployment. In an embodiment, the search service application builder component 320 in the application design engine 300 can include a deployment engine 350 configured to manage the deployment of the search service application 600. In another embodiment, the deployment engine 350 can be implemented outside of the application design engine 300, and/or in another server (not shown).
Referring again to
According to an embodiment, when the search service application 600 is deployed, the deployment engine 350 can be configured to analyze the search model 610 to identify with which of the backend data stores 450a-450c the search model 610 is associated. For example, in an embodiment, the deployment engine 350 can identify the associated data store 450 based on the first object 514 and on the query type associated with the search model 610. Once the associated backend data store 450 is identified, the deployment engine 350 can determine how best to configure the search engine 520 associated with the data store 450 in order to optimize a search query generated by the search model 610.
For example, in an embodiment, the deployment engine 350 can identify from the search model 610 the attributes, e.g., 515b-515d, corresponding to the end-user input 704 and search result output 710 fields, e.g., “First Name” 515b, “Last Name” 515c, “Occupation” 515d, and can direct the index manager 522 to generate at least one new search index 525 based on at least one of the attributes 515b-515d. In another embodiment, when the search model 610 is further based on an operator 705 associated with the attribute(s) corresponding to the end-user input field 704, the deployment engine 350 can direct the index manager 522 to generate at least one new search index 525 based on the operator 705. For example, when a first attribute is associated with an operator 705 that is an inequality, e.g., greater than or less than a value, before or after a date, the index manager 522 can be directed to generate a new search index 525 that exposes and sorts the first attribute.
In another embodiment, when the search model 610 is also based on a search result filtering field 712 and/or a facets field 722 corresponding to an attribute, e.g., 515d, of the first object 514, the deployment engine 350 can be configured, in an embodiment, to identify the attribute(s) 515d corresponding to the search result filtering field 712 and/or the facets field 722, and to direct the index manager 522 to generate new search index(es) 525 to expose that attribute(s) 515d as well if necessary. Moreover, in yet another embodiment, when sorting is enabled on any of the attributes, e.g., “Last Name” 515c, corresponding to the search result output 710 fields, the deployment engine 350 can identify which attribute 515c is sort enabled, and can direct the index manager 522 to generate at least one new search index 525a for the attribute 515c corresponding to the sort enabled search result output field 710. For example, the search engine 520 can be configured to generate a sorted search index 525a associated with the “Last Name” attribute 515c that organizes the data in ascending or descending order by Last Name. By providing the sorted search index(es) 525a during deployment, the search engine 520 can more efficiently process sort requests during runtime.
According to an embodiment, prior to directing the index manager 522 to generate any new search indexes 525, the deployment engine 350 can analyze the search model 610 to determine at least one proposed search index and can compare the proposed search index(es) to the existing search indexes 524 of the search engine 520 to determine a difference between the proposed and existing 524 indexes. Based on the determined difference, the deployment engine 350 can identify which, if any, of the proposed search indexes should be generated as new search indexes 525.
Referring again to
In an embodiment, the index manager 522 can be directed to store the first partition 526a including the indexed data relating to the first object 514 in a first storage location and to store the other partition(s) 526b in a second storage location different from the first storage location so that the search engine 520 can access the indexed data relating to the first object 514 more efficiently. For example, according to an embodiment, the first storage location and the second storage location can be in first and second storage devices, respectively, where the first storage device can be faster than the second storage device. By storing the indexed data related to the first object 514 in a faster storage device in this manner, the search engine's performance can be optimized.
In other embodiments, partitioning the indexed data can provide additional benefits. For example, when corporate policies dictate archiving or deleting records 460 created before a certain year, the index manager 522 can be directed to partition the indexed data by year so that the archiving process can proceed efficiently. In another example, the index manager 522 can be directed to place specified data considered critical to the enterprise into a partition that is backed up more frequently than another partition that includes less critical data.
According to an embodiment, in addition to configuring the search engine 520 to generate new search indexes 525 and to strategically partition the indexed data, the deployment engine 350 can also be configured to direct the search engine 520 to migrate indexed data relating to the first object 514 to comply with the search model 610. In an embodiment described above, during the search service application build phase, the business expert 440 can update the first object 514 and/or can modify an attribute 515 associated with the first object 514. When the search model 610 includes such an update and/or modification, the deployment engine 350 can be configured to direct the index manager 522 to migrate the indexed data relating to the first object 514.
For example, when the first object 514 is updated by the search model 610, e.g., by adding an attribute 515, the deployment engine 350 can be configured, in an embodiment, to instruct the index manager 522 re-index at least one existing search index 524 based on the updated first object 514. In addition, in another embodiment, when an attribute 515 of the first object is modified by the search model 610, e.g., by changing the data type of the attribute, the index manager 522 can be instructed to identify the modified data associated with the modified attribute 515 and to re-index the modified data from the database 450 into the appropriate search index 524. In this manner, the modified data updates the corresponding data in the search index 524 to comply with the modification to the attribute type. For example, when the data type of an attribute 515 is changed from “integer” to “date,” the database 450 creates, at deployment, a new column of type “date” for the attribute that includes modified data associated with the attribute. In an embodiment, the index manager 522 is instructed to re-index the modified data from the new column to the search index 524 such that the modified data updates the corresponding data in the search index 524.
In addition to configuring the search engine, the deployment engine 350 can automatically configure the content classification engine 530 to identify information relating to at least one of the first attribute 515b and the second attribute 515c in a data record 460, e.g., a file, that is or will be stored in a storage structure supported by a backend data storage 450. In an embodiment, the content classification engine 530 can be configured to parse and semantically analyze content in the file and to apply configured classification rules relating to specified categories and/or attributes.
For example, when the content classification engine 530 is configured to apply classification rules relating to the categories/attributes of “First Name,” “Last Name,” and “Job Title” for a data record 460 that includes the phrase, “Felix Smith is the director of the group,” the content classification engine 350 can parse the phrase and analyze the semantic structure of the phrase to determine that “Felix” is a first name, “Smith” is a last name, and “director” is a job title. This is particularly useful for data records 460 that include unstructured content because the results of the classification can be used for categorization and/or as keywords to populate content metadata for the data records 460.
According to an embodiment, the deployment engine 350 can be configured to identify the attributes 515b, 515c corresponding to the end-user input 704 and search result output 710 fields, and to configure the content classification engine 530 to apply classification rules relating to the identified attributes 515b, 515c to identify and extract information in the data records 460 relating to the identified attributes 515b, 515c. Moreover, the content classification engine 530 can be configured to include the extracted information as metadata of the data records 460, which allows the data records 460 to be indexed and searchable by the search engine system 520.
According to another embodiment, when the search model 610 is also based on a search result filtering field 712 and/or a facets field 722 corresponding to an attribute, e.g., 515d, of the first object 514, the deployment engine 350 can be configured to identify the attribute 515d corresponding to the search result filtering field 712 and/or the facets field 722, and to configure the content classification engine 350 to apply classification rules relating to the identified attribute 515d to identify and extract information in the data records 460 relating to the identified attribute 515d.
Once deployment is completed, the search service application 600 for the first object 514 can be managed by a search service manager component 540 in the case management system 403. In an embodiment, the search service manager 540 can be configured to manage a plurality of search service applications 600 for a plurality of objects 514 associated with the case management application 510.
Search Service Application Runtime
During runtime, the search service application 600 for the first object 514 can be utilized to retrieve information relating to the first object 514 from a backend data store 450a, 450b, 450c. For example, as mentioned above, the task manager 516 in the case management application 510 can distribute tasks to workers 400a, 400b. While some tasks 405 can be directed to collecting information, other tasks 405a can be directed to making a decision. In the later case, a knowledge worker 400b assigned to perform such a task 405a may need to retrieve additional information in order to reach his decision. For example, the task 405a can involve making a decision whether to provide an additional insurance policy for a customer's teenage daughter, and the knowledge worker 400b would like to retrieve information relating to the occupation of the customer.
According to an embodiment, the knowledge worker 400b, i.e., the end-user, can transmit a search request 415 for information relating to a customer object, i.e., the first object 514, to the content management system 403. In an embodiment, the search request 415 can include information identifying the first object 415, such as an object identifier or name. The command handler component 507 can receive the request 415 via the incoming message handler 505 and route the request 415 to the case management application 510, which can be configured to receive the request 415, and to invoke the search service application 600 for the first object 514, e.g., the customer object. Alternatively, or in addition, the command handler component 507 can route the request 415 to the search service manager component 540, which can be configured to launch the search service application 600.
When invoked or launched, the search service application 600 can be configured to transmit the query page 800 to the knowledge worker 400b so that the knowledge worker 400b can submit to the search service application 600 the values for the attributes 515 corresponding to the end-user search input fields 704, 704a. For example, in
In an embodiment, the search query generator component 620a in the search model 610 can be configured to receive the value(s) for the attribute(s) 515b, 515c corresponding to the end-user input field(s) 704, 704a, and to generate a search query 622 based on the received value(s). For example, according to an embodiment, the search query generator 620a can use the search query model 621 to generate a search query 622 that includes a search criteria based on the values for the attributes 515b, 515c corresponding to the end-user input fields 704, 704a, and that also includes the attributes 515b, 515c, 515d corresponding to the search result output field(s) 710. In addition, when a query type has been specified, the search query 622 generated by the search query model 621 can be compatible with the backend storage structure associated with the query type.
According to an embodiment, the search service application 600 can be configured to invoke the search engine 520 to retrieve at least one data record 460 that includes the information requested by the end-user. For example, the search query 622 can be provided to the search engine 520, which can be configured to process the search query 622 against the corresponding backend data store 450. In an embodiment, the search engine 520 can be configured to scan at least one of the search indexes 524, 525 to locate data records 460 related to the first object 514 that include the requested information, and to return the located data records 460 to the search service application 600.
In an embodiment, the search result generator component 620b can be configured to receive the retrieved/located data record(s) 460 and to generate the search result 632 based at least on the data records 460. For example, the search result generator component 620b can be configured to format the retrieved information so that it can be included in the search results section 804 of the query page 800. In another embodiment, the search result generator component 620b can be configured to filter the data records 460 based on the selected search result filtering field(s) 712, and/or to group the data records 460 based on the selected facets field(s) 722.
According to an embodiment, when the search result 632 is generated, the search service application 600 can be configured to provide the search result 632 to the knowledge worker/end-user 400b. For example, the resulting search result 632 can be provided, in an embodiment, to the UI generator 620c so that it can be included in the search results section 804 and in the facets window 806 of the query page 800. In another embodiment, the knowledge worker/end-user 400b can include a user interface component (not shown) that can receive the search result 632 and generate a page for displaying the search result 632 to the knowledge worker 400b. The search service application 600 can be configured, in an embodiment, to transmit the search result 632 and/or the query page 800 to the knowledge worker/end-user 400b. For example, the search service application 600 can be configured to provide the search result 632 and/or the query page 800 to an outgoing message handler 506 in the case management system 403. In an embodiment, the outgoing message handler 506 can be configured to build a packet including the search result 632 and/or query page 800 and to interoperate directly with the protocol layer of the network subsystem 503 or with an application protocol layer, as described above and illustrated by the exemplary HTTP protocol layer 504. The packet can be transmitted as a whole or in parts via the network subsystem 503 over the network 404 to the knowledge worker/end-user 400b.
According to exemplary embodiments, the business expert 440 of an enterprise can design, build, and deploy a customized search service application 600 using a search build model 321 provided by an application design engine 300. Moreover, the business expert 440 can easily modify the search service application 600 by changing the search model 610 representing the search service application 600. In an embodiment, the business expert 440 needs little or no computer programming experience or knowledge of data storage structures and/or query languages to build and/or update the application 600. A plurality of search service applications 600 can be built for a plurality of objects 514 for any or all phases of the business process lifecycle. Because the applications 600 are built using a code template 342b, the applications 600 can be consistent with one another and not dependent on the whims of different programming professionals.
In addition, once built, the application(s) 600 can be automatically deployed and the search engines 520 associated with the data stores 450 can be automatically configured to process search queries generated by the applications 600 efficiently. Because these functions are performed automatically, the business expert 440 can focus on designing, as opposed to deploying, the search service applications 600. Accordingly, in an embodiment, a search-based case management application 510 can be provided and deployed in a flexible, cost-effective and time efficient manner.
The use of the terms “a” and “an” and “the” and similar referents in the context of describing the subject matter (particularly in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. Recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein, and each separate value is incorporated into the specification as if it were individually recited herein. Furthermore, the foregoing description is for the purpose of illustration only, and not for the purpose of limitation, as the scope of protection sought is defined by the claims as set forth hereinafter together with any equivalents thereof entitled to. The use of any and all examples, or exemplary language (e.g., “such as”) provided herein, is intended merely to better illustrate the subject matter and does not pose a limitation on the scope of the subject matter unless otherwise claimed. The use of the term “based on” and other like phrases indicating a condition for bringing about a result, both in the claims and in the written description, is not intended to foreclose any other conditions that bring about that result. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of the invention as claimed.
Preferred embodiments are described herein, including the best mode known to the inventor for carrying out the claimed subject matter. Of course, variations of those preferred embodiments will become apparent to those of ordinary skill in the art upon reading the foregoing description. The inventor expects skilled artisans to employ such variations as appropriate, and the inventor intends for the claimed subject matter to be practiced otherwise than as specifically described herein. Accordingly, this claimed subject matter includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed unless otherwise indicated herein or otherwise clearly contradicted by context.
Number | Name | Date | Kind |
---|---|---|---|
7415484 | Tulkoff et al. | Aug 2008 | B1 |
7509332 | Milby | Mar 2009 | B1 |
7877386 | Shurtleff | Jan 2011 | B2 |
20010049679 | Yonaitis | Dec 2001 | A1 |
20030083959 | Song | May 2003 | A1 |
20050198052 | Steinmaier | Sep 2005 | A1 |
20050216304 | Westphal | Sep 2005 | A1 |
20070185826 | Brice | Aug 2007 | A1 |
20070250492 | Angel | Oct 2007 | A1 |
20070266015 | Shakib | Nov 2007 | A1 |
20080097975 | Guay et al. | Apr 2008 | A1 |
20080208808 | Sue | Aug 2008 | A1 |
20090106191 | Gutlapalli | Apr 2009 | A1 |
20090106294 | Gutlapalli et al. | Apr 2009 | A1 |
20100057702 | Ghosh et al. | Mar 2010 | A1 |
20120215766 | Gorelik | Aug 2012 | A1 |
20120331118 | Stein et al. | Dec 2012 | A1 |
20130166573 | Vaitheeswaran et al. | Jun 2013 | A1 |
20130290321 | Shapira | Oct 2013 | A1 |
Entry |
---|
Office Action issued for U.S. Appl. No. 13/537,311, dated Feb. 27, 2014, 32 pages. |
Office Action issued for U.S. Appl. No. 13/537,311, dated Aug. 12, 2014, 35 pages. |
Office Action issued for U.S. Appl. No. 13/537,311, dated Mar. 24, 2015, 37 pages. |
Office Action issued for U.S. Appl. No. 13/537,311, dated Aug. 18, 2015, 41 pages. |
Office Action issued for U.S. Appl. No. 13/537,311, dated May 9, 2016, 53 pages. |
Office Action issued for U.S. Appl. No. 13/537,311, dated Dec. 28, 2016, 61 pages. |
Office Action issued for U.S. Appl. No. 13/537,311, dated Jul. 24, 2017, 70 pages. |
Office Action for U.S. Appl. No. 13/537,311, dated Jan. 29, 2018, 77 pgs. |