U.S. patent application number 12/696486 was filed with the patent office on 2011-08-04 for method and apparatus for creating a monitoring template for a business process.
This patent application is currently assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION. Invention is credited to Tian J. Chao, Sreeram Ramakrishnan.
Application Number | 20110191128 12/696486 |
Document ID | / |
Family ID | 44342402 |
Filed Date | 2011-08-04 |
United States Patent
Application |
20110191128 |
Kind Code |
A1 |
Chao; Tian J. ; et
al. |
August 4, 2011 |
Method and Apparatus for Creating a Monitoring Template for a
Business Process
Abstract
Methods and apparatus are provided for creating a monitoring
template for a business process. A monitoring template for a
business process monitoring system is generated by providing a
predefined schema definition for the monitoring template, wherein
the predefined schema definition comprises a predefined format for
describing the business process monitoring system using one or more
predefined keywords, wherein the predefined schema definition
comprises at least one monitoring model element that allows a user
to specify one or more monitoring elements required to generate the
business process monitoring system; and receiving a specification
of the one or more monitoring elements from the user. The
monitoring template can be used, for example, to generate
deployable code for an operational runtime version of the business
process monitoring system. The monitoring template allows
monitoring models and business process monitoring systems to be
reused.
Inventors: |
Chao; Tian J.; (Bedford,
NY) ; Ramakrishnan; Sreeram; (Yorktown Heights,
NY) |
Assignee: |
INTERNATIONAL BUSINESS MACHINES
CORPORATION
Armonk
NY
|
Family ID: |
44342402 |
Appl. No.: |
12/696486 |
Filed: |
January 29, 2010 |
Current U.S.
Class: |
705/7.11 ;
705/348; 707/769; 707/E17.014 |
Current CPC
Class: |
G06Q 10/063 20130101;
G06Q 10/067 20130101 |
Class at
Publication: |
705/7.11 ;
707/769; 707/E17.014; 705/348 |
International
Class: |
G06Q 10/00 20060101
G06Q010/00 |
Claims
1. A method for generating a monitoring template for a business
process monitoring system, comprising: providing a predefined
schema definition for said monitoring template, wherein said
predefined schema definition comprises a predefined format for
describing said business process monitoring system using one or
more predefined keywords, wherein said predefined schema definition
comprises at least one monitoring model element that allows a user
to specify one or more monitoring elements required to generate
said business process monitoring system; and receiving a
specification of said one or more monitoring elements from said
user.
2. The method of claim 1, wherein said monitoring template is used
to generate deployable code for an operational runtime version of
said business process monitoring system.
3. The method of claim 1, further comprising the step of generating
a monitoring model from said monitoring template, wherein said
monitoring model allows deployable code to be generated for an
operational runtime version of said business process monitoring
system from said monitoring template.
4. The method of claim 1, wherein said receiving step allows said
user to generate a customized version of said business process
monitoring system.
5. The method of claim 1, wherein said predefined schema definition
further comprises a monitoring header element that allows said user
to specify a monitoring intent for said monitoring template.
6. The method of claim 5, wherein said monitoring intent allows
said monitoring template to be matched with one or more search
keywords.
7. The method of claim 5, wherein said monitoring intent can be
used as a search criteria to identify one or more of desired
business processes and monitoring templates that match said search
criteria.
8. The method of claim 1, wherein said predefined schema definition
further comprises a monitoring extension element that allows said
user to specify one or more call-out services.
9. The method of claim 8, wherein said one or more call-out
services invoke one or more called external services by specifying
a name of said one or more called external services, one or more
parameters to be passed to said called external service and a
return value.
10. The method of claim 1, wherein said business process monitoring
system comprises an existing business process monitoring
system.
11. The method of claim 1, wherein said business process monitoring
system comprises a new business process monitoring system.
12. The method of claim 1, wherein said monitoring template allows
one or more of a monitoring model and said business process
monitoring system to be reused.
13. The method of claim 1, wherein said monitoring model element
allows said user to specify one or more of a business event,
metric, key performance indicator, situation and dimension group of
said business process monitoring system.
14. A computer program product for generating a monitoring template
for a business process monitoring system, said computer program
product comprising a computer readable storage medium having
computer readable program code embodied therewith, said computer
readable program code comprising: computer readable program code
configured to provide a predefined schema definition for said
monitoring template, wherein said predefined schema definition
comprises a predefined format for describing said business process
monitoring system using one or more predefined keywords, wherein
said predefined schema definition comprises at least one monitoring
model element that allows a user to specify one or more monitoring
elements required to generate said business process monitoring
system; and computer readable program code configured to receive a
specification of said one or more monitoring elements from said
user.
15. The computer program product of claim 14, wherein said
monitoring template is used to generate deployable code for an
operational runtime version of said business process monitoring
system.
16. The computer program product of claim 14, wherein said computer
readable program code is further configured to generate a
monitoring model from said monitoring template, wherein said
monitoring model allows deployable code to be generated for an
operational runtime version of said business process monitoring
system from said monitoring template.
17. The computer program product of claim 14, wherein said
receiving of said specification allows said user to generate a
customized version of said business process monitoring system.
18. The computer program product of claim 14, wherein said
predefined schema definition further comprises a monitoring header
element that allows said user to specify a monitoring intent for
said monitoring template.
19. The computer program product of claim 18, wherein said
monitoring intent allows said monitoring template to be matched
with one or more search keywords.
20. The computer program product of claim 14, wherein said
predefined schema definition further comprises a monitoring
extension element that allows said user to specify one or more
call-out services.
21. The computer program product of claim 20, wherein said one or
more call-out services invoke one or more called external services
by specifying a name of said one or more called external services,
one or more parameters to be passed to said called external service
and a return value.
22. The computer program product of claim 14, wherein said business
process monitoring system comprises one or more of a new and an
existing business process monitoring system.
23. The computer program product of claim 14, wherein said
monitoring template allows one or more of a monitoring model and
said business process monitoring system to be reused.
24. The computer program product of claim 14, wherein said
monitoring model element allows said user to specify one or more of
a business event, metric, key performance indicator, situation and
dimension group of said business process monitoring system.
25. An apparatus for generating a monitoring template for a
business process monitoring system, comprising: a memory; and at
least one processor, coupled to the memory, operative to: provide a
predefined schema definition for said monitoring template, wherein
said predefined schema definition comprises a predefined format for
describing said business process monitoring system using one or
more predefined keywords, wherein said predefined schema definition
comprises at least one monitoring model element that allows a user
to specify one or more monitoring elements required to generate
said business process monitoring system; and receive a
specification of said one or more monitoring elements from said
user.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application is related to United States patent
applications entitled "Method and Apparatus for Specifying
Monitoring Intent of a Business Process or Monitoring Template" and
"Method and Apparatus for Using Monitoring Intent to Match Business
Processes or Monitoring Templates," each filed contemporaneously
herewith and incorporated by reference herein.
FIELD OF THE INVENTION
[0002] The present invention relates generally to techniques for
business process modeling and monitoring and, more particularly, to
techniques for reusing existing business process modeling and
monitoring systems.
BACKGROUND OF THE INVENTION
[0003] Enterprises increasingly rely on business process models to
systematically describe business operations. Enterprises develop
business process models to create, organize, and implement business
plans that solve problems or exploit business opportunities. A
business process model typically defines the ways in which
operations are carried out to accomplish the intended objectives of
an enterprise.
[0004] Business performance monitoring and management creates a
window into an enterprise and allows the performance of the
enterprise to be monitored. The monitoring of business processes
typically encompasses the tracking of one or more individual
processes, so that process state information, including performance
statistics, can be collected and reported. Key Performance
Indicators (KPIs), for example, are indicators that allow an
enterprise to achieve organizational goals through the definition
and measurement of progress. KPIs and other performance statistics
can be monitored and compared to predefined criteria to trigger
alerts, when needed, for situations requiring attention. For
example, the tracking of a customer order allows the state of the
order to be determined so that problems can be identified and
corrected.
[0005] Business processes and the corresponding monitoring models
are typically complex systems that require significant
enterprise-level effort to generate and maintain. In addition, a
unique business process and corresponding monitoring model are
typically created for each problem. While there may be one or more
existing business processes and/or corresponding monitoring models
that could be leveraged in the creation of a new business process
and/or monitoring model, there is currently no systematic way to
describe existing business processes and/or corresponding
monitoring models or to search for existing business processes
and/or corresponding monitoring models.
[0006] Thus, there is a significant need for a mechanism for
systematically describing existing business processes and/or
corresponding monitoring models. In addition, a further need exists
for a mechanism for searching for existing business processes
and/or corresponding monitoring models.
SUMMARY OF THE INVENTION
[0007] Generally, methods and apparatus are provided for creating a
monitoring template for a business process. According to one aspect
of the invention, a monitoring template for a business process
monitoring system is generated by providing a predefined schema
definition for the monitoring template, wherein the predefined
schema definition comprises a predefined format for describing the
business process monitoring system using one or more predefined
keywords, wherein the predefined schema definition comprises at
least one monitoring model element that allows a user to specify
one or more monitoring elements required to generate the business
process monitoring system; and receiving a specification of the one
or more monitoring elements from the user. The monitoring template
can be used, for example, to generate deployable code for an
operational runtime version of the business process monitoring
system. The user specification allows a user to generate a
customized version of the business process monitoring system.
[0008] In one exemplary implementation, the predefined schema
definition also comprises a monitoring header element that allows
the user to specify a monitoring intent for the monitoring
template. The exemplary predefined schema definition may also
comprise a monitoring extension element that allows the user to
specify one or more call-out services. The call-out services invoke
one or more called external services by specifying a name of the
one or more called external services, one or more parameters to be
passed to the called external service and a return value.
[0009] The monitoring template allows monitoring models and
business process monitoring systems to be reused. The monitoring
intent in the monitoring template allows the monitoring template to
be matched with one or more search keywords. Thus, the monitoring
intent can be used as a search criteria to identify one or more of
desired business processes and monitoring templates that match the
search criteria.
[0010] A more complete understanding of the present invention, as
well as further features and advantages of the present invention,
will be obtained by reference to the following detailed description
and drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] FIG. 1 illustrates a conventional business performance
monitoring system in which the present invention can be
employed;
[0012] FIG. 2 illustrates an exemplary conventional business
process for an illustrative global finance business unit;
[0013] FIG. 3 illustrates an exemplary set of KPIs that are
generated by the exemplary business performance monitoring system
of FIG. 1 for the exemplary business process of FIG. 2;
[0014] FIG. 4 illustrates a plurality of exemplary monitoring
templates that allow one or more existing monitoring models to be
reused in the creation of new monitoring models in accordance with
the present invention;
[0015] FIG. 5 illustrates an exemplary monitoring template schema
definition;
[0016] FIG. 6 illustrates an exemplary schema definition for the
monitoring model element;
[0017] FIG. 7 illustrates an exemplary schema definition for the
optional monitoring extension element of FIG. 5;
[0018] FIG. 8 is a flow chart illustrating an overall exemplary
monitoring template methodology incorporating features of the
present invention;
[0019] FIG. 9 is a flow chart describing an exemplary
implementation of a monitoring template creation process
incorporating features of the present invention;
[0020] FIG. 10 is a flow chart describing an exemplary
implementation of a monitoring template customization process
incorporating features of the present invention;
[0021] FIG. 11 is a flow chart describing an exemplary
implementation of a monitoring template transformation process
incorporating features of the present invention;
[0022] FIG. 12 illustrates an exemplary monitoring intent schema
definition for recording monitoring intent in accordance with an
aspect of the present invention;
[0023] FIG. 13 is a flow chart describing an exemplary overall flow
of the monitoring intent methodology;
[0024] FIG. 14 is a flow chart describing an exemplary
implementation of a monitoring intent description process;
[0025] FIG. 15 illustrates an exemplary data record for a financial
business process that records a monitoring intent as part of a
monitoring template in accordance with the present invention;
[0026] FIGS. 16A through 16C, collectively, illustrate an exemplary
data record for a monitoring template including monitoring intent
using XML;
[0027] FIG. 17 illustrates the matching of monitoring templates
and/or business processes using monitoring intents;
[0028] FIG. 18 is a flow chart illustrating an exemplary monitoring
intent matching process incorporating features of the present
invention;
[0029] FIGS. 19A and 19B, collectively, are a flow chart
illustrating the processing of reading and parsing source and
target monitoring intents, respectively;
[0030] FIG. 20 is a flow chart illustrating an exemplary
implementation of a match scoring process incorporating features of
the present invention;
[0031] FIG. 21 is a flow chart illustrating an exemplary
implementation of a match sorting process incorporating features of
the present invention;
[0032] FIG. 22 is an exemplary monitoring intent weight table;
[0033] FIG. 23 is an exemplary monitoring intent score table;
and
[0034] FIG. 24 depicts a computer system that can implement one or
more aspects and/or elements of the present invention.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
[0035] The present invention provides a mechanism for describing
existing business processes and/or corresponding monitoring models
and for searching for existing business processes and/or
corresponding monitoring models. The present invention provides a
customizable process monitoring system based on the specification
of the process monitoring intent. As used herein, a monitoring
intent captures important monitoring requirements of a business
process. The present invention thus provides a mechanism for
capturing the intent of a business process or monitoring model. In
addition, the present invention defines appropriate monitoring
elements into a template format for different hierarchies of
decision makers while accommodating monitoring requirements for
practitioners in different focusing areas, e.g., lean sigma
practitioners.
[0036] Use for any process improvement consultants or
practitioners, such as a lean sigma practitioner
[0037] Business Performance Monitoring and Management
[0038] As previously indicated, business process models are used to
create, organize, and implement business plans. Business
performance monitoring and management allows enterprise performance
to be monitored. Business performance monitoring involves the
collection and reporting of process state information, including
performance statistics. KPIs and other performance statistics can
be monitored and compared to predefined criteria to trigger alerts.
In this manner, business performance monitoring and management
provides real-time visibility to business performance.
[0039] FIG. 1 illustrates a conventional business performance
monitoring system 100 in which the present invention can be
employed. As shown in FIG. 1, the business performance monitoring
system 100 employs one or more business monitoring models 120 to
generate run-time business process monitoring system 150 that
monitor one or more business processes based on business process
models 110. Generally, the business process models 110 are analyzed
to define the problems to be monitored and to identify the business
process requirements.
[0040] A run-time business process monitoring system 150 is
generated based on the monitoring model 120. The run-time business
process monitoring system 150 are employed to gather data regarding
the corresponding business process(es), in a known manner. The
business process monitoring system 150 is typically tailored to one
or more particular business processes being monitored to capture
real-time data about the particular business process being
monitored. Generally, the business process monitoring system 150
will perform one or more of the following tasks: process input
event data, filter data, correlate data and compute KPIs. In
addition, a decision block 160 may implement one or more rules to
detect situations and trigger one or more predefined actions
warranting real-time attention. The predefined actions are
implemented in the exemplary embodiment by an action block 170.
[0041] Generally, the business process monitoring system 150
collects data for one or more states of the business process. For
an exemplary order monitoring system, the business process
monitoring system 150 can collect data, for example, regarding
order creation, status update events and order completion. In
addition, the business process monitoring system 150 can determine
statistics for one or more states of the business process and
trigger a response by the same or another business process (e.g.,
if an order is late).
[0042] For a more detailed discussion of business process models
110, business monitoring models 120 and business process monitoring
systems 150, see, e.g., S. Kapoor et al., "Sense-and-Respond Supply
Chain Using Model-Driven Techniques," IBM Systems Journal,
Enterprise On Demand Transformation special issue (November 2007);
S. Kumaran et al., "Service Delivery Management Using a
Model-Driven Transformational Approach and Service-Oriented
Architecture," IBM Systems Journal (June, 2007); Pawan Chowdhary et
al., "Model Driven Development for Business Performance
Management," IBM Systems Journal (April, 2006); or Tian Chao et
al., "Artifact-Based Transformation of IBM Global Financing A Case
Study," BPM2009 (September, 2009), each incorporated by reference
herein.
[0043] FIG. 2 illustrates an exemplary conventional business
process 200 for an illustrative global finance business unit. As
shown in FIG. 2, the exemplary business process 200 processes one
or more deals 220 through a plurality of states 210-1 through
210-6. Throughout the business process 200, the deal 220 can have a
status 230-1 through 230-4. For example, during a drafting state
210-2, the credit, pricing and terms and conditions (T&C) of
the deal 220 can be addressed. During the drafting state 210-2, the
deal 220 can have a status of failed 230-1 or expired 230-2.
[0044] FIG. 3 illustrates an exemplary set of KPIs 300 that are
generated by the exemplary business performance monitoring system
100 of FIG. 1 for the exemplary business process 200 of FIG. 2. In
the exemplary illustration of FIG. 3, the KPIs are generated for
the exemplary global finance business unit. For example, the
exemplary KPIs 300 might include the total number of deals and
turnaround time of deals, and the KPIs are used by specific user
roles or persons/stakeholders, e.g., executives in the business
unit, such as sales and accounting executives. It is noted that the
business process 200 and corresponding KPIs 300 presented in FIGS.
2 and 3 are for illustrative purposes only, and that the present
invention can be employed in conjunction with any business process
and/or KPIs, as would be apparent to a person of ordinary skill in
the art. In general, the business performance monitoring system 100
of FIG. 1 provides real-time data related to the performance of the
business process being monitored.
[0045] Various aspects of the present invention recognize that one
or more existing business processes and/or corresponding monitoring
models can often be leveraged in the creation of a new business
process and/or monitoring model. Business processes and monitoring
models can be searched so that existing business processes and
monitoring models that are related to a new business process and/or
monitoring model can be identified and possibly reused.
[0046] According to one aspect of the present invention, discussed
further below in conjunction with FIGS. 4 through 11, a monitoring
template is provided that allows one or more existing monitoring
models to be reused in the creation of new monitoring models. An
exemplary monitoring template schema definition is provided, as
discussed further below in conjunction with FIG. 5. The disclosed
monitoring templates allow new or existing monitoring models to
become reusable monitoring templates that are reused in the
creation of new monitoring models. As discussed further below, the
disclosed monitoring templates can be searched and matched with
business processes.
[0047] According to another aspect of the present invention,
discussed further below in conjunction with FIGS. 12 through 16, a
monitoring intent is associated with one or more of a business
process and a corresponding monitoring template. A monitoring
intent captures important monitoring requirements of a business
process. In this manner, the monitoring intent associated with an
existing business process and/or monitoring template can be
searched and used to identify existing business processes or
monitoring templates that are related to a new business process
and/or monitoring model that is being created. The provided
monitoring intent enables new or existing business processes and
monitoring templates to be searched, matched and scored.
[0048] According to a further aspect of the present invention,
discussed further below in conjunction with FIGS. 17 through 23,
methods and apparatus are provided for searching and matching
monitoring models and business processes by matching monitoring
intents.
[0049] Monitoring Templates
[0050] FIG. 4 illustrates a plurality of exemplary monitoring
templates 400-1 through 400-N that allow one or more existing
monitoring models 410-1 through 410-N to be reused in the creation
of new monitoring models. The monitoring templates 400 are reused
in the creation of new monitoring models. An exemplary schema
definition 500 for the monitoring template 400 is discussed further
below in conjunction with FIG. 5.
[0051] Generally, given one or more business processes or existing
monitoring models, one aspect of the present invention will provide
one or more corresponding monitoring templates that enable a
predefined monitoring framework. As discussed hereinafter, when
combined with a monitoring intent, the monitoring templates enable
the searching/matching of monitoring templates with businesses
processes. In addition, the disclosed monitoring templates enable
downstream transformation of a template to one or more
tool-specific formal models for code-generation into deployable
code. When an existing monitoring template of interest is
identified, the identified monitoring template(s) can optionally be
customized for future reuse.
[0052] In one exemplary embodiment, a monitoring template defines
the monitoring elements that are required for an operational
runtime monitoring system and business dashboard. In addition, when
combined with a monitoring intent, the disclosed monitoring
templates enable existing monitoring models to become reusable
monitoring template instances.
[0053] FIG. 5 illustrates an exemplary monitoring template schema
definition 500. As shown in FIG. 5, the exemplary monitoring
template schema definition 500 comprises an optional monitoring
header element 510, a monitoring model element 520 and an optional
monitoring extension element 530. An exemplary schema definition
1200 for the monitoring intent is discussed further below in
conjunction with FIG. 12.
[0054] The optional monitoring header element 510 allows a user to
specify the monitoring intent for the monitoring template. As shown
in FIG. 5, the exemplary monitoring header element 510 has one
element, e.g., a BusinessProcessMonitoringIntent schema. The
BusinessProcessMonitoringIntent schema specifies the monitoring
intent of a business process and/or of a monitoringTemplate. It can
be used as the user's search criteria to compare and search for the
desired business processes and/or monitoringTemplates that match
the criteria (or monitoring intent).
[0055] Exemplary schema definitions for the monitoring model
element 520 and optional monitoring extension element 530 are
discussed further below in conjunction with FIGS. 6 and 7,
respectively. Generally, as discussed further below in conjunction
with FIG. 6, the monitoringModel element 520 of the MonitorTemplate
schema 500 specifies the various elements comprising a
monitoringModel schema, e.g., bizEvent, metric, KPI, situation, and
dimensionGroup. The monitoringExtension element 530, discussed
further below in conjunction with FIG. 7, of the MonitorTemplate
schema 500 specifies the elements comprising call-out Service,
which invokes external services by specifying the name of the
service called, the parameters to be passed to the called service,
the return value, and the protocol used to invoke the service.
[0056] FIG. 6 illustrates an exemplary schema definition for the
monitoring model element 520. Generally, the monitoring model
element 520 comprises one or more monitoring elements required to
generate an operational runtime monitoring system and dashboard,
such as those described in U.S. patent application Ser. No.
12/627,071, filed Nov. 30, 2009, entitled "Performance-Aware
Enterprise Components," incorporated by reference herein.
[0057] As shown in FIG. 6, the exemplary monitoring model element
520 comprises a business event element 610, a metric element 620, a
KPI element 630, a situation element 640 and a dimensions group
element 650.
[0058] The business event element 610 (bizEvent) presents a
business event, that is a data structure that captures input data
to the business process. A business event has multiple data fields
with its format defined and understood by both the source component
of the business process that creates the business event and the
target component that processes the event to obtain the input
data.
[0059] As shown in FIG. 6, the metric element 620 represents a
quantifiable measurement or metric of a business process. The value
of a metric can come directly from data of an input bizEvent or
from the computation of input data and other algorithms. Not all
metrics are KPIs (only selected key metrics are KPIs). See also,
KPI description below.
[0060] For example, "Instance Level" and "Class Level" are types of
metrics that can be used to distinguish the measurement scope of
the metrics during the monitoring and calculation process.
"Instance Level Metric" scope is at component instance level (for
example, "CleanCupsNumber" for an EnterpriseComponent instance).
"Class Level Metric" will be used to measure aggregated components
(for example, some aggregated value: COUNT, AVG, SUM, MAX, MIN
etc.).
[0061] In addition, KPI element 630 represents a key metric, agreed
to beforehand, that reflects the critical success factors of an
organization. KPIs are typically used to monitor, manage, and
provide visibility to business performance and critical
measurements to decision support. KPIs are used to detect
exceptions/situations and trigger real-time alerts that in terms
can effect proactive corrective actions.
[0062] The situation element 640 represents an exceptional
condition detected based on the value of a KPI in the business
process. For example, a "processing taking too long" situation can
be defined to be based on the value of a KPI `turnaround time
(TAT)`, and the situation will be detected when TAT is greater than
a certain predefined threshold. The situation can optionally be
defined to detect the exception proactively and also in real-time
as desired. When a situation is detected, one or more alerts can be
triggered and delivered to responsible parties to take appropriate
action. A "proactive" situation detects a potential exceptional
condition before it occurs, e.g., alert before the predefined TAT
threshold is reached so that the responsible party can have some
time to take corrective actions. A "non-proactive" situation
detection would detect and alert after the situation already
occurred, e.g., after the predefined TAT threshold is reached,
which does not allow time to correct the situation detected. The
situation can also trigger actions, such as sending an email,
instant message or a telephone call, or start another business
process.
[0063] The dimensions group element 650 (or "Dimension Definition")
describes the category to group "Class Level Metric" (for example,
"TotalCups by Owner"), and normally the dimension can be defined by
one or more data attributes in information model of the enterprise
component. The dimensions group element 650 specifies the elements
for use to generate definitions for creating a dimensional
database, typically used for Business Intelligence (BI) related
functions: such as reporting, dashboard, On-Line Analytical
Processing (OLAP), and business performance management. Business
Intelligence often aims to support better business decision-making.
See, e.g., H. P. Luhn, "A Business Intelligence System" (PDF), IBM
Journal (October 1958), downloadable from
http://www.researchibm.com/journal/rd/024/ibmrd0204H.pdf. Thus, a
BI system can be called a decision support system (DSS). See, e.g.,
D. J. Power (2007-03-10). "A Brief History of Decision Support
Systems, version 4.0," downloadable from
http://dssresources.com/history/dsshistory.html.
[0064] Each dimensionGroup comprises one "measure" (often referred
to as a fact), which is typically a KPI, and one or more dimensions
for grouping the "measure" to look at the measure in different
ways, e.g., by time (time dimension), by location (geo dimension,
such as NorthEast/SouthWest regions, States or City). A dimension
is an element of the dimensionGroup, used to generate a "dimension"
definition for the measure in the dimensionGroup. Dimension is a
grouping of data for use to drill-down on. For example, a time
dimension can be defined for several levels, e.g., from top (root)
to bottom (leaves): year, month, week, day, where data can be
drilled down by year, month, week, day, etc. A measure is also an
element of the dimensionGroup, that is used to generate a measure
definition (aka. Fact).
[0065] FIG. 7 illustrates an exemplary schema definition for the
optional monitoring extension element 530. The monitoringExtension
element 530 of the MonitorTemplate schema 500 of FIG. 5 specifies
the elements comprising call-out Service 710, which invoke external
services by specifying the name of the service called 720, the
parameters 730 to be passed to the called service, the return value
740, and the protocol 750 used to invoke the service. Thus, the
optional MonitoringExtensions define call-out services for
integration with external functions.
[0066] FIG. 8 is a flow chart illustrating an overall exemplary
monitoring template methodology 800 incorporating features of the
present invention. As shown in FIG. 8, the exemplary monitoring
template methodology 800 initially creates a monitoring template
schema definition during step 810. Exemplary monitoring template
schema definitions were discussed above in conjunction with FIGS.
5-7.
[0067] Thereafter, the monitoring template methodology 800 creates
a monitoring template from the monitoring models during step 820,
using the monitoring template creation process 900, discussed
further below in conjunction with FIG. 9.
[0068] During step 830, the monitoring template methodology 800
optionally creates a monitoring intent, discussed further below in
conjunction with FIGS. 12-16, for the monitoring templates created
during step 820. The monitoring intent is added to the optional
monitoring header element 510 of the monitoring template.
[0069] During step 840, the monitoring template methodology 800
optionally customizes the monitoring template using the monitoring
template customization process 1000, discussed further below in
conjunction with FIG. 10. The monitoring template methodology 800
transforms the monitoring template into a formal model during step
850, using the monitoring template transformation process 1100,
discussed further below in conjunction with FIG. 11.
[0070] FIG. 9 is a flow chart describing an exemplary
implementation of a monitoring template creation process 900
incorporating features of the present invention. Generally, the
monitoring template creation process 900 creates monitoring
templates from existing monitoring models. As shown in FIG. 9, the
monitoring template creation process 900 initially reads in a
monitoring model during step 910, for example, from monitoring
model and performance data warehouse model instances.
[0071] During step 920, the monitoring template creation process
900 parses each event to create a bizEvent element 610. During step
930, the monitoring template creation process 900 parses each
low-level metric (data from event) to create a metric element
620.
[0072] During step 940, the monitoring template creation process
900 parses each high-level metric to create a KPI element 630.
During step 950, the monitoring template creation process 900
parses each situation to create a situation and/or action element
640.
[0073] During step 960, the monitoring template creation process
900 parses each dimension and measure elements to create a
dimensionGroup 650. Finally, during step 970, the monitoring
template creation process 900 parses each external invocation to
create monitoring extension elements 530.
[0074] FIG. 10 is a flow chart describing an exemplary
implementation of a monitoring template customization process 1000
incorporating features of the present invention. Generally, the
monitoring template customization process 1000 customizes
monitoring templates for reuse. As shown in FIG. 10, the monitoring
template customization process 1000 initially updates the
monitoring header during step 1010 by Adding and/or updating
elements of monitoring intent.
[0075] During steps 1020 through 1050, the monitoring template
customization process 1000 updates the monitoring model. During
step 1020, the monitoring template customization process 1000 adds
and/or updates the bizEvent elements 610. During step 1030, the
monitoring template customization process 1000 adds and/or updates
the KPI/metric elements 630. During step 1040, the monitoring
template customization process 1000 adds and/or updates the
situation elements 640. During step 1050, the monitoring template
customization process 1000 adds and/or updates the dimensionGroup
elements 650. During step 1060, the business performance monitoring
system 100 updates the monitoring extension by adding and/or
updating the monitoring extension elements 530.
[0076] FIG. 11 is a flow chart describing an exemplary
implementation of a monitoring template transformation process 1100
incorporating features of the present invention. Generally, the
monitoring template transformation process 1100 transforms
monitoring templates into formal models. As shown in FIG. 11, the
monitoring template transformation process 1100 initially reads in
the monitoring template from instances during step 1110. The
monitoring template transformation process 1100 runs a
transformation function during step 1120 to create a formal model,
using monitoring template schema and formal model schema. A Formal
model instance is generated during step 1130.
[0077] For example, the following exemplary XSLT rules can be
applied during step 1120 to transform monitoring templates into
formal models:
[0078] for each bizEvent element 610, generate a definition for the
event definition (e.g., Inbound event);
[0079] for each metric element 620, generate a metric definition
with expression to extract data from an event source;
[0080] for each KPI element 630, generate an extended metric
definition including, computation expression, result, gating
condition, evaluation interval and externalized services;
[0081] for each situation element 640, generate "situation"
definition;
[0082] for each dimensionGroup element 650;
[0083] for each dimension element in a dimensionGroup, generate
dimension definition;
[0084] for each measure element in a measure group, generate
measure definition as well as generate measureDimensionLink for
each Dimension in the dimensionGroup. Each measureDimensionLink
indicates the connection of a Dimension definition to the measure
definition; and
[0085] for each call-outService, generate service call, e.g. Web
Service, with the service name, a set of parameters, return value,
and protocol for the call.
[0086] Monitoring Intent
[0087] As previously indicated, the present invention provides a
monitoring intent mechanism for describing existing business
processes and/or corresponding monitoring models. As discussed
hereinafter, when a monitoring intent is provided for a new or
existing business process or for a monitoring template, the
monitoring intent allows a user to search for relevant business
processes and/or corresponding monitoring models. As used herein, a
monitoring intent captures important monitoring requirements of a
business process. In one exemplary embodiment, the monitoring
intent is agnostic of the methodology a business process is created
in.
[0088] In one exemplary embodiment, the monitoring intent comprises
a multi-layer description and one or more contextual keywords. The
exemplary monitoring intent description comprises a plurality of
layers, such as top, middle, and bottom layers. Each layer in the
exemplary monitoring intent hierarchy can contain an additional
hierarchy within the layer. For example, the top layer expresses
high level business direction and can broadly include, for example,
business vision, strategy, objectives and policy. The middle layer
links the top and bottom layers and can include, for example, a
Balanced Scorecard (BSC) (see, e.g.,
http://www.balancedscorecard.org/BSCResources/AbouttheBalancedScorecard/t-
abid/55/Default.aspx) perspective and one or more strategy areas as
defined by a strategy map (see, e.g.,
http://www.valuebasedmanagement.net/methods_strategy_maps
strategic_communication.html). The bottom layer typically specifies
atomic elements, such as KPIs that are organizational specific or
based on a standard (such as American Productivity and Quality
Center ("APQC"). The bottom layer could also be other user-defined
elements that could track and indicate the progress toward
organizational goals.
[0089] Likewise, the monitoring intent contextual keywords comprise
a set of keywords in one or more categories, for example, using
name/values pair, where values can optionally be multiple and
separated by commas `,`. For example, in the exemplary embodiment,
keyword categories include "sector" (such as healthcare);
"industry" such as life sciences); "process" (such as task-based
processes, e.g., process=SalesOrderProcess); "roles" (such as
role-based processes, roles="SalesExec, MarketingExec");
"artifacts" (such as artifact-based processes, e.g.,
artifact="ServiceOrder, ServiceOrderTask"); "industryStandard"
(such as "APQC"); and optionally, additional "user-defined
keywords" (such as Service Catalog).
[0090] FIG. 12 illustrates an exemplary monitoring intent schema
definition 1200 for recording monitoring intent in accordance with
an aspect of the present invention. As shown in FIG. 12, the
exemplary monitoring intent schema definition 1200 comprises the
monitoring intent description 1220 and one or more contextual
keywords 1230. As indicated above, the contextual keywords 1230 in
the exemplary embodiment comprise sector, industry, process task,
role, artifact, industry standard and user-defined keywords.
[0091] FIG. 13 is a flow chart describing an exemplary overall flow
of the monitoring intent methodology 1300. As shown in FIG. 13, the
monitoring intent methodology 1300 initially optionally specifies
the multi-layered monitoring intent definition during steps 1310
through 1330. In particular, during step 1310, the user specifies a
top layer monitoring intent and any hierarchy within the top layer.
Thereafter, during step 1320, the user specifies a middle layer
monitoring intent and any hierarchy within the middle layer.
Finally, during step 1330, the user specifies a bottom layer
monitoring intent and any hierarchy within the bottom layer. In
addition, during step 1340, the user specifies one or more
monitoring intent contextual keywords.
[0092] The monitoring intent information collected using the
monitoring intent methodology 1300 is recorded in one or more data
records based on the monitoring intent schema definition 1200 of
FIG. 12.
[0093] FIG. 14 is a flow chart describing an exemplary
implementation of a monitoring intent description process 1400. The
exemplary monitoring intent description process 1400 is based on a
number of exemplary expression rules for the multi-layered
monitoring intent. A monitoring intent hierarchy comprises one or
more layers, e.g., top, middle, or low, and the layers are
expressed in terms of n-tuples (i.e., a sequence of n-elements,
denoted by an enclosing pair of notation, e.g., "( )". Each
hierarchy layer constitutes a tuple in the expression. Each tuple
is separated by a first separator, e.g., a semicolon `;`. A
hierarchy within each tuple is permitted, e.g., one or more
hierarchies. A hierarchy within a tuple is separated by a second
separator, e.g., a comma `,`. Each hierarchy in a tuple comprises
one or more elements. A third separator, such as a slash `/`, is
used to separate elements within one hierarchy. For example, the
monitoring intent can be expressed as follows:
[0094] (elem11: elem21/elem22, elem23/elem24; elem31, elem32, elem
. . . )
[0095] Thus, as shown in FIG. 14, the exemplary monitoring intent
description process 1400 initially start a tuple during step 1410
with an open parenthesis `(`. Thereafter, during step 1415, the top
layer is specified (following middle layer specification if a
hierarchy within exists). For example, the business goals, visions
and strategies of the enterprise can be recorded in the top layer.
A separator (such as `;` added during step 1420.
[0096] The middle layer is specified during step 1425. If there is
a hierarchy within the middle layer, it is specified during step
1430. For example, the BSC perspectives and strategy can optionally
be recorded in the middle layer. A test is performed during step
1435 to determine if there is any more hierarchy to be specified.
If it is determined during step 1435 that there is more hierarchy
to be specified, then a separator (T) is added during step 1440 and
program control returns to step 1430. If, however, it is determined
during step 1435 that there is no more hierarchy to be specified,
then a separator (`/`) is added during step 1445 and program
control proceeds to step 1450.
[0097] During step 1450, the bottom layer is specified (following
middle layer specification if a hierarchy within exists). One or
more elements, such as KPIs, are specified during step 1455. A test
is performed during step 1460 to determine if there are more
elements to process. If it is determined during step 1460 that
there are more elements to process, then a separator `,` is added
during step 1465 and program control returns to step 1455. If,
however, it is determined during step 1460 that there are no more
elements to process, then the tuple is completed during step 1470
by ending it with a closing parenthesis `)`.
[0098] One or more monitoring intent context keywords pairs are
then specified during step 1475. For example, the monitoring intent
context keywords can comprise sector, industry, process, role,
artifacts, standards, and any additional user-defined keywords.
[0099] FIG. 15 illustrates an exemplary data record 1500 for a
financial business process that records a monitoring intent as part
of a monitoring template in accordance with the present invention.
The exemplary data record 1500 is based on the exemplary monitoring
template schema definition 500 of FIG. 5 and the exemplary
monitoring intent schema definition 1200 of FIG. 12.
[0100] As shown in FIG. 15, the optional monitoring header field
1510 has been populated with the monitoring intent of the
monitoring template. The various sub-fields 1530 within the
monitoring intent field 1520 are populated with the monitoring
intent hierarchy description in sub-field 1540 using the above
expression rules and additional exemplary contextual keywords are
recorded in the corresponding sub-fields.
[0101] FIGS. 16A through 16C, collectively, illustrate an exemplary
data record 1600 for a business process management template using
XML. The exemplary data record 1600 is based on the exemplary
monitoring template schema definition 500 of FIG. 5 and the
exemplary monitoring intent schema definition 1200 of FIG. 12. As
shown in FIG. 16A, the monitoring intent hierarchy description is
specified in the monIntent field 1610 and one or more contextual
keywords are specified in a collection of corresponding fields
1620.
[0102] As shown in FIG. 16B, the exemplary monitoring model element
comprises a business event element 1630 to define one or more
events, a metric element 1635, a KPI element 1640, a situation
element 1645 and a dimensions group element 1650. Within the
dimensions group element 1650, a number of measures are defined.
For each measure in the measure group, a measureDimensionLink is
created for each Dimension. The monitoring extension element 1660
is specified in FIG. 16C.
[0103] Monitoring Intent to Match Monitoring Models and Business
Processes
[0104] The present invention also provides methods and apparatus
for searching and matching monitoring models and business processes
by matching monitoring intents. FIG. 17 illustrates the matching of
monitoring templates and/or business processes using monitoring
intents. As shown in FIG. 17, a user can provide a user input 1710
specifying a monitoring Intent, such as search criteria and one or
more industry standard keywords. The user input 1710 is formatted
and recorded in a data record 1720 using the exemplary monitoring
intent schema definition 1200 of FIG. 12. As discussed hereinafter,
the data record 1720 can be compared to existing monitoring
templates 1730-1 through 1730-N that include a monitoring intent
and/or existing business processes 1750-1 through 1750-N having a
monitoring intent.
[0105] Thus, a given source business process monitoring intent can
be matched with a set of target monitoring intent-enabled business
processes and/or with monitoring intent-enabled monitoring
templates to produce a ranked list of matched business processes
and/or monitoring templates, for example, in descending order of
the total score. The given source monitoring intent and target
monitoring intent can be processed as discussed herein to be in a
format that can be searched. If there are matches between the
source and target, weights are optionally assigned to each of the
matched sub-elements to produce a sub-total score. The sub-totals
can be summed to produce a total score for each target.
[0106] Matching can be performed, for example, using a standalone
monitoring intent expressed via user search criteria, new or
existing monitoring intent-enabled monitoring templates that
contain a monitoring intent element and new or existing monitoring
intent-enabled business processes that contain a monitoring intent
element.
[0107] In one exemplary embodiment, discussed herein, a routine
will process monitoring intent into key-word based `search
parameters` by parsing each monitoring intent element into key
words to enable the matching and scoring. Initially, the exemplary
routine will look for an exact match. If there are no exact
matches, a prior art technique, such as ontology, can be employed
for semantic matching with synonyms or partial matches. In one
exemplary implementation, a partial match can be assigned half the
score of an exact match. The total score is the sum of each of the
scores of an exact match or a partially matched keyword.
[0108] FIG. 18 is a flow chart illustrating an exemplary monitoring
intent matching process 1800 incorporating features of the present
invention. As shown in FIG. 18 and as discussed further below in
conjunction with FIG. 19A, the exemplary monitoring intent matching
process 1800 initially processes the source monitoring intent (user
input 1710) during step 1810 to produce weighted search parameters
in a source monitoring intent score table, discussed further below
in conjunction with FIG. 23.
[0109] As discussed further below in conjunction with FIG. 19B, the
exemplary monitoring intent matching process 1800 then processes a
target monitoring intent to produce weighted search parameters in a
target monitoring intent score table, discussed further below in
conjunction with FIG. 23.
[0110] During step 1830, the exemplary monitoring intent matching
process 1800 matches the source with the target, assigns a weight
and sum up the total score, as discussed further below in
conjunction with FIG. 20. During step 1840, the exemplary
monitoring intent matching process 1800 places the monitoring
template instance in descending order of the total score, as
discussed further below in conjunction with FIG. 21.
[0111] A test is performed during step 1850 to determine if there
are more target monitoring intents to process. If it is determined
during step 1850 that there are more target monitoring intents to
process, then program control returns to step 1820 and continues in
the manner described above. If, however, it is determined during
step 1850 that there are not more target monitoring intents to
process, then program control terminates.
[0112] FIGS. 19A and 19B, collectively, are a flow chart
illustrating the processing of source and target monitoring
intents, respectively. As shown in FIG. 19A, the source monitoring
intent is processed by initially reading in and parsing the source
monitoring intent during step 1910. Thereafter, during step 1920,
for each element in the source monitoring intent, a search
parameter pair is created, e.g., an entry of a name/value pair in
the source instance of the score table (FIG. 23) and the value can
be one or more sub-elements.
[0113] As shown in FIG. 19B, the target monitoring intent is
processed by initially reading in and parsing the target monitoring
intent during step 1930. Thereafter, during step 1940, for each
element in the target monitoring intent, a search parameter pair is
created, e.g., an entry of a name/value pair in the target instance
of the score table (FIG. 23) and the value can be one or more
sub-elements.
[0114] FIG. 20 is a flow chart illustrating an exemplary
implementation of a match scoring process 2000 incorporating
features of the present invention. As shown in FIG. 20, the
exemplary match scoring process 2000 initially reads in the weight
table, such as the exemplary weight table 2100 discussed further
below in conjunction with FIG. 22, during step 2010.
[0115] Thereafter, during step 2020, the match scoring process 2000
takes the first entry of the target monitoring intent score table
(a name/value pair) and initializes a variable that holds the total
score, e.g. `TotalScore`, to 0. During step 2030, the match scoring
process 2000 takes the first entry of the source monitoring intent
score table (a name/value pair), and during step 2040, for each
table entry in the source, the process 2000 compares values with
those of corresponding entry in the target score table for full
text and/or partial text match.
[0116] A test is performed during step 2050 to determine if a
sub-element matched. If it is determined during step 2050 that a
sub-element matched, then the corresponding weight of the entry is
taken during step 2060 from the exemplary weight table of FIG. 22,
the sub-total is computed by multiplying the weight and number of
matched sub-elements, and the sub-total is stored in target the
exemplary score table of FIG. 23. Program control then proceeds to
step 2070, discussed below. If, however, it is determined during
step 2050 that a sub-element did not match, then program control
proceeds to step 2090, where a prior art technique, such as an
ontology, is used to do semantic match and/or with synonyms.
[0117] A test is performed during step 2095 to determine if the
test matched. If it is determined during step 2095 that the test
matched, then program control proceeds to step 2060, discussed
above. If, however, it is determined during step 2095 that the test
did not match, then program control proceeds to step 2070.
[0118] During step 2070, a further test is performed to determine
if there are any more entries in the source score table. If it is
determined during step 2070 that there are any more entries in the
source score table, then program control returns to step 2040 and
continues in the manner described above. If, however, it is
determined during step 2070 that there are not any more entries in
the source score table, then the value of total score, e.g. in the
variable TotalScore, is computed during step 2080 by summing up the
sub-totals of all entries in the target score table.
[0119] FIG. 21 is a flow chart illustrating an exemplary
implementation of a match sorting process 2100 incorporating
features of the present invention. As shown in FIG. 21, a test is
initially performed during step 2110 to determine if the record
being processed is the first target monitoring intent instance. If
it is determined during step 2110 that the record being processed
is the first target monitoring intent instance, then the record is
placed at the ahead of the search result set during step 2120. If,
however, it is determined during step 2110 that the record being
processed is not the first target monitoring intent instance, then
a sorting is performed during step 2130 to put this monitoring
intent instance in proper position in the result set based on the
score to produce a ranked list in descending order of the total
score (using a sorting algorithm of choice).
[0120] FIG. 22 is an exemplary monitoring intent weight table 2200.
As shown in FIG. 22, the exemplary monitoring intent weight table
2200 records a weight for each element of the exemplary monitoring
intent schema definition 1200 of FIG. 12.
[0121] FIG. 23 is an exemplary monitoring intent score table 2300.
As shown in FIG. 23, the exemplary monitoring intent score table
2300 records, for element (e.g., identified by name) of the
exemplary monitoring intent schema definition 1200 of FIG. 12, the
value (one or more from the element), and sub-totals
(Weights/Scores) for full and partial matches where each sub-total
of a row in the table is computed as the sum of 1) number of
matched values multiplied by the corresponding weights/score in the
Weight table, and 2) number of partially matched values multiplied
by the corresponding partial weights/score in the Weight table,
[0122] Exemplary System and Article of Manufacture Details
[0123] 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.
[0124] One or more embodiments of the invention, or elements
thereof, can be implemented in the form of an apparatus including a
memory and at least one processor that is coupled to the memory and
operative to perform exemplary method steps.
[0125] One or more embodiments can make use of software running on
a general purpose computer or workstation. FIG. 24 depicts a
computer system 2400 that may be useful in implementing one or more
aspects and/or elements of the present invention. With reference to
FIG. 24, such an implementation might employ, for example, a
processor 2402, a memory 2404, and an input/output interface
formed, for example, by a display 2406 and a keyboard 2408. The
term "processor" as used herein is intended to include any
processing device, such as, for example, one that includes a CPU
(central processing unit) and/or other forms of processing
circuitry. Further, the term "processor" may refer to more than one
individual processor. The term "memory" is intended to include
memory associated with a processor or CPU, such as, for example,
RAM (random access memory), ROM (read only memory), a fixed memory
device (for example, hard drive), a removable memory device (for
example, diskette), a flash memory and the like. In addition, the
phrase "input/output interface" as used herein, is intended to
include, for example, one or more mechanisms for inputting data to
the processing unit (for example, mouse), and one or more
mechanisms for providing results associated with the processing
unit (for example, printer). The processor 2402, memory 2404, and
input/output interface such as display 2406 and keyboard 2408 can
be interconnected, for example, via bus 2410 as part of a data
processing unit 2412. Suitable interconnections, for example via
bus 2410, can also be provided to a network interface 2414, such as
a network card, which can be provided to interface with a computer
network, and to a media interface 2416, such as a diskette or
CD-ROM drive, which can be provided to interface with media
2418.
[0126] Analog-to-digital converter(s) 2420 may be provided to
receive analog input, such as analog video feed, and to digitize
same. Such converter(s) may be interconnected with system bus
2410.
[0127] Accordingly, computer software including instructions or
code for performing the methodologies of the invention, as
described herein, may be stored in one or more of the associated
memory devices (for example, ROM, fixed or removable memory) and,
when ready to be utilized, loaded in part or in whole (for example,
into RAM) and implemented by a CPU. Such software could include,
but is not limited to, firmware, resident software, microcode, and
the like.
[0128] A data processing system suitable for storing and/or
executing program code will include at least one processor 2402
coupled directly or indirectly to memory elements 2404 through a
system bus 2410. The memory elements can include local memory
employed during actual implementation of the program code, bulk
storage, and cache memories which provide temporary storage of at
least some program code in order to reduce the number of times code
must be retrieved from bulk storage during implementation.
[0129] Input/output or I/O devices (including but not limited to
keyboards 2408, displays 2406, pointing devices, and the like) can
be coupled to the system either directly (such as via bus 2410) or
through intervening I/O controllers (omitted for clarity).
[0130] Network adapters such as network interface 2414 may also be
coupled to the system to enable the data processing system to
become coupled to other data processing systems or remote printers
or storage devices through intervening private or public networks.
Modems, cable modem and Ethernet cards are just a few of the
currently available types of network adapters.
[0131] As used herein, including the claims, a "server" includes a
physical data processing system (for example, system 2412 as shown
in FIG. 24) running a server program. It will be understood that
such a physical server may or may not include a display and
keyboard.
[0132] As noted, 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. 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. Media block 2418 is a
non-limiting example. 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.
[0133] 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.
[0134] 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.
[0135] 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's computer, partly on the
user's computer, as a stand-alone software package, partly on the
user'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'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).
[0136] 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.
[0137] 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.
[0138] 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.
[0139] The flowchart and block diagrams in the FIGS. 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.
[0140] Method steps described herein may be tied, for example, to a
general purpose computer programmed to carry out such steps, or to
hardware for carrying out such steps, as described herein. Further,
method steps described herein, including, for example, obtaining
data streams and encoding the streams, may also be tied to physical
sensors, such as cameras or microphones, from whence the data
streams are obtained.
[0141] It should be noted that any of the methods described herein
can include an additional step of providing a system comprising
distinct software modules embodied on a computer readable storage
medium. The method steps can then be carried out using the distinct
software modules and/or sub-modules of the system, as described
above, executing on one or more hardware processors 2402. In some
cases, specialized hardware may be employed to implement one or
more of the functions described here. Further, a computer program
product can include a computer-readable storage medium with code
adapted to be implemented to carry out one or more method steps
described herein, including the provision of the system with the
distinct software modules.
[0142] In any case, it should be understood that the components
illustrated herein may be implemented in various forms of hardware,
software, or combinations thereof; for example, application
specific integrated circuit(s) (ASICS), functional circuitry, one
or more appropriately programmed general purpose digital computers
with associated memory, and the like. Given the teachings of the
invention provided herein, one of ordinary skill in the related art
will be able to contemplate other implementations of the components
of the invention.
[0143] 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.
[0144] 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.
* * * * *
References