|Publication number||US9361137 B2|
|Application number||US 11/548,632|
|Publication date||7 Jun 2016|
|Filing date||11 Oct 2006|
|Priority date||10 Mar 2006|
|Also published as||US20080147703|
|Publication number||11548632, 548632, US 9361137 B2, US 9361137B2, US-B2-9361137, US9361137 B2, US9361137B2|
|Inventors||Marion Behnen, Sameer V. Jorapur, Sriram Srinivasan, Muthukumar Thirunavukkarasu, Cheung-Yuk Wu|
|Original Assignee||International Business Machines Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (146), Non-Patent Citations (26), Classifications (7), Legal Events (1)|
|External Links: USPTO, USPTO Assignment, Espacenet|
This application is related to U.S. patent application entitled “Data Flow System and Method For Heterogeneous Data Integration Environments,” Ser. No. 11/373,685, filed on Mar. 10, 2006, which is incorporated by reference herein.
The present invention relates generally to data processing, and more particularly to managing parameters associated with an application.
In many data processing applications—e.g., data integration or Extract, Transform, Load (ETL) processes—execution of jobs commonly involves use of parameters (or variables) as arguments for specific invocations of a job. Parameters includes, for example, frequently changing values such as a password for a database connection, or performance tuning values (e.g., “maximum number of threads”). Parameters can even include specific semantic variations in a job such as a “date range” parameter (e.g., “between (Jan. 1, 2001, Jan. 1, 2006)”). Generally the values of parameters (or variables) are changed depending upon various circumstances; for example, for daily runs of a particular job (e.g., a report for “date range”), or for rare occurrences (like changing the URL of a database, if the database has been moved). Typically, there are also programmatic interfaces that may be used to automatically set the values of some parameters, for example, “today's date”.
Typically, to manage the development and administration of complex data processing applications, the lifecycle of such data processing applications are loosely organized into phases. Examples of phases include a design (or development) phase (during which each component or job of an application is modeled or coded), a deployment preparation phase (during which the components of an application are uniquely identified and configured, compiled or built, the total set of database resources are identified, and so on), a packaging (or assembly) phase (during which an application installing package is assembled, including all code, shared libraries, and configuration files), a deployment (or install) phase (during which the application package is installed onto a data processing runtime environment, and resource references are mapped to live resources), an administration phase (during which deployed jobs may be configured or administered), and an execution instance phase (during which instances of deployed jobs are executed). During each phase, different users are generally involved—e.g., during the design phase, software programmers develop specific components or jobs, while during the administration phase, administrators typically deploy and monitor applications and jobs in the production runtime environment.
Due to the large number of parameters that are typically involved in large enterprise data processing applications, not every user may have a sufficient semantic understanding about each job and the parameters associated with each job, especially since there are usually multiple different users involved in the different stages of an application's development. For example, an administrator who executes a specific job may not be aware of the specific semantics associated with the setting of a particular parameter value. Thus, as a result, only the most common or well understood parameters (such as “password”) are the only parameters implemented within a job. Generally, there is also no easy way to determine the effect of a change in the value of a parameter at any point in the lifecycle of a job in a data processing application. For example, changing a parameter that was previously assigned the name of a particular database table could significantly affect an entire application. In general, there also is not a standard way to restrict when the value of a parameter can be safely changed.
In general, in one aspect, this specification describes a computer-implemented method for managing a parameter of an application. The method includes identifying a plurality of phases associated with the application, in which each phase conesponds to a time period during a lifecycle of the application. The method further includes defining a range of phases among the plurality of phases associated with the application during which a value of the parameter can be changed.
Implementations can include one or more of the following features. Identifying a plurality of phases can include receiving user input identifying the plurality of phases associated with the application or include identifying the plurality of phases associated with the application based on pre-defined settings. Defining a range of phases associated with the application during which a value of the parameter can be changed can be based on a parameter type associated with the parameter. The plurality of phases associated with the application can comprise one or more of a design phase, a deployment preparation phase, a packaging phase, a deployment phase, an administration phase, or an execution instance phase. The method can further include defining an attribute of the parameter. The attribute can be indicative of one of the following: whether the parameter is useable among different jobs of an application; that the value of the parameter is not changeable or is for meant for display purposes only; whether the parameter requires a valid current value; each job where the parameter is referenced; or a group to which the parameter belongs.
In general, in another aspect, this specification describes a computer-implemented method for managing a parameter of an application. The method includes receiving a request to change a value of a parameter associated with the application, and determining a current phase associated with the application. The current phase corresponds to a time period during a lifecycle of the application. The method further includes changing the value of the parameter if the current phase is within a permissible range of phases during which the value of the parameter can be changed.
Implementations can include one or more of the following features. The permissible range of phases can include one or more of a design phase, a deployment preparation phase, a packaging phase, a deployment phase, an administration phase, or an execution instance phase. The permissible range of phases during which the value of the parameter can be changed can be defined by a user.
In general, in another aspect, this specification describes a computer program product, tangibly stored on a computer-readable medium, for managing a parameter of an application. The computer program product comprising instructions for causing a programmable processor to identify a plurality of phases associated with the application, in which each phase corresponds to a time period during a lifecycle of the application. The computer program product further comprises instructions for causing a programmable processor to define a range of phases among the plurality of phases associated with the application during which a value of the parameter can be changed.
In general, in another aspect, this specification describes a computer program product, tangibly stored on a computer-readable medium, for managing a parameter of an application. The computer program product comprising instructions for causing a programmable processor to receive a request to change a value of a parameter associated with the application, and determine a current phase associated with the application. The current phase corresponds to a time period during a lifecycle of the application. The computer program product further comprises instructions for causing a programmable processor to change the value of the parameter if the current phase is within a permissible range of phases during which the value of the parameter can be changed.
Implementations can provide one or more of the following advantages. In one aspect, the concept of phases (or stages) in the development life cycle of a data processing application are used to show only a specific set of parameters that pertains to a specific user action at any given time, add semantics to enforce the safe changing of parameter values, and allow specific users (at the right stages in the development lifecycle) to decide whether individual parameters can be changed and when the parameters can be changed for a final time (e.g., by setting a “maxChangePhase” attribute of a parameter, as discussed below). Additionally, the concept of sharing of parameters discussed below provides richer mechanisms to enforce editing semantics as well as specialized overriding of some semantics. Further, the concept of parameter usage references discussed below provides better feedback for users to evaluate the effect of changing a value of a shared parameter, and the concept of parameter groups can be used together with phase values to provide focused sets of parameters as well as provide “virtual” groups to show additional information to a user.
In general, in another aspect, this specification describes a computer-implemented method for managing a parameter of an application. The method includes determining a group associated with a user of the application, and displaying a parameter that is associated with the group to the user. The parameter is associated with a defined range of phases of the application during which the value of the parameter can be changed.
In general, in another aspect, this specification describes a computer program product, tangibly stored on a computer-readable medium, for managing a parameter of an application. The computer program product comprises instructions for causing a programmable processor to determine a group associated with a user of the application, and display a parameter that is associated with the group to the user. The parameter is associated with a defined range of phases of the application during which the value of the parameter can be changed.
In general, in another aspect, this specification describes a system for managing a parameter of an application. The system includes a first component to determine a group associated with a user of the application, and a second component to display a parameter that is associated with the group to the user. The parameter is associated with a defined range of phases of the application during which the value of the parameter can be changed. The first component and the second component can form a parameter handing component of the system.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features and advantages will be apparent from the description and drawings.
Like reference symbols in the various drawings indicate like elements.
The present invention relates generally to data processing, and more particularly to restricting the scope of parameters associated with data processing applications. The following description is presented to enable one of ordinary skill in the art to make and use the invention and is provided in the context of a patent application and its requirements. The present invention is not intended to be limited to the implementations shown but is to be accorded the widest scope consistent with the principles and features described herein.
Running on the programmed computer 104 are one or more application(s) 108 (e.g., data processing applications) and a parameter administration component 110. In one implementation, the programmed computer 104 includes a graphical user interface (GUI) (not shown) that permits users to manage the development and administration of the application(s) 108 throughout the lifecycle of the application(s) 108.
In one implementation, the parameter administration component 110 uses specific phases of an application lifecycle to manage parameters associated with an application, including defining a range of phases during which a value of a given parameter can be changed and when the parameters (safely) may not be changed, as discussed in greater detail below. For example, as shown in the graph 300, the range of phases during which a value associated with parameter 1 can be changed spans from lifecycle phase 1 (e.g., design phase) though lifecycle phase 2 (e.g., deployment preparation phase). The range of phases during which a value associated with parameter 2 can be changed spans from lifecycle phase 2 through a portion of lifecycle phase 4 (e.g., runtime phase). The range of phases during which a value associated with parameter 3 can be changed spans from lifecycle phase 1 through a portion of lifecycle phase 3 (e.g., deployment phase). More generally, the range of phases during which a value of a given parameter can be changed can span at least a portion of one or more phases associated with an application.
Once the data processing system 100 has identified the phases associated with the lifecycle of a given application, the parameter administration component 110 defines a range of phases among the identified phases during which a value of the parameter can be changed (step 204). As discussed above, the range of phases during which a value of a parameter can be changed can span at least a portion of one or more phases associated with an application (as shown in
Parameter Data Structure
Data processing or integration systems typically have a parameter (or variable) data structure. Parameter data structures commonly include the following attributes shown in Table 1 below.
TABLE 1 Attribute Definition id a unique identifier, usually system-assigned label a descriptive tag, user-assigned comments user modifiable, typically to indicate purpose of parameter type permitted type for value to indicate what kind of value is permissible, e.g., string, date, integer, file value current value assigned to parameter
Some systems also have additional attributes or operations associated with parameter data structures—for example, a “validRange” attribute (to identify which values are permitted for the parameter), or a “validator” method reference (either selected from a library of routines or user-provided) that validates a value that is entered for the parameter.
In one implementation, the data processing system 100 (
TABLE 2 Attribute Definition readOnly identifies that the parameter's value may not be changed, or is meant for display/informational purposes only maxChangePhase value of attribute corresponds to last phase during which parameter value can be changed defaultValue an optional user-assigned value, which is selected if the current value of the parameter is null, or empty, or if the current value is somehow invalid required an optional field set by user to indicate whether the parameter requires a valid current value allowSharing indicates whether the parameter may be used in different locations, e.g., in different jobs usedIn used to keep track of the different jobs (and places inside the jobs) where the parameter is referenced - for example, if allowSharing is false, then there would only be one, if any, place where the parameter is used groups permits parameters to be categorized into one or more groups
For example, developers of jobs can set the “maxChangeValue” of a given parameter to enforce the notion that the value of the parameter should not be changed beyond a specified phase. So, for the example discussed above, a developer could set the “maxChangeValue” for the “SchemaName” parameter to be “Deployment” phase (e.g., a value of “2”), meaning that the last time that the parameter's value can be changed is, e.g., during the deployment of the application to the production system. For example, in the data processing system 100, the parameter administration component 110 (or other administration component) would not permit users to change (or alter) the “SchemaName” parameter (referring to the example above) when executing jobs, since the current phase would be “EXECUTION_INSTANCE” which is beyond (or numerically greater according to the phase enumeration listed above than) the “DEPLOYMENT” phase assigned to the “maxChangePhase” attribute of the “SchemaName” parameter.
An advantage of using phases to restrict when changes (or edits) can be made to values of parameters is that the number of parameters available for a user (i.e., only those parameters that the user can edit) can be significantly reduced. Optionally, the parameters that are not available for a user (i.e., those parameters that the user cannot edit), can still be presented to a user for viewing purposes only, e.g., by setting the “readOnly” attribute of such parameters to “TRUE”.
Shared Parameter References
To further reduce the number of parameters associated with an application, as well as to provide very specific semantics, sharing of parameters can be introduced within jobs inside the context of an application of the data processing system 100. In one implementation, an application is composed of many different executable jobs and, accordingly, parameters may be shared between these different jobs.
Every parameter is typically uniquely designated by a corresponding identifier. Accordingly, whenever a variable value is to be used in a job, a user can usually select a parameter that is already defined or a new parameter may be created. Thus, when two different jobs refer to a particular parameter ID, then the two jobs are referring to the same parameter. This is very useful in situations, where the values that the two (or more) jobs are referencing are indeed the same. For example, a first job may be producing a file with a parameter ID “FILE_123”, and a second job may need to consume the same file, and therefore the parameter reference of the second job should also be the same “FILE_123”. In conventional data processing systems, in which there may be two different parameters used among two different jobs, responsibility for ensuring that values for these two different parameters are the same typically falls into the hands of an administrator (or executor of the jobs). Such reliance on an administrator is error-prone, and can be avoided by using shared parameters.
In one implementation, the data processing system 100 implements shared parameters by assigning unique identifiers (or IDs) to each parameter created by a user. In design and development environments, developers are presented (e.g., in a GUI) with an option of selecting an existing parameter (shared) or creating a new parameter. For example, in one implementation, the parameter administration component 110 includes user interfaces that permit users to add parameters for use in various data flow and control jobs. For some scenarios, developers may wish to keep a parameter unique to a particular location in which the parameter is used—i.e., to not allow the parameter to be shared. In such a case, (in one implementation) developers can set the “allowShared” attribute of the parameter to “FALSE” to inform the data processing system that the parameter can only be used at a single location. In one implementation, the data processing system restricts the scope of shared parameters based on life cycle phases of an application, as discussed in greater detail below.
Parameter Usage References
In one implementation, the sharing of a given parameter is allowed whenever the user has set the “allowShared” attribute of the parameter to “TRUE”. In one implementation, when a user selects a parameter for use in a particular job, a reference to that job (or to the specific location in that job where the parameter is used) is maintained by the “usedin” attribute of the parameter. For example, in the IBM DWE system, through a data flow tool, a parameter may be assigned for the value of an operator's property and, therefore, the “usedIn” attribute of the parameter will contain a reference to that operator property. Accordingly, any user who may change the value of the parameter can identify exactly where else the parameter is used, and determine the potential impact, if any, of changing the value of the parameter.
Generally, when executing a job, only the parameters that are specifically referenced inside of the job are needed. In addition, only the parameters that are not shared need to be displayed during execution of a job. This is because shared parameters are “global” and, therefore, should be update-able at the scope of the application as a whole and not necessarily for every job. Thus, in one implementation, to permit more flexibility for developers, parameters are attached the “EXECUTION_INSTANCE” phase scope. This phase is used as a way to indicate an exception that that particular parameter, even if shared, may be editable while executing a job. Thus, the concept of phases can be used to enrich conventional data processing systems that may rely on simple sharing of parameters to reduce the scope of parameters. For example, a “database user” parameter would be typically shared as the same user may be used in multiple jobs, however, for maximum flexibility, attaching the “EXECUTION_INSTANCE” phase will let administrators run one-off jobs with alternate user names.
In one implementation, parameters are grouped into different groups. The groups can have unique identifiers and can have different semantics depending upon application requirements. For example, each group may have unique access control lists (ACLs) to allow individual users permissions to access or change parameter values. The access control lists provide a mechanism within a data processing system to control which specific user may use or alter variables. In one implementation, to further limit the complexity of parameter management, groups are used as a means of reducing the number of variables in scope at any given time. For example, (in one implementation) developers can use “basic”, “intermediate”, and “advanced” groups to indicate the level of user awareness needed to alter values of parameters that are within a particular group. In one implementation, the data processing system 100 further provides “virtual” groups. For example, the data processing system 100 can provide “virtual” groups in the form of a list of “read-only” (or for display only) parameters in a “read-only” group, or a group of “global parameters”, when a job is being executed (i.e., when the phase is EXECUTION_INSTANCE). Thus, only the “EXECUTION_INSTANCE” phase parameters are shown as editable for the user when executing the job, and also the parameters in a “virtual” group can be (optionally) shown to the user as well to give more information to the user (or administrator).
Parameter Type-Specific Semantics
Parameter types are typically used to enforce the data-type of values that are permissible for a given parameter.
In one implementation, additional semantics can be attached to parameter types within the data processing system 100. For example, one useful semantic that can be attached to parameter types is a “maxPhase” setting to indicate that there is a further restriction on when parameters of a particular type can be changed. For example, in one implementation, in the data processing system 100, parameters of the “TableName” type are not meant to be changed anytime during or after deployment—this is because code or SQL expressions have been previously generated after the deployment preparation stage that refers to the TableName type. Thus, the “TableName” type can have a maxPhase setting of “DEPLOYMENT_PREPARATION” to indicate that any parameter of this type cannot be changed after the deployment preparation phase.
In one implementation, in the data processing system 100, a property type is introduced with the following XML text (in one implementation, the data processing system 100 uses Eclipse Modeling Framework (EMF) classes to introduce types into the data processing system).
<propertytype name=”TableName” emfClassName=”EString” emfPkgUri=”http://www.eclipse.org/emf/2002/Ecore” primitive=”true” defaultValueLiteral=””> <param usage=”semantics” name=”maxPhase” value=”DEPLOYMENT_PREPARATION”/> </propertytype>
Accordingly, in one implementation, the data processing system 100 uses this additional type-specific attribute (or setting) in limiting the value of the “maxChangePhase” attribute that is permissible for a parameter that uses a given type. So, for example, if a parameter called “SalesTgtTable” is of type “TableName” (instead of a type “String”), then the highest value that a developer can set the “maxChangePhase” attribute for the “SalesTgtTable” parameter is “DEPLOYMENT_PREPARATION” (since, as discussed above, (in one implementation) parameters of the “TableName” type are not meant to be changed anytime during or after DEPLOYMENT. If the “SalesTgtTable” parameter were of type “String”, then a developer could have set the “maxChangeValue” attribute of the parameter to any value up to “EXECUTION_INSTANCE”. Accordingly, the additional attribute “maxphase” that is associated with a parameter type can further provide an additional mechanism for managing parameters in a data processing system.
One or more of method steps described above can be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output. Generally, the invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In one implementation, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk read/write (CD-RJW) and DVD.
Memory elements 704A-B can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code in order to reduce the number of times the code must be retrieved from bulk storage during execution. As shown, input/output or I/O devices 708A-B (including, but not limited to, keyboards, displays, pointing devices, etc.) are coupled to data processing system 700. I/O devices 708A-B may be coupled to data processing system 700 directly or indirectly through intervening I/O controllers (not shown).
In one implementation, a network adapter 710 is coupled to data processing system 700 to enable data processing system 700 to become coupled to other data processing systems or remote printers or storage devices through communication link 712. Communication link 712 can be a private or public network. Modems, cable modems, and Ethernet cards are just a few of the currently available types of network adapters.
Various implementations for managing parameters of an application associated with a data processing system have been described. Nevertheless, various modifications may be made to the implementations described above, and those modifications would be within the scope of the present invention. For example, although the above techniques are described in the context of data processing applications and/ETL jobs, the techniques can be applied generally to a variety of other applications. Also, although the phases listed above are described in the context of lifecycle phases of an application, any suitable criteria may be used to demarcate a phase (or time period). Accordingly, many modifications may be made without departing from the scope of the present invention.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US4813013||22 Dec 1986||14 Mar 1989||The Cadware Group, Ltd.||Schematic diagram generating system using library of general purpose interactively selectable graphic primitives to create special applications icons|
|US4901221||14 Apr 1986||13 Feb 1990||National Instruments, Inc.||Graphical system for modelling a process and associated method|
|US5379423 *||1 Jun 1993||3 Jan 1995||Hitachi, Ltd.||Information life cycle processor and information organizing method using it|
|US5497500||6 Jun 1995||5 Mar 1996||National Instruments Corporation||Method and apparatus for more efficient function synchronization in a data flow program|
|US5577253||6 Mar 1995||19 Nov 1996||Digital Equipment Corporation||Analyzing inductive expressions in a multilanguage optimizing compiler|
|US5586328||21 Oct 1994||17 Dec 1996||Microsoft Corporation||Module dependency based incremental compiler and method|
|US5729746 *||23 Oct 1995||17 Mar 1998||Leonard; Ricky Jack||Computerized interactive tool for developing a software product that provides convergent metrics for estimating the final size of the product throughout the development process using the life-cycle model|
|US5758160||28 Jun 1993||26 May 1998||Object Technology Licensing Corporation||Method and apparatus for building a software program using dependencies derived from software component interfaces|
|US5850548||14 Nov 1994||15 Dec 1998||Borland International, Inc.||System and methods for visual programming based on a high-level hierarchical data flow model|
|US5857180||21 Jul 1997||5 Jan 1999||Oracle Corporation||Method and apparatus for implementing parallel operations in a database management system|
|US5920721||11 Jun 1997||6 Jul 1999||Digital Equipment Corporation||Compiler generating functionally-alike code sequences in an executable program intended for execution in different run-time environments|
|US5940593||31 Mar 1997||17 Aug 1999||International Business Machines Corporation||Simulating a multi-tiered computer environment on a single development system for debugging|
|US5966532||6 Aug 1997||12 Oct 1999||National Instruments Corporation||Graphical code generation wizard for automatically creating graphical programs|
|US6014670||7 Nov 1997||11 Jan 2000||Informatica Corporation||Apparatus and method for performing data transformations in data warehousing|
|US6044217||23 Oct 1997||28 Mar 2000||International Business Machines Corporation||Hierarchical metadata store for an integrated development environment|
|US6098153||30 Jan 1998||1 Aug 2000||International Business Machines Corporation||Method and a system for determining an appropriate amount of data to cache|
|US6202043 *||8 Feb 1999||13 Mar 2001||Invention Machine Corporation||Computer based system for imaging and analyzing a process system and indicating values of specific design changes|
|US6208345||8 Jun 1998||27 Mar 2001||Adc Telecommunications, Inc.||Visual data integration system and method|
|US6208990||15 Jul 1998||27 Mar 2001||Informatica Corporation||Method and architecture for automated optimization of ETL throughput in data warehousing applications|
|US6243710||21 Jan 1999||5 Jun 2001||Sun Microsystems, Inc.||Methods and apparatus for efficiently splitting query execution across client and server in an object-relational mapping|
|US6282699||23 Feb 1999||28 Aug 2001||National Instruments Corporation||Code node for a graphical programming system which invokes execution of textual code|
|US6434739||22 Apr 1996||13 Aug 2002||International Business Machines Corporation||Object oriented framework mechanism for multi-target source code processing|
|US6449619||23 Jun 1999||10 Sep 2002||Datamirror Corporation||Method and apparatus for pipelining the transformation of information between heterogeneous sets of data sources|
|US6480842||25 Mar 1999||12 Nov 2002||Sap Portals, Inc.||Dimension to domain server|
|US6604110||31 Oct 2000||5 Aug 2003||Ascential Software, Inc.||Automated software code generation from a metadata-based repository|
|US6668253||30 Aug 2000||23 Dec 2003||Reynolds & Reynolds Holdings, Inc.||Enterprise information management system and methods|
|US6687735 *||30 May 2000||3 Feb 2004||Tranceive Technologies, Inc.||Method and apparatus for balancing distributed applications|
|US6738964||10 Mar 2000||18 May 2004||Texas Instruments Incorporated||Graphical development system and method|
|US6772409||2 Mar 1999||3 Aug 2004||Acta Technologies, Inc.||Specification to ABAP code converter|
|US6795790 *||6 Jun 2002||21 Sep 2004||Unisys Corporation||Method and system for generating sets of parameter values for test scenarios|
|US6807651||17 Jun 2002||19 Oct 2004||Cadence Design Systems, Inc.||Procedure for optimizing mergeability and datapath widths of data flow graphs|
|US6839724||17 Apr 2003||4 Jan 2005||Oracle International Corporation||Metamodel-based metadata change management|
|US6839726||12 Dec 2002||4 Jan 2005||Matsushita Electric Industrial Co., Ltd.||Apparatus, method, and program for implementing garbage collection suitable for real-time processing|
|US6850925||15 May 2001||1 Feb 2005||Microsoft Corporation||Query optimization by sub-plan memoization|
|US6928431||25 Apr 2002||9 Aug 2005||International Business Machines Corporation||Dynamic end user specific customization of an application's physical data layer through a data repository abstraction layer|
|US6968326||17 Jul 2003||22 Nov 2005||Vivecon Corporation||System and method for representing and incorporating available information into uncertainty-based forecasts|
|US6968335||14 Nov 2002||22 Nov 2005||Sesint, Inc.||Method and system for parallel processing of database queries|
|US6978270||16 Nov 2001||20 Dec 2005||Ncr Corporation||System and method for capturing and storing operational data concerning an internet service provider's (ISP) operational environment and customer web browsing habits|
|US7003560||3 Nov 2000||21 Feb 2006||Accenture Llp||Data warehouse computing system|
|US7010779||15 Aug 2002||7 Mar 2006||Knowledge Dynamics, Inc.||Parser, code generator, and data calculation and transformation engine for spreadsheet calculations|
|US7031987||30 May 2001||18 Apr 2006||Oracle International Corporation||Integrating tablespaces with different block sizes|
|US7035786 *||26 Oct 2001||25 Apr 2006||Abu El Ata Nabil A||System and method for multi-phase system development with predictive modeling|
|US7076765||3 Mar 1999||11 Jul 2006||Kabushiki Kaisha Toshiba||System for hiding runtime environment dependent part|
|US7103590||24 Aug 2001||5 Sep 2006||Oracle International Corporation||Method and system for pipelined database table functions|
|US7191183||5 Apr 2002||13 Mar 2007||Rgi Informatics, Llc||Analytics and data warehousing infrastructure and services|
|US7209925||25 Aug 2003||24 Apr 2007||International Business Machines Corporation||Method, system, and article of manufacture for parallel processing and serial loading of hierarchical data|
|US7272815 *||17 May 2000||18 Sep 2007||Invensys Systems, Inc.||Methods and apparatus for control configuration with versioning, security, composite blocks, edit selection, object swapping, formulaic values and other aspects|
|US7340718||8 May 2003||4 Mar 2008||Sap Ag||Unified rendering|
|US7343585||29 Jan 2003||11 Mar 2008||Oracle International Corporation||Operator approach for generic dataflow designs|
|US7493311||30 Jun 2003||17 Feb 2009||Microsoft Corporation||Information server and pluggable data sources|
|US7499917||28 Jan 2005||3 Mar 2009||International Business Machines Corporation||Processing cross-table non-Boolean term conditions in database queries|
|US7526468||8 Jan 1999||28 Apr 2009||Computer Associates Think, Inc.||System and method for recursive path analysis of DBMS procedures|
|US7689576||10 Mar 2006||30 Mar 2010||International Business Machines Corporation||Dilation of sub-flow operators in a data flow|
|US7689582||10 Mar 2006||30 Mar 2010||International Business Machines Corporation||Data flow system and method for heterogeneous data integration environments|
|US7739267||10 Mar 2006||15 Jun 2010||International Business Machines Corporation||Classification and sequencing of mixed data flows|
|US7747563||7 Dec 2007||29 Jun 2010||Breakaway Technologies, Inc.||System and method of data movement between a data source and a destination|
|US7810067 *||2 Sep 2003||5 Oct 2010||Sap Aktiengesellschaft||Development processes representation and management|
|US7860863||5 Sep 2007||28 Dec 2010||International Business Machines Corporation||Optimization model for processing hierarchical data in stream systems|
|US7895639 *||4 May 2006||22 Feb 2011||Citrix Online, Llc||Methods and systems for specifying and enforcing access control in a distributed system|
|US7941460||5 Sep 2007||10 May 2011||International Business Machines Corporation||Compilation model for processing hierarchical data in stream systems|
|US8230384||30 Mar 2006||24 Jul 2012||Emc Corporation||Techniques for generating and processing a schema instance|
|US8839724||18 Aug 2011||23 Sep 2014||Symmetry Medical Manufacturing, Inc.||Modular medical instrument table|
|US8903762||14 Jun 2012||2 Dec 2014||International Business Machines Corporation||Modeling data exchange in a data flow of an extract, transform, and load (ETL) process|
|US9707504||19 Apr 2013||18 Jul 2017||Daikin Industries, Ltd.||Composition having PTFE as main component, mixed powder, material for molding, filtering medium for filter, air filter unit, and a method for manufacturing a porous membrane|
|US20020046301||13 Aug 2001||18 Apr 2002||Manugistics, Inc.||System and method for integrating disparate networks for use in electronic communication and commerce|
|US20020066077 *||18 May 2001||30 May 2002||Leung Wu-Hon Francis||Methods and apparatus for preventing software modifications from invalidating previously passed integration tests|
|US20020078262||14 Dec 2000||20 Jun 2002||Curl Corporation||System and methods for providing compatibility across multiple versions of a software system|
|US20020116376||28 Feb 2002||22 Aug 2002||Hitachi, Ltd.||Routine executing method in database system|
|US20020162090 *||30 Apr 2001||31 Oct 2002||Parnell Karen P.||Polylingual simultaneous shipping of software|
|US20020170035||28 Feb 2001||14 Nov 2002||Fabio Casati||Event-based scheduling method and system for workflow activities|
|US20020198872||4 Feb 2002||26 Dec 2002||Sybase, Inc.||Database system providing optimization of group by operator over a union all|
|US20030033437||9 Apr 2002||13 Feb 2003||Fischer Jeffrey Michael||Method and system for using integration objects with enterprise business applications|
|US20030037322||21 Jun 2002||20 Feb 2003||Kodosky Jeffrey L.||Graphically configuring program invocation relationships by creating or modifying links among program icons in a configuration diagram|
|US20030051226||13 Jun 2001||13 Mar 2003||Adam Zimmer||System and method for multiple level architecture by use of abstract application notation|
|US20030100198||27 Nov 2001||29 May 2003||Hicks Patrick P.||A connector for electrically coupling one or more devices in a processor- based system|
|US20030101098||27 Nov 2001||29 May 2003||Erich Schaarschmidt||Process and device for managing automatic data flow between data processing units for operational order processing|
|US20030110470||31 May 2002||12 Jun 2003||Microsoft Corporation||Method and apparatus for providing dynamically scoped variables within a statically scoped computer programming language|
|US20030149556||21 Feb 2001||7 Aug 2003||Riess Hugo Christian||Method for modelling and controlling real processes in a data processing equipment and a data processing equipment for carrying out said method|
|US20030154274||31 Jan 2003||14 Aug 2003||International Business Machines Corporation||Data communications system, terminal, and program|
|US20030172059||30 Oct 2002||11 Sep 2003||Sybase, Inc.||Database system providing methodology for eager and opportunistic property enforcement|
|US20030182651||21 Mar 2002||25 Sep 2003||Mark Secrist||Method of integrating software components into an integrated solution|
|US20030229639||7 Jun 2002||11 Dec 2003||International Business Machines Corporation||Runtime query optimization for dynamically selecting from multiple plans in a query based upon runtime-evaluated performance criterion|
|US20030233374||2 Dec 2002||18 Dec 2003||Ulrich Spinola||Dynamic workflow process|
|US20030236788 *||3 Jun 2002||25 Dec 2003||Nick Kanellos||Life-cycle management engine|
|US20040054684||12 Nov 2001||18 Mar 2004||Kay Geels||Method and system for determining sample preparation parameters|
|US20040068479||4 Oct 2002||8 Apr 2004||International Business Machines Corporation||Exploiting asynchronous access to database operations|
|US20040073886 *||20 May 2003||15 Apr 2004||Benafsha Irani||Program management lifecycle solution|
|US20040107414||1 Oct 2003||3 Jun 2004||Youval Bronicki||Method, a language and a system for the definition and implementation of software solutions|
|US20040143811 *||2 Sep 2003||22 Jul 2004||Elke Kaelicke||Development processes representation and management|
|US20040220923||28 Apr 2004||4 Nov 2004||Sybase, Inc.||System and methodology for cost-based subquery optimization using a left-deep tree join enumeration algorithm|
|US20040254948||12 Jun 2003||16 Dec 2004||International Business Machines Corporation||System and method for data ETL in a data warehouse environment|
|US20050022157 *||23 Dec 2003||27 Jan 2005||Rainer Brendle||Application management|
|US20050044527||22 Aug 2003||24 Feb 2005||Gerardo Recinto||Code Units based Framework for domain- independent Visual Design and Development|
|US20050055257||4 Sep 2003||10 Mar 2005||Deniz Senturk||Techniques for performing business analysis based on incomplete and/or stage-based data|
|US20050066283||3 Jun 2003||24 Mar 2005||Tomokazu Kanamaru||Program execution terminal device, program execution method, and program|
|US20050091664||10 Sep 2004||28 Apr 2005||Jay Cook||Method and system for associating parameters of containers and contained objects|
|US20050091684||22 Sep 2004||28 Apr 2005||Shunichi Kawabata||Robot apparatus for supporting user's actions|
|US20050097103||17 Sep 2004||5 May 2005||Netezza Corporation||Performing sequence analysis as a multipart plan storing intermediate results as a relation|
|US20050108209||19 Nov 2003||19 May 2005||International Business Machines Corporation||Context quantifier transformation in XML query rewrite|
|US20050131881||16 Sep 2004||16 Jun 2005||Bhaskar Ghosh||Executing a parallel single cursor model|
|US20050137852||8 Jan 2004||23 Jun 2005||International Business Machines Corporation||Integrated visual and language- based system and method for reusable data transformations|
|US20050149914||29 Oct 2004||7 Jul 2005||Codemesh, Inc.||Method of and system for sharing components between programming languages|
|US20050174986||11 Feb 2004||11 Aug 2005||Radio Ip Software, Inc.||Method and system for emulating a wirless network|
|US20050174988||30 Dec 2004||11 Aug 2005||Bernt Bieber||Method and arrangement for controlling access to sensitive data stored in an apparatus, by another apparatus|
|US20050187935 *||24 Feb 2004||25 Aug 2005||Kumar Saji C.||Method, system, and program for restricting modifications to allocations of computational resources|
|US20050216497||26 Mar 2004||29 Sep 2005||Microsoft Corporation||Uniform financial reporting system interface utilizing staging tables having a standardized structure|
|US20050227216||19 Nov 2004||13 Oct 2005||Gupta Puneet K||Method and system for providing access to electronic learning and social interaction within a single application|
|US20050234969||24 Feb 2005||20 Oct 2005||Ascential Software Corporation||Services oriented architecture for handling metadata in a data integration platform|
|US20050240354||24 Feb 2005||27 Oct 2005||Ascential Software Corporation||Service oriented architecture for an extract function in a data integration platform|
|US20050240652||8 Mar 2005||27 Oct 2005||International Business Machines Corporation||Application Cache Pre-Loading|
|US20050243604||16 Mar 2005||3 Nov 2005||Ascential Software Corporation||Migrating integration processes among data integration platforms|
|US20050256892||16 Mar 2005||17 Nov 2005||Ascential Software Corporation||Regenerating data integration functions for transfer from a data integration platform|
|US20050283473||21 Sep 2004||22 Dec 2005||Armand Rousso||Apparatus, method and system of artificial intelligence for data searching applications|
|US20060004863||8 Jun 2004||5 Jan 2006||International Business Machines Corporation||Method, system and program for simplifying data flow in a statement with sequenced subexpressions|
|US20060015380 *||15 Jun 2005||19 Jan 2006||Manyworlds, Inc||Method for business lifecycle management|
|US20060036522||23 Sep 2004||16 Feb 2006||Michael Perham||System and method for a SEF parser and EDI parser generator|
|US20060047709||5 Sep 2002||2 Mar 2006||Belin Sven J||Technology independent information management|
|US20060066257||27 Sep 2004||30 Mar 2006||Chin-Wen Chou||Method of determining working voltage of inverter|
|US20060074621 *||31 Aug 2004||6 Apr 2006||Ophir Rachman||Apparatus and method for prioritized grouping of data representing events|
|US20060074730||31 Jan 2005||6 Apr 2006||Microsoft Corporation||Extensible framework for designing workflows|
|US20060101011||5 Nov 2004||11 May 2006||International Business Machines Corporation||Method, system and program for executing a query having a union operator|
|US20060112109||23 Nov 2004||25 May 2006||Chowdhary Pawan R||Adaptive data warehouse meta model|
|US20060123067||18 Jan 2005||8 Jun 2006||Bea Systems, Inc.||Mechanism to load first version classes into a runtime environment running a second version of the class|
|US20060167865||24 Jan 2005||27 Jul 2006||Sybase, Inc.||Database System with Methodology for Generating Bushy Nested Loop Join Trees|
|US20060174225||1 Feb 2005||3 Aug 2006||International Business Machines Corporation||Debugging a High Level Language Program Operating Through a Runtime Engine|
|US20060206869||21 Apr 2006||14 Sep 2006||Lewis Brad R||Methods and systems for developing data flow programs|
|US20060212475||24 Nov 2003||21 Sep 2006||Cheng Nick T||Enterprise information management and business application automation by using the AIMS informationbase architecture|
|US20060218123||2 Jun 2005||28 Sep 2006||Sybase, Inc.||System and Methodology for Parallel Query Optimization Using Semantic-Based Partitioning|
|US20060228654||7 Apr 2005||12 Oct 2006||International Business Machines Corporation||Solution builder wizard|
|US20070061305||27 Apr 2006||15 Mar 2007||Soufiane Azizi||System and method of providing date, arithmetic and other relational functions for OLAP sources|
|US20070078812||30 Sep 2005||5 Apr 2007||Oracle International Corporation||Delaying evaluation of expensive expressions in a query|
|US20070157191||29 Dec 2005||5 Jul 2007||Seeger Frank E||Late and dynamic binding of pattern components|
|US20070169040||13 Jan 2006||19 Jul 2007||Microsoft Corporation||Typed intermediate language support for languages with multiple inheritance|
|US20070203893||27 Feb 2006||30 Aug 2007||Business Objects, S.A.||Apparatus and method for federated querying of unstructured data|
|US20070208721||1 Dec 2003||6 Sep 2007||Zaman Kazi A||Modeling multidimensional data sources|
|US20070214111||10 Mar 2006||13 Sep 2007||International Business Machines Corporation||System and method for generating code for an integrated data system|
|US20070214171||10 Mar 2006||13 Sep 2007||International Business Machines Corporation||Data flow system and method for heterogeneous data integration environments|
|US20070214176||10 Mar 2006||13 Sep 2007||International Business Machines Corporation||Dilation of sub-flow operators in a data flow|
|US20070244876||10 Mar 2006||18 Oct 2007||International Business Machines Corporation||Data flow system and method for heterogeneous data integration environments|
|US20070244976||12 Apr 2007||18 Oct 2007||Glenn Alan Carroll||Method, System, Graphical User Interface, and Data Structure for Creating Electronic Calendar Entries from Email Messages|
|US20080092112||11 Oct 2006||17 Apr 2008||International Business Machines Corporation||Method and Apparatus for Generating Code for an Extract, Transform, and Load (ETL) Data Flow|
|US20080127040 *||31 Aug 2006||29 May 2008||Jon Barcellona||Enterprise-Scale Application Development Framework Utilizing Code Generation|
|US20080147703||11 Oct 2006||19 Jun 2008||International Business Machines Corporation||Method and Apparatus for Managing Application Parameters|
|US20080147707||13 Dec 2006||19 Jun 2008||International Business Machines Corporation||Method and apparatus for using set based structured query language (sql) to implement extract, transform, and load (etl) splitter operation|
|US20080168082||9 Jan 2007||10 Jul 2008||Qi Jin||Method and apparatus for modelling data exchange in a data flow of an extract, transform, and load (etl) process|
|1||"Classification and sequencing of mixed data flows", U.S. Appl. No. 11/373,084, filed Mar. 10, 2006.|
|2||"Data flow system and method for heterogeneous data integration environments", U.S. Appl. No. 11/373,685, filed Mar. 10, 2006.|
|3||"Dilation of sub-flow operations in a data flow", U.S. Appl. No. 11/372,516, filed Mar. 10, 2006.|
|4||"Method and system for generating data flow execution components in heterogeneous data integration environments", U.S. Appl. No. 11/372,540, filed Mar. 10, 2006.|
|5||Arusinski et al., "A Software Port from a Standalone Communications Management Unit to an Integrated Platform", 2002, IEEE, pp. 1-9.|
|6||Carreira et al., "Data Mapper: An Operator for Expressing One-to Many Data Transformations", Data Warehousing and Knowledge Discovery, Tjoa et al, editors, 7th International Conference DaWaK 2005 Copenhagen, Denmark, Aug. 22-26, 2005, pp. 136-145.|
|7||Carreira et al., "Execution of Data Mappers", IQIS, 2004, pp. 2-9, 2004 ACM 1-58113-902-0/04/0006, Paris, France.|
|8||Ferguson et al., "Platform Independent Translations for a Compilable Ada Abstract Syntax", Feb. 1993 ACM 0-89791-621-2/93/0009-0312 1.50, pp. 312-322.|
|9||Friedrich, II, Meta-Data Version and Configuration Management in Multi-Vendor Environments, SIGMOD, Jun. 14-16, 2005, 6 pgs., Baltimore, MD.|
|10||Gurd et al., "The Manchester Prototype Dataflow Computer", Communications of the ACM, Jan. 1985, pp. 34-52, vol. 28, No. 1.|
|11||Haas et al., "Clio Grows Up: From Research Prototype to Industrial Tool", SIGMOD, Jun. 14-16, 2005, 6 pgs., Baltimore, MD.|
|12||Hernandez et al., "Clio: A schema mapping tool for information integration", IEEE Computer Society, 2005.|
|13||Ives, Zachary E, et al.; "An Adaptive Query Execution System for Data Integration"; Jun. 1999; pp. 299-310; vol. 28, Issue 2; ACM, New York, New York, USA.|
|14||Jardim-Gonçalves et al., "Integration and adoptability of APs: the role of ISO TC184/SC4 standards", International Journal of Computer Applications in Technology, 2003, pp. 105-116, vol. 18, Nos. 1-4.|
|15||Konstantinides, et al., "The Khoros Software Development Environment for Image and Signal Processing," May 1994, IEEE, vol. 3, pp. 243-252.|
|16||Method and Apparatus for Modelling Data Exchange in a Data Flow of an Extract, Transform, and Load (ETL) Process, SVL90060126US1, U.S. Appl. No. 11/621,521, filed Jan. 9, 2007.|
|17||Poess et al., "TPC-DS, Taking Decision Support Benchmarking to the Next Level", ACM SIGMOD, Jun. 4-6, 2002, 6 pgs., Madison, WI.|
|18||Rafaieh et al., "Query-based data warehousing tool", DOLAP, Nov. 8, 2002, 8 pgs., McLean, VA.|
|19||Ramu, "Method for Initializing a Plateform and Code Independent Library", IBM Technical Disclosure Bulletin, Sep. 1994, pp. 637-638, vol. 37, No. 9.|
|20||Simitsis, "Mapping Conceptual to Logical Models for ETL Processes", ACM Digital Library, 2005, pp. 67-76.|
|21||Stewart et al., "Dynamic Applications from the Ground Up", Haskell '05, Sep. 30, 2005, Tallinn, Estonia, ACM, pp. 27-38.|
|22||Tjoa, et al. (Eds.), "Data Warehousing and Knowledge Discovery-Data Mapper: An Operator for Expressing One-to-Many Data Transformations," Proceedings of 7th International Conference, DaWaK 2005, Copenhagen, Denmark, Aug. 22-26, 2005, 12 pages.|
|23||Vassiliadis et al., "A generic and customizable framework for the design of ETL scenarios", Information Systems, Databases: Creation, Management and Utilization, 2005, pp. 492-525, vol. 30, No. 7.|
|24||Werner et al., "Just-in-sequence material supply-a simulation based solution in electronics", Robotics and Computer-Integrated Manufacturing, 2003, pp. 107-111, vol. 19, Nos. 1-2.|
|25||Yu, "Transform Merging of ETL Data Flow Plan", IKE '03 International Conference, 2003, pp. 193-198.|
|26||Zhao et al., "Automated Glue/Wrapper Code Generation in Integration of Distributed and Heterogeneous Software Components", Proceedings of the 8th IEEE International Enterprise Distributed Object Computing Conf. (EDOC 2004), 2004, IEEE, pp. 1-11.|
|International Classification||G06F9/44, G06F9/445, G06Q10/06|
|Cooperative Classification||G06F8/71, G06F9/44505, G06F8/00, G06Q10/06|
|18 Jan 2007||AS||Assignment|
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BEHNEN, MARION;JORAPUR, SAMEER V.;SRINIVASAN, SRIRAM;ANDOTHERS;REEL/FRAME:018773/0478;SIGNING DATES FROM 20061004 TO 20061009
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BEHNEN, MARION;JORAPUR, SAMEER V.;SRINIVASAN, SRIRAM;ANDOTHERS;SIGNING DATES FROM 20061004 TO 20061009;REEL/FRAME:018773/0478