I. Field of the Invention
The present invention generally relates to electronic data processing and to computerized systems and methods for managing data. More particularly, the present invention relates to systems and methods for managing data in an advanced planning environment, including systems and methods that manage data by buffering and controlling access to a database.
II. Background Information
Through advances in software, many types of processes have become automated. For example, computerized systems enable organizations to perform tasks related to different areas of their business, such as enterprise resource planning (EPR), supply chain management (SCM), customer relationship management (CRM), warehouse management (WM), and product lifecycle management (PLM). Such solutions have become so ubiquitous that companies from large to small rely upon them to efficiently run their operations and maximize profit.
Hardware and processing innovations have also led to higher levels of automation in the business world. For example, database solutions permit companies to store and utilize large quantities of data of various types (e.g., master data, transactional data, etc.). Such data may be used for various purposes, including planning and analysis. Furthermore, innovations in processing methods and related technologies enable businesses to perform complex calculations in various environments, including advanced planning environments.
Despite these advances, automated planning systems and methods suffer from several drawbacks. For example, complex calculations can be very expensive in terms of processing time if they require a high number of steps to be completed. Furthermore, if large quantities of data are involved in performing a set of calculations, then satisfactory response times may not be attainable. For instance, with current solutions, response times may range from tens of minutes to many hours or, even, one or more days. For calculations that need to be performed on a daily basis or repeated frequently, such response times can be very troublesome and, in some circumstances, unacceptable.
Current planning systems and methods also do not provide sufficient flexibility to end users. For instance, in advanced planning environments, companies often do not have the ability to select and control the manner and way in which calculations or processes are executed. Further, sufficient tools are not available to customize or adjust the manner in which processing is performed so that it best fits the needs of the user or the nature of the calculations and data involved.
Consistent with embodiments of the present invention, systems and methods are disclosed for managing data. Systems and methods consistent with the invention may be implemented in advanced planning environments for managing data during, for example, the execution of a plurality of services. The services may be planning services that are executed in connection with one or more objects, wherein the objects are represented by data in a database.
In accordance with one embodiment, a method is provided for managing data for the execution of a plurality of planning services, the planning services using one or more objects represented by data stored in a database. The method may include reading a planning profile with at least one process block, the at least one process block including a list of planning services to be executed and a selection profile, the selection profile including selection criteria for specifying which of the objects stored in the database are required for processing the at least one process block. The method may further include providing a data manager for each object to be processed in connection with the at least one process block, and executing each planning service in accordance with the list of planning services and the objects specified by the selection criteria, whereby each data manager controls the access of data to and from the database during the execution of the planning services.
According to another embodiment, a system is provided for managing data in connection with the execution of planning services. The system may include a database for storing one or more objects, each of the objects being represented by data in the database, and a plurality of planning services, each of the planning services being implemented with software and providing predetermined functionality. Further, the system may include an advanced planning manager for executing the plurality of services and managing the access of the objects to and from the database. The advanced planning manager may comprise programmable instructions for causing a processor to perform the following steps: reading a planning profile with at least one process block, the at least one process block including a list of planning services to be executed and a selection profile, the selection profile including selection criteria for specifying which of the objects stored in the database are required for processing the at least one process block; providing a data manager for each object to be processed in connection with the at least one process block; and executing each planning service in accordance with the list of planning services and the objects specified by the selection criteria, whereby each data manager controls the access of data to and from the database during the execution of the planning services.
According to still another embodiment, a system is provided for managing data. The system may include means for reading a planning profile with at least one process block, the at least one process block including a list of planning services to be executed and a selection profile, the selection profile including selection criteria for specifying which of the objects stored in the database are required for processing the at least one process block. Further, the system may include means for providing a data manager for each object to be processed in connection with the at least one process block, and means for executing each planning service in accordance with the list of planning services and the objects specified by the selection criteria, whereby each data manager controls the access of data to and from the database during the execution of the planning services.
In accordance with yet another embodiment, a computer program product is provided comprising a computer readable medium with instructions for causing a processor to perform a method for managing data. As disclosed herein, the method may include reading a planning profile with at least one process block, the at least one process block including a list of services to be executed and a selection profile, the selection profile including selection criteria for specifying which of objects stored in a database are required for processing the at least one process block. Further, the method may comprise providing a data manager for each object to be processed in connection with the at least one process block, and executing each service in accordance with the list of services and the objects specified by the selection criteria, whereby each data manager controls the access of data to and from the database during the execution of the services.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only, and should not be considered restrictive of the scope of the invention, as described and claimed. Further features and/or variations may be provided in addition to those set forth herein. For example, embodiments of the invention may be directed to various combinations and sub-combinations of the features described in the detailed description.
The accompanying drawings, which are incorporated in and constitute a part of this disclosure, illustrate various embodiments and aspects consistent with the present invention. In the drawings:
The following detailed description refers to the accompanying drawings. Wherever possible, the same reference numbers are used in the drawings and the following description to refer to the same or similar parts. While several exemplary embodiments and features of the invention are described herein, modifications, adaptations and other implementations are possible, without departing from the spirit and scope of the invention. For example, substitutions, additions or modifications may be made to the components illustrated in the drawings, and the exemplary methods described herein may be modified by substituting, reordering or adding steps to the disclosed methods. Accordingly, the following detailed description does not limit the invention. Instead, the proper scope of the invention is defined by the appended claims.
Systems and methods consistent with embodiments of the present invention provide a framework for managing data and executing services. As used herein, the term “service” comprises any functionality or process that can be implemented in whole or in part through software or computerized-based technology. Examples of services include planning services. Planning services may include, for example, planning functionality such as forecasting, inventory planning, distribution requirements planning, deployment, route determination, scheduling, etc. The same planning services may be used for simulation as well. Services may also comprise reusable services, such as rounding, averaging, and the like. Consistent with embodiments of the invention, planning services and other types of services may be embodied in software-based applications or modules. By way of non-limiting examples, planning services may be embodied in planning modules or applications for enterprise resource planning (EPR), supply chain management (SCM), customer relationship management (CRM), warehouse management (WM), and product lifecycle management (PLM).
A service may comprise a plurality of calculations and involve one or more objects. As used herein, a “calculation” comprises a computation or execution required by an application or module for performing a service. Any given calculation may involve one or more steps. Further, the term “object,” as used herein, comprises an entity or item for which the calculation is performed. Examples of objects include modeled real-world objects, such as parts or products. Other examples of objects include location, location product, transportation lane, bill of distribution (BoD), etc. In one embodiment of the invention, objects are represented by data and may correspond to the input or output of one or more calculations.
Consistent with embodiments of the invention, the number of calculations and objects can vary depending on the needs of the end user or complexity of the service. In the context of planning services, the complexity of a service can be high and involve many planning calculations and planning objects. Furthermore, within any given environment, certain planning services may be of less complexity and involve fewer calculation or objects.
Referring now to
Advanced planning manager 100 and the components of
Advanced planning service and data manager 100 may provide a framework for executing services 130-A to 130-N and managing the access and storage of data to and from database 120. In one embodiment, services 130-A to 130-N may be planning services that are embodied as software-based applications or modules. As disclosed above, planning services may provide functionality for various types of organizational planning, such as enterprise resource planning, supply chain management, warehouse management, customer relationship management, and product lifecycle management. These and other types of services may be provided alone or in any combination. Furthermore, while
Consistent with embodiments of the invention, advanced planning service and data manager 100 may control and run pre-set sequence(s) of services according to criteria defined by a user. As further disclosed herein, a user may define settings for processing services through a planning profile. In general, a planning profile may define the sequence of services to be executed, the selection of object(s) to be processed, and/or additional parameters that indicate how to process the services. Advanced planning manager 100 may also perform or provide methods to create packages in order to reduce the number of the selected objects to be executed simultaneously.
Advanced planning service and data manager 100, consistent with embodiments of the invention, may also provide data management during the execution of services. Data management may include the control of access and storage of data to and from database 120. For companies, organizations and other users, database 120 may be adapted to store large quantities of data of various types (e.g., master data, transactional data, etc.). Advanced planning service and data manager 100 may buffer and/or control the buffering of data from database 120 during the execution of services 130-A to 130-N. For this purpose, each data object stored in database 120 may have its own data manager. As further disclosed herein, the services may read and write data through an interface for each data manager. Further, each data manager may provide buffering and save modified data to database 120. Such data management can reduce the frequency or number of database accesses and, thus, improve processing time.
Advanced planning service and data manager 100 may be implemented using a workstation, server, mainframe computer, personal computer, network computer, or other computing-based platform. Further, the above-described functionality and features of advanced planning manager 100 may be embodied in software or computer-readable instructions. Such software or computer-readable instructions may be sold or provided as one or more computer software products. Advanced planning service and data manager 100 may also be practiced in distributed computing environments, where tasks are performed by one or more computing or processing devices. As will be appreciated by those skilled in the art, the aforementioned systems and devices are merely examples and advanced planning manager 100 may comprise other systems or devices.
In one embodiment, advanced planning manager 100 may be configured as an object-orientated programming (OOP) implementation running on a computing based platform. Interfaces may be provided for communication between the advanced planning manager 100 and services 130-A to 130-N. Furthermore, services 130-A to 130-N may be embodied as software-based modules or applications. The service modules may reside on the same or a different computing-based platform supporting the advanced planning manager 100. In the later case, a network environment may be provided to support communication between the various platforms and, thus, between the advanced planning manager 100 and services 130-A to 130-N. For this purpose, various types of networks may be used, including a local area network (LAN) or a wide area network (WAN). Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet, and are known by those skilled in the art.
By way of non-limiting examples, database 120 may be implemented as a database or collection of databases to store data. To collect data for storage, database 120 may be provided with a data collection module or interface to gather or receive data from various sources. In one embodiment, data source(s) of an enterprise may post or store enterprise-wide data (e.g., transactional data) to database 120. To store data, database 120 may be implemented as a mass or high-density storage system. As can be appreciated by those skilled in the art, various database arrangements may be utilized to store data in database 120, including relational or hierarchical database arrangements. In one embodiment, database 120 may be configured to store large quantities of data as part of a data warehouse for a company or enterprise. Database 120 may be implemented through conventional storage devices or commercially available databases. Examples of commercially available databases include SAP® MaxDB, IBM® Universal DB2 and iSeries, Informixe Dynamic Server, Microsoft® SQL Server and Oracle® 9iDatabase.
To provide a further understanding of the teachings of the present invention,
Service 130-B may be embodied as a software-based module with specific functionality or one or more basic (generic) services or methods (e.g., Service 1 to Service N, as shown in
In the embodiment of
Consistent with the invention, each service module may be provided with a service shell, and each service shell may implement at least one service interface method. The service interfaces (112A-112N in
As further shown in
Database 120 may store various types of data, including enterprise-wide data such as master data and transactional data. As disclosed herein, the data stored in database 120 may represent objects and may be used when processing services. Master data may include, for example, data pertaining to product, location, location product, transportation lane, etc. Transactional data may include, for example, data pertaining to inventory, orders (including stock or product transfer orders), sales, etc. Transactional data may also comprise time series data. The above-noted items are merely examples and, as will be appreciated by those skilled in the art, other types data may be stored in database 120 according to the needs of the user and/or the advanced planning environment.
To control access by the services to data stored in database 120, advanced planning manager 100 may comprise a data manager for each object or data type (not shown in
As shown in
Consistent with embodiments of the invention, each process block may define a list of services and corresponding service profiles. A list of services may include one or more services. For example, as indicated above, the first process block (Process Block 1) in
Services may be provided by advanced planning manager 100 to provide technical functionality. These services may be executed like any other service, but may be special services for providing certain functionality. By way of example, a storage service may be provided to save changed data in database 120 and reset the data buffers of the relevant data manager(s). The storage service profile for the storage service may define, for example, which data will be saved and reset. Flags may be provided to save and/or reset for all data manager(s). In addition, the data can be saved and/or reset individually for each data manager. According to the settings, the data: first, may be saved for all data managers; second, may be reset for all data managers; and, finally, the list of data manager may be processed-again first saved and then reset for each data manager. The storage service may be called (e.g., automatically or as part of the list of services defined by the user) at the end of a process block (such as in
To create a planning profile, one or more user interfaces may be provided. Such an interface may include, for example, entry fields and control buttons for entering information. In one embodiment, a graphical user interface (GUI) is provided with message prompts, entry fields and/or control buttons to facilitate the creation of planning profiles by a user. Such a GUI may comprise one or more screens or windows to guide a user through the process of creating a planning profile. Help screens may provide information for the user, and/or drop-down menus or tables may provide lists of predefined services, profiles or other elements for selection by the user when creating a planning profile. Additionally, or alternatively, planning profiles may be created using a separate application or program and then stored for later access by the advanced planning manager 100.
Consistent with embodiments of the invention, each process block may include a set of parameters defined by a user that apply to the entire process block. Such parameters may be used for controlling, for example, the method of building packages for the planning objects, the size of such packages, and/or the method of processing such packages (e.g., parallel or serial processing). Such parameters and other settings may be saved as process profile data for each process block.
For example, in the embodiment of
Each process block may also include a process profile. With a process profile, the user may define a set of parameters or criteria for controlling how the advanced planning manager processes a process block. Such parameters may define the method of building packages for the planning objects, the size of such packages (e.g., minimum or maximum), and/or the method of processing such packages (e.g., serial or parallel processing). Various methods may be provided for building packages. By way of non-limiting examples, one or more of the following methods may be defined for building packages:
In accordance with embodiments of the invention, other parameters may be defined by a user for each process block. For example, as illustrated in
Referring now to
As illustrated in
As disclosed herein, with a process profile, the user may define the method of building packages (“package creation method”) for the planning objects. The process profile may also define the method of processing such packages. As will be appreciated by those skilled in the art, building packages may be useful when a large number of planning objects have been selected. The grouping of the selection into packages can improve system performance based on the type processing (e.g., parallel or sequential) and/or the size of the packages.
Various package creation methods may be defined. For purposes of illustration, assume that a user has selected one million planning objects. In the process profile, the user may define that packages be built using the same package size. For example, if a size n=1,000 is defined, then 1,000 packages would be built, each with the size of 1,000 planning objects. Alternatively, the user may define that a given number of packages be built. For instance, if the number of packages n=5,000 is defined, then 5,000 packages would be built, each with the size of 200 planning objects. It is also possible that the user may wish that all of the selected planning objects be grouped and processed as one package. In which case, the user may set the number of packages to be built equal to one (i.e., number of packages n=1) or no process for building packages may be defined.
In addition to defining the method of building packages, a user may specify the manner in which the packages are to be processed.
As will be appreciated by those skilled in the art, whether or not a particular processing methodology provides improved or better performance will depend on a number of factors, including the size and number of packages, as well as the storage and processing capacity of the system environment.
Referring again to
While iteratively processing or looping over the packages, the list of services is processed (step S.416). As disclosed herein, the list of services for a process block may comprise one or more services. Advanced planning manager 100 may call and execute each service (step S.420). The list of services may be executed in the order that they are listed, with each service being executed with the packages of planning objects. As disclosed above, this may be done either sequentially (see
As further shown in
To further illustrate the scope of the present invention, the processing of process blocks for an exemplary planning profile will now be described in detail with reference to
As shown in the example of
In the exemplary embodiment of
Consistent with embodiments of the invention, control over what services are listed in each process block and the order of the process blocks, such as that described above, may be completely within the domain of the user. In one embodiment, a user interface (such as a GUI) and/or an application or program may be provided to assist a user in defining the services for each process block and the order of the process blocks in a planning profile.
The process blocks of
As will be appreciated by those skilled in the art, the embodiment of
Consistent with embodiments of the invention, each process block in the embodiment of
Processing of the planning profile of
Assuming that packages are built for Process Block 1, advanced planning manager may loop over the packages while executing the list of services (in this case, the forecast service and storage service). During this processing, the corresponding service profiles may be observed to select, for example, the correct source of data for the planning objects (e.g., the time series (type) is one attribute of the forecast service profile seasonal). By way of example, the forecast service for Process Block 1 may cause calculations to be performed for seasonal parts (identified by the selection profile) using time series data from the database. The forecast model used for the forecast service may be based on a model that is capable of computing forecasts based on seasonal trends.
After executing the forecast service for each package, the storage service may be performed to store changed and new data in database 120 and reset the appropriate buffer(s). When the last package is completed for Process Block 1, advanced planning manager 100 may loop back in order to process the next process block of the planning profile (in this case Process Block 2). The packages and services for Process Block 2 may then be executed and the entire process may be repeated until the final process block (Process Block 4) in the planning profile has been reached.
In Process Block 2, the selection profile identifies constant parts (i.e., parts which have a demand that tends to be constant). Advanced planning manager 100 may also read the other profiles and parameters associated Process Block 2, such as the process profile. As disclosed herein, the process profile may define the method or approach to be used for building packages and/or the method of processing such packages. Thus, a user may define that the packages be processed in-parallel (see, e.g.,
As with Process Block 1, advanced planning manager may loop over the packages (if any) of Process Block 2 while executing the list of services (in this case, the forecast service with the forecast service profile constant and the storage service). During this processing, the corresponding service profiles may be observed to select, for example, the correct source of data for the planning objects (e.g., forecast service profile constant=time series data). By way of example, the forecast service for Process Block 1 may cause calculations to be performed for constant parts (identified by the selection profile) using time series data from the database. The forecast model used for the forecast service may be based on a model that is capable of computing forecasts for parts that have a fairly constant demand.
After executing the forecast service for each package, the storage service may be performed to store changed and new data in database 120 and reset the appropriate buffer(s). When the last package is completed for Process Block 2, advanced planning manager 100 may loop back in order to process the next process block of the planning profile (in this case Process Block 3).
Process Block 3 may be processed in a similar manner to that of Process Block 1 and Process Block 2. In Process Block 3, the selection profile identifies sporadic parts (i.e., parts which have a demand that tends to be sporadic). If packages are built according to the process profile, advanced planning manager 100 may loop over the packages of Process Block 3 while executing the list of services (in this case, the forecast service with the forecast service profile sporadic and the storage service). During this processing, the corresponding service profiles may be observed to select, for example, the correct source of data for the planning objects.
In contrast to Process Block 1 and Process Block 1, Process Block 3 includes a forecast service profile sporadic for the listed forecast service. The forecast service profile sporadic, in comparison to the forecast service profile seasonal, may identify a different source of data, such as a different type of time series data. Further, the forecast service for Process Block 3 may cause calculations to be performed for selected sporadic parts (identified by the selection profile) using the identified time series data from the database. The forecast model used for the forecast service may be based on a model that is capable of computing forecasts for parts that have a sporadic demand.
After executing the forecast service for each package, the storage service may be performed to store the final planning objects in database 120 and reset the appropriate buffer(s). When the last package is completed for Process Block 3, advanced planning manager 100 may loop back in order to process the next process block of the planning profile (in this case Process Block 4).
In Process Block 4, the selection profile identifies all parts (i.e., seasonal, constant and sporadic parts) and includes a safety stock service for calculating safety stock quantities. The safety stock quantities may be calculated for all parts based on, for example, the forecasts determined for the seasonal, constant and sporadic parts. For this reason, as explained above, Process Block 4 is defined by the user to follow Process Blocks 1-3 in the planning profile.
Since the safety stock service is computed with respect to all parts, a service profile may not be needed and the field can be left blank in the process block. With the process profile, a user may define the method or approach to be used for building packages and/or the method of processing such packages for the listed services of Process Block 4. Thus, a user may define that the packages be processed sequentially (see, e.g.,
If packages are created, advanced planning manager may loop over the packages while executing the listed of services of Process Block 4 (in this case, safety stock and storage service). After processing all packages and storing changed and new data in database 120, the appropriate buffer(s) may be reset. At this point, the processing of the exemplary planning profile of
A planning profile, consistent with embodiments of the invention, may include any number of process blocks and listed services. For purposes of illustration,
As shown in
Processing of the planning profile of
With the packages built for Process Block 1, advanced planning manager may loop over the packages while executing the listed services (forecast service, safety stock service, and storage service). During this processing, the corresponding service profiles may be observed to select, for example, the correct source of data for the planning objects (e.g., forecast service profile=time series data). If no service profile is required, then the field may be left blank.
Consistent with an embodiment of the invention, service profiles may be defined or selected by a user through a computerized interface. Such an interface may include checkboxes or entry fields for selecting different characteristics related to a service profile in a process block. By way of example, for a forecast service profile, checkboxes may be provided in an interface to permit a user to select one or more different forecast models to be calculated, such as seasonal, constant and/or sporadic. In the example of
In the exemplary embodiment of
As will appreciated by those skilled in the art, by including the forecast and safety stock calculations in a single process block and creating packages by grouping according to part type, improved performance can be achieved. This improvement can be measured in terms of the reduced access time to the database and/or improved processing time. As compared to the embodiment of
Consistent with another aspect of the present invention, a trigger profile may be defined for each process block and stored as part of a planning profile. For example, in the embodiment of
In relation to processing a planning profile, a trigger profile may be read by advanced planning manager 100 when checking other profile and parameter information for each process block, such as the selection profile. For example, with reference to the embodiment of
Referring now to
As disclosed herein, a process block may include a selection profile, a process profile and a list of services. The selection profile defines the planning objects to be executed by the services assigned to the list of services. Consistent with an aspect of the invention, the selected planning objects (i.e., data) can be filtered using the trigger functionality. A trigger may be implemented as a flag with a value to indicate whether the trigger is set (active) or not set (non-active). By way of example, a trigger with a value=‘1’ or ‘X’ may indicate that the trigger is set, whereas a trigger with a value=0 or ‘space’ may indicate that the trigger is not set. Triggers may be stored in database 120 or in other memory accessible by advanced planning manager 100. In one embodiment, triggers are stored and encapsulated from the advanced planning manager 100 so that they can be used by other applications.
To provide trigger functionality, trigger profiles may be defined for a process block. In accordance with one embodiment, a trigger group profile may be implemented and defined for each process block. The trigger group profile may define a trigger group consisting of one or more triggers. A trigger may be assigned to one or more services, and assigned to one or more object types (such as location product and product). In a trigger group profile, each trigger group may be identified by an identification (ID) or name. In addition, each trigger may be identified by an ID or name (see the examples of
In
As disclosed herein, each trigger group may contain one or more different triggers. A trigger group can be treated as a unit like a trigger and may be assigned to a service. In one embodiment, a trigger group may be deemed to be set (i.e., active) if at least one trigger of the trigger group is set.
Consistent with embodiments of the invention, the creation and maintenance of triggers and/or trigger groups may be controlled by a user. In one embodiment, a library of triggers may be provided. In such a library, triggers may be predefined and assigned an ID or name. Using a GUI and/or other suitable application, the user may select triggers from the library to create and define a trigger group. The same or a similar GUI may also be used by a user to edit or update existing trigger groups (e.g., by adding or deleting trigger(s) assigned to a trigger group). When creating or editing a trigger group, a user may select or define the services to be assigned to the triggers in the group. Additionally or alternatively, one or more the triggers in the library may be pre-assigned to service(s). For purposes of illustration, exemplary interfaces for defining and managing trigger groups are discussed below with reference to
Various methods may be provided for setting triggers. For example, in one embodiment, a library of triggers is provided that includes automated triggers. An automated trigger may be a trigger that is automatically set by the advanced planning manager 100, the services 130 or in any other application whenever a predefined activity is detected. By way of example, an automated trigger for manual inventory correction may be automatically set whenever a predefined activity (such as a recount to correct an inventory count) is detected. Other triggers may be manually setting triggers. A manual trigger may be a trigger that is manually set or made active by a user. For instance, a manual trigger for recalculation of Location Product may be manually set by a user when needed.
As disclosed herein, a trigger group profile for a process block may be user defined and include a trigger group ID or name to identify the trigger group and corresponding set of trigger(s) and services(s). Consistent with embodiments of the invention, trigger management functionality may be provided in advanced planning manager 100 to, for example, handle the application of triggers. To this end, the trigger management functionality of advanced planning manager 100 may work on a set of database tables for the defined trigger groups (see, for example,
Referring now to
Referring again to
Triggers can be used to identify the planning objects to be executed. Further, triggers can be used to avoid inaccurate or inconsistent data (in whole or in part). If the results of one service are actualized, the trigger(s) can take care of actualizing the other depending planning results. Consider the following examples:
The Safety Stock is calculated on the basis of Forecast results. If the Forecast is recalculated for the location product A, the trigger for the Safety Stock service and the location product A may be set so that the next planning run of the Safety Stock service will be executed for the location product A. This may require that the trigger is part of a trigger group that is selected in the planning profile of the advanced planning manager. The Safety Stock service may then set the trigger for Distribution Requirements Planning (DRP) in order to trigger the recalculation of DRP.
A change of master data (e.g., the lead time) may invalidate the planning results for this master data (e.g., DRP). After changing the lead time in the master data, the trigger MD (Master Data) may be set using the trigger functionality. There may be other master data attributes for those the trigger MD or any other trigger may set. This may be any planning horizon, the assignment of the Bill of Distribution (BoD), or any indicator that defines how services do the calculation. The trigger may be set for all assigned services or for some services like, DRP, and the Safety Stock service. This may require that the trigger is part of a trigger group that is selected in the planning profile of the advanced planning manager 100.
Other features may be provided alone or in combination with the trigger functionality described above. For instance, the status of a trigger can be used by the advanced planning manager 100, the services 130 or in any other application to stimulate other functions (e.g., the purchasing of inventory).
For purposes of illustration, exemplary interfaces for enabling a user to define and manage trigger groups are shown in
As shown in
In addition to assigning triggers, a user may also assign services to a trigger group. For example, in the assignment interface of
Consistent with the present invention, trigger groups may also be defined by a user through an object or selection type assignment. The exemplary interface of
Other interfaces may also be provided to facilitate trigger group management. For example, interfaces may be provided to enable a user to define triggers. Through such interfaces a user may be permitted to define the trigger (e.g., by name, description, attribute(s), etc.). Interfaces may also be provided to enable a user to manually activate or inactivate triggers, and/or modify existing triggers. In one embodiment, only triggers that are defined with an attribute that indicates that they are visible may be selectively activated/inactivated by a user, and only triggers that are defined with an attribute indicating they are modifiable may be modified by a user.
As a further example of an interface for trigger management,
Consistent with embodiments of the invention, advanced planning manager 100 may provide data management during the execution of services. Data management may include the control of access and storage of data to and from database 120. For companies, organizations and other users, database 120 may be adapted to store large quantities of data of various types (e.g., master data, transactional data, etc.). To facilitate data management for such arrangements, advanced planning manager 100 may buffer and/or control the buffering of data from database 120 during the execution of services. Consistent with embodiments of the invention, this may be achieved by using one or more data managers.
In one embodiment, each object may have its own data manager. Further, an interface may be provided for each data manager to permit the planning services to read and write data from database 120. In addition, during the execution of the process blocks, each data manager may provide buffering and save new or modified data to database 120. Such data management can reduce the frequency or number of database accesses and, thus, improve processing time.
With reference to the embodiment of
Consistent with embodiments of the invention, each data manager may implement an interface for one or more specific services provided by the advanced planning manager 100. By way of example, a service such as a storage service may be provided for saving data to the database and for freeing all buffers. With a storage service interface, a data manager may be called by the storage service to save data or free buffers.
Various types of data buffering may be provided. For example, buffering may be handled on a “normal” or “special” basis. During normal processing, a buffer may be created by a data manager per process block or per package within a process block. At the end of executing the list of services for each process block or package, any changed data may be saved and all buffers released or cleared. On a special basis, the storage service may be called at a step within the execution of a list of services (e.g., service 1, service 2, service 3, storage service, service 5, service 6). The placement of the storage service within the list of services may be user defined, along with the order of the other services. When the storage service is reached during execution, any new or changed data may be stored and the relevant buffers may be cleared. In accordance with one embodiment, the execution of the storage service on a “special” basis may be applied for all or only specific data managers.
To provide a further understanding of the scope of the invention,
For a service to access the data manager, the service may call a data directory look-up method. As will be appreciated by those skilled in the art, such a data directory may be implemented using conventional methods, such as the factory method or other known techniques. In general, the data directory may provide a list of all available data managers and provide access to the data managers. When a service calls the data directory, it may include the name of the relevant data manager. In response, the service may receive an object reference for the requested data manager (or, more precisely, the data manager interface). With the object reference, the service can access all data manager methods.
While certain features and embodiments of the invention have been described, other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the embodiments of the invention disclosed herein. Furthermore, although embodiments of the present invention have been described as being associated with data stored in memory and other storage mediums, one skilled in the art will appreciate that these aspects can also be stored on or read from other types of computer-readable media, such as secondary storage devices, like hard disks, floppy disks, or a CD-ROM, a carrier wave from the Internet, or other forms of RAM or ROM. Further, the steps of the disclosed methods may be modified in any manner, including by reordering steps and/or inserting or deleting steps, without departing from the principles of the invention.
It is intended, therefore, that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims and their full scope of equivalents.