Subject matter is drawn to a computerized system and method for planning, monitoring and assigning of resources in an optimal way in order to achieve a business goal.
Planning business activities and monitoring their execution may be crucial to many businesses. Computer systems support and automate such planning and monitoring processes to optimize business activities execution and improve enterprise effectiveness. The planning and monitoring is often done on the level of individual activities or business tasks. However, in some cases a preferred methodology may be to plan and monitor on levels that aggregate the individual activities. For example, planning on aggregate levels may be preferred in cases where, on one hand, multiple resources with equal capabilities are available, and on the other, assigning resources to activities execution is ad-hoc and it is not strictly planned. Such ad-hoc or roughly planned assignment may be due to a very large number of equal resources and/or to certain unpredictability inherent in the execution of the activities. For example, in cases where the activities are not automatically executed (e.g., machine execution), but instead their execution involve large amount of human workforce. In such scenarios it is irrelevant which of the available equal resources will execute the work, and also, the execution of the activities is not planned at a precise time point during the day. Rather, a rough period of time may be defined within which the work is expected to be executed. One example of business entities, for which rough planning on aggregate levels may be suitable, are large warehouses, where numerous equally skilled workers execute warehouse activities.
A common type of business analysis is after-the-fact method of forecasting future performance by examining previous one. Such business analysis requires significant amounts of data, but it may not necessitate real-time reporting. In cases where work execution is only roughly planned, there is flexibility for optimizing the work execution during the execution itself. Therefore, it may be desirable that planning and monitoring on different aggregate levels is done instantaneously and real-time during the execution itself. Each of those different aggregate levels may provide valuable insight on the data being analyzed. However, dynamically analyzing large amounts of data (e.g., million data records of activities) in real-time cannot readily be done.
The claims set forth the embodiments with particularity. The embodiments are illustrated by way of examples and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. The embodiments, together with its advantages, may be best understood from the following detailed description taken in conjunction with the accompanying drawings.
Embodiments of techniques for real-time activity planning and monitoring of activity execution are described herein. In the following description, numerous specific details are set forth to provide a thorough understanding of the embodiments. One skilled in the relevant art will recognize, however, that the embodiments can be practiced without one or more of the specific details, or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations are not shown or described in detail.
Reference throughout this specification to “one embodiment”, “this embodiment” and similar phrases, means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one of the one or more embodiments. Thus, the appearances of these phrases in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
In scenarios where activities execution is only roughly planned, planned activities may be defined with two dimensions. One time dimension of a planned activity is net execution duration of the activity. Net execution duration represents the period of time necessary for completion of the activity by a unit of manpower (e.g., a warehouse worker). For example, it may take 20 seconds for a warehouse worker to complete a single load or pick activity. There are various methods to determine net execution durations of activities. One method is a simple human estimation, for example, by a manager of the warehouse. Another method is to define the net execution duration based on Engineered Labour Standards (ELS). Such standards may be established by inspection commissions that monitor and track time needed to complete various activities.
When rough planning methodology is used, a period within which the activity can be executed is defined, rather than planning the execution of the activity for exact time point. In one embodiment, an earliest start date and time and a latest end date and time are defined for the execution of an activity. The earliest start date and time and the latest end date and time define the planned execution timeframe within which the activity is expected to be completed. Thus, a leeway is defined when to execute the activity within the timeframe. In addition to the net execution duration, another dimension of a planned activity is the planned work time consumption due to the net execution time of the activity for an individual work resource. The planned work time consumption represents how many resources must be used to complete the activity when the whole possible timeframe is used for the execution. The value of the planned work time consumption of the activity is determined as the net execution duration divided by the time difference between the latest finish time and the earliest start time. For example, a worker may spend 0.5 seconds of work each second from 9 am until 10 pm to complete a specific picking activity which means the planned work time consumption occupies 0.5 work resources. In one aspect, the planned work time consumption of an activity is a different numerical representation of the net execution duration without specific unit of measure with respect to the work time of a resource.
The planning for individual activity instances and their specific execution may not provide as valuable data insight as the planning on aggregate levels. This is especially applicable in cases where multiple resources with equal capabilities are available or where assigning resources to activities execution is ad-hoc and it is not strictly planned. Thus, it may be desirable to monitor and analyze planning data on levels that aggregate individual activities. By analyzing data on a predefined aggregate level, certain insight on the planning data may be gained, however, another may be lost. For example, aggregation on higher levels (e.g., aggregation of the planning data, such as planned workload, to a single aggregate number) may hide planning data that is available on lower aggregate levels. In one embodiment, dynamic aggregations of planned activities on different aggregate levels are implemented. The levels of aggregation may be dynamically changed real-time to allow a resource planner to analyze data real-time via different views of the planning data. In addition, aggregated data may be further analyzed by drilling down the aggregate levels.
Often, date and time information for planning may be formatted or arranged in time grids. A time grid is a pattern of regularly spaced time buckets or time slots. In a time grid, time buckets or slots are ordered in a sequence, where the end time of one slot is the start time of the next slot in the sequence. Thus, there are no time gaps between the slots in the sequence. A time slot is a period, range or interval of time with a starting and finishing time. A time slot is a definite length of time marked or defined by two instants. For example, the time slot may be defined by a start timestamp and an end timestamp of the bucket. In one embodiment, a time slot may be defined by a starting time and time length of the slot. Time slots or buckets in a time grid are typically with regular and equal time length, for example, slots or buckets included in a time grid may be with one hour length, half an hour length, etc.
Aggregations may be calculated not only by aggregating individual activities, but also by applying a time grid. In one embodiment, planned activities are aggregated by time buckets of a time grid. Time grid constraints may be applied on the planned activities to obtain yet another insight on the planning data. Also, aggregating by time buckets of a time grid may define a level of aggregation. Thus, time bucket length defines a dimension based on which planned activities may be dynamically aggregated or disaggregated. In one embodiment, a flexible time grid is applied onto the planning data. The time grid is flexible since planned activities may be aggregated by time buckets of different time length (e.g., 5 minutes, 15 minutes, 30 minutes, 60 minutes, etc.). For example, a resource planner of a warehouse may analyze the amount of expected workload every hour during the day to determine and plan the amount of workforce to assign to execute the corresponding work.
Information relevant to the planning process may be presented in a planning board.
In one embodiment, planning board 100 may represent various planning views on the data being analyzed. For example, a resource planner may examine planned activities and other data being analyzed via views on different aggregate levels and based on different filters. The data may be filtered and aggregated based on various dimensions. Aggregate levels are defined by aggregating planned activities by various dimensions including, but not limited to, activity type, time dimension, area, etc. Various dimensions subject to the specific businesses may also be defined. In one embodiment, the views on different aggregate and filter levels are determined based on values of characteristics of planned activities. In one embodiment, selection criteria 110 include values of such characteristics that may be entered by a resource planner to obtain a planning view onto the planning data.
A characteristic may be an attribute that describes and distinguishes the planned activities. Characteristics may be applied as a criterion that selects or filters data. For example, planned activities may be filtered based on their different characteristics. In one embodiment, a characteristic may be one type of ‘InfoObject’. An ‘InfoObject’ is an information unit in SAP® NetWeaver® Business Warehouse (SAP® BW), provided by SAP AG. In the specific case of planning and monitoring warehouse activities, examples of characteristics include, but are not limited to, a warehouse (e.g., warehouse number 120); an area in a warehouse (e.g., activity area 150) that represents logical section of the warehouse defined based on warehouse activities such as unloading, putaway, replenishment, picking, staging, loading, inventory, etc.; a process step (e.g., external process step 160) such as pick, pack, stage, and load that are steps part of a four-step outbound process; and a wave (e.g., wave 170). A wave is a logical grouping of warehouse activities associated with a certain requested product or delivery to control the grouped warehouse activities. For example, activities may be split or combined into waves to organize their overall processing. Activities may be organized into waves on the basis of criteria such as activity area, route, product, etc. Activities organized in a wave may be expected to be processed at roughly the same time.
In addition to characteristics of the planned activities, other dimensions based on which planned activities may be filtered and aggregated, and which may not be specific to warehouse activities, include a time range and a time bucket size. Start date and time 130 and finish date and time 140 define the time range. Activities that are planned to be executed within the time range are included in the aggregations.
In one embodiment, depending on entered selection criteria 110, aggregated planning data is to be represented in a planning view to be displayed in result area 190. Based on entered values for characteristics 120-180, planned activities are filtered and aggregated. For example, in
A planned activity may correspond to unit of workload. In one embodiment, a workload is measured in terms of net duration of the activity execution within a planned execution timeframe. A workload may be determined by aggregating planned work time consumption of one or more planned activities. The calculated aggregations indicate the workload that is expected for a specified time range (e.g., within the time range defined by start date and time 130 and end date and time 140 in
In one embodiment, planning board 200 in
Chart-UIBB 210 shows workload as calculated per each time bucket of time buckets 220-238 according to the entered selection criteria 110. For example, the amount of work expected to be executed for warehouse ‘JK02’ within the time bucket with starting time ‘13:00:00’ and finish time ‘14:00:00’ is equal to 14.8, e.g., workload 228. ‘Y-axis’ 240 corresponds to workload values to indicate the workload of the planned warehouse activities aggregated by their planned work time consumption, e.g., workloads 220-238 calculated per each time bucket and determined by summing up planned work time consumption of the planned activities. In one embodiment, when applying time grid constraints onto planned workload, values of planned earliest start time and latest end time of an activity may be dynamically changed to correspond to start and end timestamps of one or more time buckets of the time grid, respectively. For example, planned earliest start time and latest end time of an activity may be rounded to the nearest start and end timestamps of time buckets with which the activity overlaps. Further, if a planned earliest start time of an activity is in the past, i.e. before the current date and time, then the earliest start time of the activity may be rounded to the current date and time. In one embodiment, the current date and time is also compared with start and end timestamps of activities to determine activities that are overdue.
In one embodiment, time buckets are with one hour time length and are ordered in a sequence displayed on ‘X-axis’ 245. The time buckets are determined based on start date and time 130 and bucket size 180 entered as illustrated in
Workloads 220-238 represent the amount of work that is expected to be executed within the timeframe defined by the time buckets displayed on ‘X-axis’ 245, where planned workloads 220-238 are evenly distributed or spread over the corresponding time buckets. For example, workload 228 represents that one unit of manpower will spend 14.8 minutes of work per minute from “13:00:00” until “14:00:00” o'clock to complete activities associated with workload 228. Thus, to complete the activities within the timeframe “13:00:00-14:00:00”, 14.8 units of manpower have to be assigned to execute the activities associated with workload 228. In one embodiment, workloads 220-238 represent the amount of manpower or other resources necessary to be utilized in parallel to complete the corresponding work or activities.
In chart-UIBB 210 data is aggregated by time bucket size 180 (
List-UIBB 215 may illustrate the same amount of workload as that in chart-UIBB 210, but on different aggregation level. In one embodiment, in list-UIBB 215, calculated workload is disaggregated initially by a single free characteristic (e.g., activity area 150 in
List-UIBB 215 in planning view ‘1’ 205 is changed to list-UIBB 315 in planning view ‘2’ 305 by disaggregating the workload by planning time bucket. In one embodiment, when applying time grid constraints onto planned activities, earliest start time of the activities may be rounded to correspond to start timestamps of time buckets of the time grid. Thus, list-UIBB 315 displays the amount of workload per activity area per time buckets. By changing aggregation level, list-UIBB 315 in planning view ‘2’ 305 displays more detailed information in comparison to list-UIBB 215 in planning view ‘1’ 205 of
A workload may correspond to a single activity, and be defined by the net execution duration of the activity and the planned timeframe for execution of the activity. In one embodiment, a workload that corresponds to a single activity may be measured or represented by the planned work time consumption of the activity. Planned work time consumption of the activity is the net execution duration of the activity spread over the planned timeframe. In addition, a workload may also be determined based on multiple activities. In one embodiment, a workload may be determined based on multiple activities with equal planned timeframe for their execution. For example, each workload of workloads 610-630 may be determined based on a set of 360 tasks or activities. Each activity may have net execution duration of 1 minute. Each set of these three sets of 360 activities includes activities that are planned to be executed within equal timeframe. In the case of planning and monitoring warehouse activities, activities of workload 610 may represent the activities of a first wave, activities of workload 620 may represent the activities of a second wave, and activities of workload 630 may represent the activities of a third wave. Equal timeframe for execution of the 360 activities of each wave may be defined by the starting or release time of the corresponding wave and the completion time of the wave.
In case where the workload is determined based on multiple activities, the workload may be measured or represented, on one hand, by the corresponding equal execution timeframe of the activities and, on the other, by aggregation of planned work time consumption of the activities. A workload that is based on multiple activities may be represented by spreading the aggregation of net execution duration of the activities over the corresponding timeframe. For example, for workload 630, 6 hours of aggregated net execution duration of activities are spread over 2 hours of timeframe (i.e., time range “12:00-14:00”). In one embodiment, aggregated net execution duration of the activities that are spread over the corresponding planned execution timeframe of the workload represent the planned work time consumption of the workload. Thus, the planned work time consumption of the workload is the workload distributed evenly between the earliest start time and latest finish time of the planned execution timeframe. In one embodiment, a time dependent workload function may calculate the workload, and thus, the planned work time consumption of the workload, by dividing the aggregation of net execution duration of the activities by the timeframe length (e.g., by the time difference between the latest end time and the earliest start time of the timeframe). For example, planned work time consumption of workload 630 is calculated by the time dependent workload function by dividing 6 hours of aggregated net execution duration of activities by 2 hours of execution timeframe. Thus, planned work time consumption of workload 630 equals 3 minutes of work each minute of the two-hour timeframe representing the need of 3 resources. Similarly, planned work time consumption of workload 610 is calculated by dividing 6 hours of aggregated net execution duration of activities by 3 hours of timeframe. Thus, planned work time consumption of workload 610 equals 2 minutes of work each minute of the timeframe representing the need of 2 resources. Planned work time consumption of workload 620 is calculated by dividing 6 hours of aggregated net execution duration of activities by 6 hours of timeframe. Thus, planned work time consumption of workload 620 equals 1 minute of work each minute of the timeframe representing the need of 1 resource. Workload axis 650 may represent planned work time consumption.
In one embodiment, a time grid is applied on workloads 610-630. Planned work time consumptions of workloads 610-630 are aggregated or summed up by time buckets of the time grid represented on time axis 640 to calculate workload for the time buckets. For example, overall workload 670 for time bucket 680 is calculated by aggregating planned work time consumptions of workloads 610-630 for time bucket 680. Planned work time consumption of 1 of workload 620, planned work time consumption of 2 of workload 610, and planned work time consumption of 3 of workload 630 are summed up to calculate expected workload 670 within the range represented by time bucket 680 (i.e., 6 minutes of work each minute of the one-hour time bucket 680 representing the need of 6 resources). In one aspect, workload axis 660 represents planned work time consumption of workloads summed up or aggregated by the time buckets on time axis 640. In another aspect, workload axes 650-660 also represent unit of manpower or other resources necessary to execute corresponding workloads.
At 720, based on the request, selection criteria (e.g., selection criteria 110, 410, and 510) are received that include filter values for one or more characteristics. At 730, the selection criteria are applied on a number of activities to filter relevant activities. Based on the selection criteria, relevant activities that are planned to be executed within the time range are selected to be aggregated and included in the calculation of the workload. If planned latest end time of an activity is already in the past, then the activity is overdue. If planned earliest start time of an activity is in the past, but the latest finish time is still in the future, a check is performed if the time difference between the current time and the latest finish time is smaller than the net execution time of the activity. If the time difference between the current time and the latest finish time is smaller than the net execution time of the activity, then the activity is overdue. In one embodiment, activities that are overdue are filtered and are not included in the calculation of the workload. In another embodiment, overdue activities may be aggregated in a bucket with overdue activities. In one embodiment, if planned earliest start time of an activity is in the past, but the activity is not yet overdue, the planned earliest start time of the activity is rounded to the current date and time and the activity is selected to be aggregated and included in the calculation of the workload. Thus, not only activity planning but also activity execution is analyzed and monitored.
In one embodiment, the selection criteria are applied on an in-memory database workload table in column store format containing a number of workloads or activity records. Table that is column store based may allow fast calculations of aggregations of column values of many rows. Examples of fields or attributes, which are technically table columns, of the workload table include, but are not limited to, a warehouse number, net execution duration, earliest start timestamp, and latest end timestamp, etc. According to the selection criteria, workload records and fields that are relevant to selection criteria are selected. In one embodiment, selected relevant workload records and fields are retained in a temporary workload table to reduce the number of data records for further calculations and aggregations. If additional filters for at least one free characteristic are included in the received selection criteria, the temporary workload table is further reduced according to the selection criteria.
At 740, one or more sets of one or more activities of the selected relevant activities that are with equal planned execution timeframe are determined. Examples of the one or more sets of activities that are with equal execution timeframe may correspond to workloads 610-630 in
At 750, a set of activities from the one or more sets of activities is selected. At 760, net execution duration of activities from the selected set of activities is aggregated to determine workload of the selected set of activities. At 770, based on the determined workload of the selected set of activities, planned work time consumption of the workload of the selected set of activities is calculated. To calculate the planned work time consumption of the workload, the aggregation of the net execution duration of the activities is distributed evenly within or spread longitudinally over the equal execution timeframe of the selected set of activities. In one embodiment, a time dependent workload function calculates the planned work time consumption of the workload of the selected set of activities. The time dependent workload function, for points in time that belong to the corresponding equal execution timeframe of the selected set of activities, equals the aggregated sum of the net execution duration of the activities divided by time difference between planned latest finish time and planned earliest start time of the equal execution timeframe (e.g., the time difference between start timestamp and end timestamp of the planned execution timeframe). In one embodiment, the time dependent workload function distributes evenly the aggregated net execution duration within the corresponding execution timeframe of the selected set of activities. In one aspect, the time dependent workload function calculates the number of units of manpower necessary to perform work in parallel to complete the activities of the selected set of activities, where the work is performed continuously throughout the execution timeframe, e.g., the units of manpower work every second or every minute of the timeframe to complete the activities.
At 780, the calculated planned work time consumption of the workload of the selected set of activities is spread across the time buckets. In one embodiment, the calculated planned work time consumption of the workload is spread across time buckets with which the workload overlaps. A workload overlaps with a time bucket if the planned execution timeframe of activities included in the workload overlaps with the time period of the time bucket. For example, a workload overlaps with a time bucket if a time point of the planned execution timeframe of the workload belongs to the time period of the time bucket.
For example, with reference to
In one embodiment, in response to the aggregation of the net execution duration of the activities of each selected set and the calculation of the planned work time consumption of the workload of each selected set, the temporary workload table contains a workload record for each set of activities with equal execution time frame. In one embodiment, to spread the calculated planned work time consumption of workloads for the one or more sets of activities, an inner join of the temporary workload table and the calculated time buckets table is performed. The inner join results in a table containing a record for every workload that overlaps with a time bucket. For example, if a workload overlaps with three time buckets, then three records will be created as a result of the inner join.
At 785, a check is performed to determine whether all sets of activities of the one or more sets of activities are selected. In case there are unselected sets of activities, the process 700 continues with step 750. When planned work time consumption of workloads for the one or more sets of activities are calculated and spread across the time buckets, process 700 continues at 790. At 790, the spread planned work time consumption of workloads of the one or more sets of activities are aggregated or summed up by the time buckets of the time grid. Thus, planned work time consumption assigned and spread over the time buckets, are aggregated by the time buckets to determine workload for the number of time buckets.
In
An overlapping portion of a workload with a time bucket is a period of time of planned execution timeframe of activities included in the workload that coincides with the time interval of the time bucket. For example, the overlapping portion of workload 830 with time bucket 870 is the whole workload 830, i.e., portion 880; the overlapping portion of workload 840 with time bucket 870 is portion 885; the overlapping portion of workload 850 with time bucket 870 is portion 890; and the overlapping portion of workload 860 with time bucket is portion 895. Workload 810 defined by start timestamp ‘w1_s’ and end timestamp ‘w1_e’ and workload 820 defined by start timestamp ‘w2_s’ and end timestamp ‘w2_e’ do not overlap with time bucket 870.
At 930, workload from the number of workloads that overlap with the time bucket is selected. At 940, a portion of the selected workload that overlaps with the time bucket is determined. In one embodiment, to determine the portion of the workload that overlaps with the time bucket the following cases are evaluated.
If the selected workload satisfies case (1), then the portion of the workload that overlaps with the time bucket is determined by the time difference between bucket end timestamp and workload start timestamp. For example, portion 890 of workload 850 that overlaps with time bucket 870 is determined by the time difference between ‘b1_e’ and ‘w5_s’ (i.e., ‘b1_e’-‘w5_s’). If the selected workload satisfies case (2), then the portion of the workload that overlaps with the time bucket is determined by the time difference between workload end timestamp and bucket start timestamp. For example, portion 895 of workload 860 that overlaps with time bucket 870 is determined by the time difference between ‘w6_e’ and ‘b1_s’ (i.e., ‘w6_e’-‘b1_s’). If the selected workload satisfies case (3), then the portion of the workload that overlaps with the time bucket is determined by the time difference between workload end timestamp and workload start timestamp. For example, portion 880 of workload 830 that overlaps with time bucket 870 is determined by the time difference between ‘w3_e’ and ‘w3_s’ (i.e., ‘w3_e’-‘w3_s’). If the selected workload satisfies case (4), then the portion of the workload that overlaps with the time bucket is determined by the time difference between bucket end timestamp and bucket start timestamp. For example, portion 885 of workload 840 that overlaps with time bucket 870 is determined as the time difference between ‘b1_e’ and ‘b1_s’ (i.e., ‘b1_e’-‘b1_s’).
At 950, a weight factor for the selected workload is calculated. The weight factor is calculated by dividing the overlapping portion of the workload by the time length of the bucket. If planned execution timeframe of a workload spans across multiple time buckets, then a ratio of the planned work time consumption of the workload that is proportionate with a corresponding overlapping portion of the workload is assigned to the respective time buckets. A ratio of the planned work time consumption of the workload that is proportionate with the overlapping portion is determined based on the weight factor. At 960, planned work time consumption of the selected workload is multiplied by the weight factor to determine corresponding ratio of the planned work time consumption to assign to the time bucket. At 970, the determined ratio of the planned work time consumption of the selected workload is assigned to the time bucket.
At 980, a check is performed to determine whether all workloads from the number of workloads that overlap with the time bucket are selected. In case there are unselected workloads, the loop continues with step 930, until all workloads from the number of workloads that overlap with the time bucket are selected. Once the determined ratios of the planned work time consumption of the number of workloads are assigned to the time bucket, at 990, the assigned ratios of the planned work time consumption of the number of workloads are aggregated to determine the workload for the time bucket.
In one embodiment, portions of workloads 1012-1032 that overlap with time buckets 1040-1046 are determined. Based on the determined portions, ratios of the planned work time consumption of workloads 1012-1032 proportionate to the corresponding portions are assigned to corresponding time buckets 1040-1046. The ratios of planned work time consumption of workloads 1012-1032 are spread across their corresponding time buckets 1040-1046. In one embodiment, in time grid 1010, workloads 1052-1072 represent the ratios of planned work time consumption of workloads 1012-1032 that are assigned and spread across time buckets 1040-1046. For example, workload 1018 overlaps with time bucket 1040 and time bucket 1042. Overlapping portion of workload 1018 with time bucket 1040 is equivalent to 2 squares or units of length. To determine the corresponding ratio of workload 1018 to assign to time bucket 1040, weight factor is calculated. The weight factor is calculated by dividing overlapping portion of 2 units of workload 1018 by the time length of bucket 1040 that is equivalent to 4 squares or units. Thus, the weight factor equals 0.5 units. To determine the corresponding ratio of workload 1018 to assign to time bucket 1040, planned work time consumption of 2 units of workload 1018 is multiplied by the weight factor, i.e., 2 units of planned work time consumption is multiplied by 0.5 units of weight factor. The product of the multiplication is the corresponding ratio of planned work time consumption of workload 1018 to be assigned to time bucket 1040, i.e., 1 unit. Similarly, to determine the corresponding ratio of workload 1018 to assign to time bucket 1042, another weight factor is calculated. However, since length of time bucket equals the portion of the execution timeframe of workload 1018, the weight factor equals 1 unit. Thus, 2 units of planned work time consumption is multiplied by 1 unit of weight factor, i.e., 2 units of planned work time consumption of workload 1018 are to be assigned to time bucket 1042. Since, overlapping portion of workload 1018 with time bucket 1042 coincides wholly with bucket 1042, then no normalization or spreading is needed. Workload 1058 represents workload 1018 spread over time buckets 1040-1042 with which workload 1018 overlaps. In one aspect, a convolution of time grid 1005 and the time dependent workload function is represented in time grid 1010.
In various embodiments, the in-memory computing engine 1150 may maximize the use of the operative memory provided by modern hardware. Relevant data is kept in the operative memory where read operations can run. The in-memory computing engine 1150 can also be designed to make use of multi core CPUs by parallelization of execution. The in-memory computing engine 1150 can be a hybrid system that reduces the complexity of programming models and system landscapes by combining different paradigms in one system. The in-memory computing engine 1150 comprises engines for column-based, row-based, and object-based in-memory or volatile storage as well as traditional nonvolatile storage. These engines may be integrated in a way that, for example, data from row based storage can be directly combined with data from column based storage. Combining the different engines into a single system may significantly reduce the total cost of ownership. Transaction processing, analytics, planning, simulations, and searching are possible in a single system on the same data. This eliminates the need for separate systems, data extraction and replication in many scenarios. In various embodiments, it is possible to use the in-memory database 1140 as a replacement for standard databases. In one embodiment, standard database 1120 can be replaced with an in-memory database such as the in-memory database 1140 which comprises the in-memory computing engine 1150. In such system setup, real-time data extractor 1125 and real-time data replication 1130 would not be needed. The in-memory database 1140 can act as a full database management system with SQL interface, transactional isolation and recovery and high availability.
In one embodiment, workload table 1145 is an in-memory database table in column store format. With columnar data organization, operations on single columns, such as searching or aggregations can be implemented as loops over an array stored in contiguous memory locations. Such an operation has high spatial locality and can efficiently be executed in the CPU cache. With row oriented storage, the same operation is typically slower because data of the same column is distributed across memory and the CPU is slowed down by cache misses.
In one embodiment, in response to requesting a planning view from planning board 1105, associated BI analytic query 1155 forwards the request to DataSource 1160 via InfoProvider. In one embodiment, DataSource 1160 supply metadata description of source data, e.g., database tables 1115 and 1145. DataSource 1160 may be used to extract data from database 1120 and/or from in-memory database 1140, and to transfer the data to the BI system. In one embodiment, InfoProviders are meta objects in the database that can be uniformly seen as data providers within a query definition, and whose data can also be reported uniformly. In BI systems, aggregation levels are used in planning as InfoProviders. An aggregation level contains a set of characteristics and key figures from a real-time InfoCube. InfoCubes may be defined as objects that can function as both data targets and as InfoProviders. From a reporting point of view, an InfoCube describes a self-contained dataset, for example, of a workload planning. The InfoCube characteristics that are not contained in the aggregation level are aggregated. Selections can be specified for the characteristics in an aggregation level.
In one embodiment, BI analytic query 1155 is linked to DataSource 1160. DataSource 1160 could be an object containing key figures and characteristics, which provides a multidimensional view of business data for reporting. In one embodiment, upon receiving the request, DataSource 1160 calls SQL script that is stored in in-memory database 1140 and is executed by SQL processor 1165. In one embodiment, aggregations and calculation of workload according to processes 700 (
In one embodiment, dynamic aggregations and calculations of planned activities on different aggregate levels and filtering are computed by the in-memory computing engine 1150. An example of dynamic calculation that is made real-time by in-memory computing engine 1150 is dynamic calculation or definition of an in-memory time bucket table in response to receiving a request to calculate workload within a time range for a number of buckets. Another example of dynamic calculation by the in-memory computing engine 1150 is the time dependent activity workload function for sets of activities with equal execution timeframes. An example is also the convolution of the time grid and the time dependent activity workload function to spread planned work time consumption of workloads over a number of time buckets. In one embodiment, workload on different aggregate levels is dynamically calculated using in-memory stored data.
In one embodiment, by applying a time grid onto aggregated workload, portions of the persistent workload data stored in table 1115 are not used. Instead, for example, earliest planned start date and time and latest planned date end time may be rounded dynamically to start timestamp and end timestamp of the time buckets of the time grid in in-memory workload table 1145. Also, in case planned earliest start time of a workload is in the past, the planned earliest start time may be rounded to the current or actual date and time. In one embodiment, current date and time may be retrieved from the operating system of the in-memory computing engine 1150.
In one embodiment, planned execution timeframe of individual activities is quantized by allowing only discrete values for earliest start time and latest finish time. Not all values from time continuum are allowed for start and finish time, e.g., start and end timestamps are dynamically rounded to a minute so that not every second or even millisecond is possible as an individual value. If the possible values of the start and finish time are restricted to a number of discrete values, the aggregations are boosted by the column store architecture of the in-memory database 1140. Because only limited number for discrete values for points in time are allowed, the column store calculations are faster. Therefore, when writing activity data into the in-memory database 1140 rounding of the timestamps to the limited number of discrete values is done. Analogous performance boost may be achieved if also the possible values of net execution duration of activities are restricted to discrete values (e.g. 5, 10, 15, 20 seconds, etc.). Further, in case the current date and time is used as an earliest start time of a workload, then also such a dynamic rounding to allowed discrete values is performed.
In one embodiment, workload for a number of time buckets is calculated with sub-second runtime performance, where the workload is calculated based on raw data sample of 1000000 activities. The dynamic calculations and aggregations are boosted by the column store architecture of the in-memory database 1140.
Some embodiments may include the above-described methods being written as one or more software components. These components, and the functionality associated with each, may be used by client, server, distributed, or peer computer systems. These components may be written in a computer language corresponding to one or more programming languages such as, functional, declarative, procedural, object-oriented, lower level languages and the like. They may be linked to other components via various application programming interfaces and then compiled into one complete application for a server or a client. Alternatively, the components maybe implemented in server and client applications. Further, these components may be linked together via various distributed programming protocols. Some example embodiments may include remote procedure calls being used to implement one or more of these components across a distributed programming environment. For example, a logic level may reside on a first computer system that is remotely located from a second computer system containing an interface level (e.g., a graphical user interface). These first and second computer systems can be configured in a server-client, peer-to-peer, or some other configuration. The clients can vary in complexity from mobile and handheld devices, to thin clients and on to thick clients or even other servers.
The above-illustrated software components are tangibly stored on a computer readable storage medium as instructions. The term “computer readable storage medium” should be taken to include a single medium or multiple media that stores one or more sets of instructions. The term “computer readable storage medium” should be taken to include any physical article that is capable of undergoing a set of physical changes to physically store, encode, or otherwise carry a set of instructions for execution by a computer system which causes the computer system to perform any of the methods or process steps described, represented, or illustrated herein. A computer readable storage medium may be a non-transitory computer readable storage medium. Examples of non-transitory computer readable storage media include, but are not limited to: magnetic media, such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs, DVDs and holographic devices; magneto-optical media; and hardware devices that are specially configured to store and execute, such as application-specific integrated circuits (“ASICs”), programmable logic devices (“PLDs”) and ROM and RAM devices. Examples of computer readable instructions include machine code, such as produced by a compiler, and files containing higher-level code that are executed by a computer using an interpreter. For example, an embodiment may be implemented using Java, C++, or other object-oriented programming language and development tools. Another embodiment may be implemented in hard-wired circuitry in place of, or in combination with machine readable software instructions.
A data source is an information resource. Data sources include sources of data that enable data storage and retrieval. Data sources may include databases, such as, relational, transactional, hierarchical, multi-dimensional (e.g., OLAP), object oriented databases, and the like. Further data sources include tabular data (e.g., spreadsheets, delimited text files), data tagged with a markup language (e.g., XML data), transactional data, unstructured data (e.g., text files, screen scrapings), hierarchical data (e.g., data in a file system, XML data), files, a plurality of reports, and any other data source accessible through an established protocol, such as, Open DataBase Connectivity (ODBC), produced by an underlying software system (e.g., ERP system), and the like. Data sources may also include a data source where the data is not tangibly stored or otherwise ephemeral such as data streams, broadcast data, and the like. These data sources can include associated data foundations, semantic layers, management systems, security systems and so on.
In the above description, numerous specific details are set forth to provide a thorough understanding of embodiments. One skilled in the relevant art will recognize, however that the embodiments can be practiced without one or more of the specific details or with other methods, components, techniques, etc. In other instances, well-known operations or structures are not shown or described in detail.
Although the processes illustrated and described herein include series of steps, it will be appreciated that the different embodiments are not limited by the illustrated ordering of steps, as some steps may occur in different orders, some concurrently with other steps apart from that shown and described herein. In addition, not all illustrated steps may be required to implement a methodology in accordance with the one or more embodiments. Moreover, it will be appreciated that the processes may be implemented in association with the apparatus and systems illustrated and described herein as well as in association with other systems not illustrated.
The above descriptions and illustrations of embodiments, including what is described in the Abstract, is not intended to be exhaustive or to limit the one or more embodiments to the precise forms disclosed. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes, various equivalent modifications are possible within the scope of the invention, as those skilled in the relevant art will recognize. These modifications can be made in light of the above detailed description. Rather, the scope is to be determined by the following claims, which are to be interpreted in accordance with established doctrines of claim construction.