PATENT ABSTRACT
A method for dynamically altering manufacturing routings to add, remove, or skip operations and combinations of operations within a shop floor control system in real-time to respond to current conditions. One aspect of the present invention is a computer-implemented method for dynamically generating a manufacturing production work flow. One embodiment of this method comprises receiving indication that an assembly has completed a manufacturing operation, the assembly having a work flow and a sampling strategy associated therewith; querying a data source for characteristics of a plurality of previously sampled components; querying a manufacturing floor control system for current production status; and dynamically updating the work flow for the assembly based at least in part on the sampling strategy, characteristics of the plurality of previously sampled components, and the current production status.

PATENT DESCRIPTION
BACKGROUND OF THE INVENTION 
       [0001]    1. Field of the Invention 
         [0002]    The present invention is generally related to manufacturing floor control systems and methods, and more specifically, to a method for dynamically generating work flows for components based on sensed production activities and/or order characteristics. 
         [0003]    2. Description of the Related Art 
         [0004]    Today&#39;s customers demand that products be tailored to their specifications and be delivered in a ready-to-use manner. They also demand the lowest possible cost. These conflicting demands place great pressure on manufacturing organizations to efficiently produce solutions based on customer specifications. 
         [0005]    As product complexity increases and product life cycles become shorter, it is increasingly difficult to verify product configurations or permutations prior to shipment. Currently, three techniques are used. The first, percentage sampling, involves defining a percentage of products that must be routed through a specific inspection step or operation somewhere in the manufacturing process. For fixed products that are all identical, statistical process control (SPC) can be used to determine optimum sampling rates, etc. This process is most effective in a high-volume business that has little variation product content, single-unit based manufacturing (i.e., units of 1), and constant cycle times. 
         [0006]    The second technique, 100% inspection, involves routing each and every assembly through a specific inspection step or operation somewhere in the manufacturing process to ensure quality. The third technique, operator training, involves training on employees to recognize problems during the normal process steps and then relying on judgment to take appropriate actions. The second and third approaches are more effective in a low volume, high margin businesses. 
       SUMMARY OF THE INVENTION 
       [0007]    The present invention provides a method for dynamically altering manufacturing routings to add, remove, or skip operations and combinations of operations within a shop floor control system, both at the present step and at future steps in the routing map or tree, considering all of the factors present when the new routing is generated. Significantly, the dynamic work flow adjustment is not limited to a pre-defined set of possibilities. That is, the manufacturing entity does not need to pre-define all possible routing maps ahead of time. Embodiments can build and modify routings in real-time, as the assembly is built. 
         [0008]    Embodiments of the present invention may also provide for dynamically controlling the interaction of more than one sampling method on any given product at any one time. That is, these embodiments blend and adjust routings based on multiple sampling strategies operative on the same assembly. In addition, embodiments of the invention may dynamically generate sampling orders for complex configured products where the configuration determines the sampling plan desired, or where past actions and analysis are taken into account to develop future sampling in future production cycles. 
         [0009]    One aspect of the present invention is a computer-implemented method for dynamically generating a manufacturing production work flow. One embodiment of this method comprises receiving indication that an assembly has completed a manufacturing operation, the assembly having a work flow and a sampling strategy associated therewith; querying a data source for characteristics of a plurality of previously sampled components; querying a manufacturing floor control system for current production status; and dynamically updating the work flow for the assembly based at least in part on the sampling strategy, characteristics of the plurality of previously sampled components, and the current production status. 
         [0010]    Another aspect of the present invention is a method for deploying computing infrastructure, comprising integrating computer readable program code into a computing system, wherein the code in combination with the computing system is adapted to perform a method for generating a manufacturing production work flow. The method for generating a manufacturing production work flow, in turn, comprises receiving indication that an assembly has completed a manufacturing operation, the assembly having a work flow and a sampling strategy associated therewith; querying a data source for characteristics of a plurality of previously sampled components; querying a manufacturing floor control system for current production status; and dynamically updating the work flow for the assembly based at least in part on the sampling strategy, characteristics of the plurality of previously sampled components, and the current production status. 
         [0011]    Another aspect of the present invention is a system, comprising a processing unit and a memory operatively connected to the processing unit. In one embodiment, the memory contains an adaptive engine configured to receive indication that an assembly has completed a manufacturing operation, the assembly having a work flow and a sampling strategy associated therewith; query a data source for characteristics of a plurality of previously sampled components; query a manufacturing floor control system for current production status; and dynamically update the work flow for the assembly based at least in part on the sampling strategy, characteristics of the plurality of previously sampled components, and the current production status. 
         [0012]    One feature and advantage of some embodiments is that they provide the ability for a manufacturing floor control system to sense changes in throughput and automatically adjust sampling to keep a smoother rate. For example, embodiments can adjust with varying manufacturing activities, such as: short parts, priority changes, critical order situations, revenue trade-offs, quality holds, etc. Some embodiments may also support combinatorial methods (i.e., multiple sampling strategies in effect at the same time) and support multiple dimensions (i.e., account for sampling activities driven from other processes, product, etc.) 
         [0013]    Another feature and advantage of some embodiments is that, unlike conventional statistical quality control techniques, coverage can be ensured for uniquely configured products and, in cases where new configurations are ordered in batches by customers, to identify which one will complete the manufacturing process first and thus should be verified to validate the entire shipment or batch. This, in turn, ensures less product escapes and customer quality issues are contained at the manufacturing location, while limiting quality inspection resources to minimum level required to maintain/ensure quality targets are being met prior to shipment. 
         [0014]    Yet another feature and advantage of some embodiments is that they allow for real-time controlled response to containing quality issues as they are detected, without requiring ‘armies’ of people finding/tracking machines on a production floor. These embodiments help ensure adequate testing is performed when product or process changes are released, especially when the first instance of a customer order to be affected by the changes is not known when released into production. 
         [0015]    Embodiments of the present invention are also desirable because they provide the ability to have sampling algorithms impact future activities. Thus, for example, one embodiment can determine that when completing operation X, you need to do a random sampling at operation X+1, but since you inserted operation X+1 after operation X, you also need to add operations Y 1 , Y 2 , and Y 3  later in manufacturing as operations X+20, X+21, and X+22. 
         [0016]    In addition, some embodiments are desirable because they can look at manufacturing impacts on an order by order basis to steer sampling to avoid production cycle time issues. Thus, for example, if a product needs certain percentage sampling on a product line, but an order is running late due to supply constraints, embodiments can pick an alternative candidate and still met the required compliance percentage. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0017]    So that the manner in which the above recited features, advantages and objects of the present invention are attained and can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to the embodiments illustrated by the appended drawings. These drawings, however, illustrate only typical embodiments of the invention and are not limiting of its scope, for the invention may admit to other equally effective embodiments. 
           [0018]      FIG. 1A  shows one embodiment of a manufacturing floor control system. 
           [0019]      FIGS. 1B-1C  depict some sample tables in the WIP database. 
           [0020]      FIG. 2  is a high-level overview of one embodiment of the present invention in operation 
           [0021]      FIG. 3  is an original production routing for an example product. 
           [0022]      FIG. 4  illustrates a modified production routing for the example product, according to a “first off” sampling strategy. 
           [0023]      FIG. 5  illustrates a modified production routing for the example product, according to a ‘percentage’ sampling strategy. 
           [0024]      FIG. 6  illustrates a modified production routing for the example product, according to a ‘special config’ sampling strategy. 
           [0025]      FIG. 7  illustrates the operation of one adaptive engine embodiment. 
           [0026]      FIG. 8  illustrates one embodiment of the first instance sampling (“FOT”) sampling program in more detail. 
           [0027]      FIG. 9  illustrates one embodiment of a fingerprint ID service. 
           [0028]      FIG. 10  illustrates how to calculate a fingerprint in more detail. 
           [0029]      FIGS. 11-12  illustrate the operation of the rate/qualification based sampling strategy program in more detail. 
       
    
    
     DETAILED DESCRIPTION 
       [0030]      FIG. 1A  shows one embodiment of a manufacturing floor control system  100  capable of dynamically altering manufacturing work flows in real time based on multiple sampling strategies and changing product configurations on an individual unit basis. This manufacturing floor control system  100  comprises one or more central processing units  110   a - 110   d  (“CPU”) connected to a main memory unit  112  by a system bus  119 . The main memory  112  contains an operating system  124 , manufacturing execution system (MES)  126 , and a work in progress database (WIP)  128 . The MES  126 , in turn, comprises an adaptive engine  121  and a fingerprint ID service  123 , and is in communication with an external first off test (FOT) sampling strategy program  122   a , an external rate/qualify (RATE) sampling strategy program  122   b , and an external special configuration sampling strategy program  122   c  (collectively sampling programs  122 ). The MES  126  controls the flow of a plurality of manufacturing number (MFGN) assemblies  190   a , work units  190   b , sub-work-units  190   c , etc (for clarity, all of the various product levels will be referred to herein as assemblies  190 ) past a variety of managed stations  191 . At some of the managed stations  191 , assembly tasks are performed; at others, inspection tasks are performed. 
         [0031]    This manufacturing floor control system embodiment  100  further comprises a mass storage interface  114 , a terminal/display interface  116 , a network interface  118 , and an input/output (“I/O”) interface  120  by the system bus  119 . The mass storage interfaces  114 , in turn, connect the system bus  119  to one or more mass storage devices, such as a direct access storage device  140  or a readable/writable optical disk drive  142 . The network interfaces  118  allow the manufacturing floor control system  100  to communicate with the managed stations  191  over a communications medium  116 . 
         [0032]    As best shown in  FIGS. 1B-1C , the WIP database  128  contains a sampling strategy table  180  comprising a plurality of WIP records  170  (one shown for clarity). Each WIP record  170  contains a product group field  171 , a sequence field  172 , an activation criteria field  173 , an invoking operation field  174 , a sampling exclusion criteria field  175 , a conditions field  176 , a sampling program type field  177 , a manufacturing entity level field  178 , and a WIP item field  179 . The WIP database  128  also contains a WIP history table  181  containing a plurality of WIP records  182   a - 182   c  containing a running history of each WIP item  179 ; a first_config history table  184  a date on which each unique assembly  190  was first built; and a first_config requirements table  186  that defines the specific operation(s), quantity, and expiration date(s) that will be done for each type of assembly. 
         [0033]      FIG. 2  provides a high-level overview  200  of one embodiment of the present invention in operation. At block  202 , the MES  126  receives an external call from one of its managed stations  191 , triggered by the completion of a process step, and then sends the current routing/product data for that assembly  190  to the adaptive engine  121 . At block  204 , the adaptive engine  121  reviews current sampling strategies for the assembly  122 , along sampling history for that type of assembly  190 . At block  206 , the adaptive engine  121  resolves one or more sampling strategies assigned to the current assembly  190 , and then generates an updated routing. In some embodiments, this will include using one or more of the external sampling programs  122 . These programs  122 , in turn, can resolve strategies defined against the assembly  190  as a whole and/or against its sub-assemblies, sub-sub-assemblies, etc. Control returns again at block  202 , where the adaptive engine  121  will return the updated routing to the MES  126 , which generates the corresponding work orders. In this way, the multiple sampling strategies can be set in motion for each assembly, and execution of these strategies is adapted in real time to respond to actual floor conditions. 
         [0034]      FIGS. 3-6  further illustrate the adaptive engine  121  in operation.  FIG. 3  shows the original production routing  300  for an example product  302 , such as a server. The product  302  comprises a plurality of a first type of assembly  304   a - 304   e , such as a drawer build; a second type of assembly  310 , such as a controller; and a third type of assembly  320   a - 320   b , such as a power supply unit. The first assemblies  304  in this example are merged into a higher assembly unit  330 ; which in turn is merged with the second assembly  310  and the third assembly  320  to form a routing group  340   a - 304   n , such as a system level build unit. The routing groups  340 , in turn, are processed through a series of system level manufacturing operations  342   a - 342   n . The routing groups  340  are eventually combined with one or more accessories  345  to form a final customer shipment  350 . 
         [0035]      FIG. 4  shows a modified production routing  400  for the example product  402 , according to the “first off” sampling strategy  122   a . As in  FIG. 3 , the product  402  comprises a plurality of a first type of assembly  404   a - 404   e ; a second type of assembly  410 ; and a third type of assembly  420   a - 420   b . The first assemblies  404  in this example are merged into a higher level assembly  430 ; which in turn is merged with the second assembly  410  and the third assembly  420  to form a routing group  440   a - 440   n . The routing groups  440 , in turn, are processed through a series of system level manufacturing operations  442   a - 442   n . The routing groups  440  are eventually combined with one or more accessories  445  to form a final customer shipment  450 . Because the manufacturer has implemented the ‘first off’ sampling strategy  122   a , however, the adaptive engine  121  dynamically adds operations  460  and  462  to the assembly  430 , as this was the first time this particular “group” configuration was produced. 
         [0036]      FIG. 5  shows a modified production routing  500  for the example product  502 , according to overlapping ‘first off’ strategy  122   a  and ‘rate/qualify’ sampling strategy  122   b . As in  FIG. 3 , the product  502  comprises a plurality of a first type of assembly  504   a - 504   e ; a second type of assembly  510 ; and a third type of assembly  520   a - 520   b . The first assemblies  504  in this example are merged into a higher level assembly  530 ; which in turn is merged with the second assembly  510  and the third assembly  520  to form a routing group  540   a - 540   n . The routing groups  540 , in turn, are processed through a series of system level manufacturing operations  342   a - 542   n . The routing groups  540  are eventually combined with one or more accessories  545  to form a final customer shipment  550 . Because the manufacturer has implemented both the ‘first off’  122   a  and the ‘rate/qualify’  122   b  sampling strategies, operation  564  was also dynamically added to unit of work  520   b  as that type of assembly hit desired sample rate. 
         [0037]      FIG. 6  shows a modified production routing  600  for the example product  602  added a ‘special config’  122   c  sampling strategy to the ‘first off’  122   a  and ‘percentage’  122   b  strategies. As in  FIG. 3 , the product  602  comprises a plurality of a first type of assembly  604   a - 604   e ; a second type of assembly  610 ; and a third type of assembly  620   a - 620   b . The first assemblies  604  in this example are merged into a higher level assembly  630 ; which in turn is merged with the second assembly  610  and the third assembly  620  to form a routing group  640   a - 640   n . The routing groups  640 , in turn, are processed through a series of system level manufacturing operations  642   a - 642   n . The routing groups  640  are eventually combined with one or more accessories  645  to form a final customer shipment  650 . Because the manufacturer has also added the ‘special config’  122   c  sampling strategy, however, a system level operation  640   b  was dynamically removed due to the presence of the triggering special configuration. 
         [0038]      FIG. 7  illustrates the operation of one adaptive engine embodiment  121  in more detail. At block  702 , the adaptive engine  121  receives an external call from one of the various systems  191  under its control. These calls occur each time an assembly  190  has reached a defined operation  174  in its manufacturing flow. At block  704 , the adaptive engine  121  determines if the assembly  190  has an existing ‘currently active sampling plan’ (not shown) in the work in progress (WIP) database  128 . 
         [0039]    If the adaptive engine  121  determined at block  704  that the product does not have an existing sampling plan, the adaptive engine  121  first searches the sampling strategy table  180  for matching record product groups  171  and activation criteria  173  at blocks  730 - 734 . That is, the manufacturing entity in this embodiment has defined various process steps and tests it wants to occur. The adaptive engine  121  searches the sampling strategy table  180  to determine if a matching strategy exists. If the adaptive engine  121  finds a matching strategy, the adaptive engine  121  will start a new WIP record  182  in the WIP database  128  at block  738  and update the strategies WIP table  170  at block  732 . This initiates the record in the WIP table that future processing will update. 
         [0040]    If the adaptive engine  121  determined at block  704  that an active sampling plan exists or if the adaptive engine  121  created a new active sampling plan at blocks  730 - 738 , the adaptive engine  121  then begins to apply the strategy at blocks  706 - 724 . More specifically, starting at block  706 , the adaptive engine  121  searches the WIP record  170  for operations  174  that match the triggering event (block  702 ). The adaptive engine  121  then reviews the corresponding sampling exclusion criteria  175  at blocks  708 - 712  to determine if there are any systematic reasons why the action should not occur (e.g., the test station is unavailable, the action occurs too near a critical deadline). In some embodiments, this may be as simple as reviewing the WIP database records  180  for the corresponding criteria  175 . In other embodiments, these blocks may include calling one of the sampling strategy programs  122  at block  710  to resolve more complex set of circumstances. If the action is excluded by the exclusion criteria, the adaptive engine  121  records this fact in the WIP database record  182  for the assembly  190  and then returns the next process step at block  728  in response to the original external call (block  702 ). 
         [0041]    If the action was not excluded at blocks  708 - 712 , the adaptive engine  121  then calls one or more of the sampling dimension programs  122  at blocks  714 - 718  to determine if any actions need to be added to or deleted from the manufacturing routing for this particular product. These one or more sampling programs  122  include the FOT  122   a , RATE  122   b , and special config  122   c  programs described with reference to  FIGS. 3-6 . 
         [0042]    If the sampling dimension programs  122  did not recommend a change to the routing (block  718 ), the sampling dimension program adds the ‘updated’ routing to the routing map at block  728 , where the update will indicate no changes were required. However, if the sampling dimension programs  122  did recommend a change to the routing (block  718 ), then the adaptive engine  121  begins to iterate through each unit under evaluation at blocks  720 - 726 . More specifically, at block  720 , the adaptive engine  121  first determines whether, for the current unit, this is a continuation of an existing sampling strategy. If so, then the sampling proceeds directly to block  723 ; otherwise, the adaptive engine  121  updates the WIP table at block  721  and then proceeds to block  724 . 
         [0043]    At block  724 , the adaptive engine  121  reviews the conditions field  176  and the recommended sampling dimensions (blocks  714 - 718 ), resolves the conditional logic, and then calculates routing change orders. These routing change orders, in turn, determine if/when various operations occur in view of past sample selection, execution, and/or results. For example, in one embodiment, the conditions field  176  may contain an “*ALL” condition or an “*OPT” condition. The “*ALL” condition indicates the corresponding operation should be executed if the sampling dimension program returns a routing change. The “*OPT” condition indicates that the corresponding operation should execute only if the calling sampling dimension returns a routing change and any of the previous conditions have not been met for the manufacturing entity. Table 1 provides the resolution of how the conditional Boolean logic resolves in some example circumstances. 
         [0000]    
       
         
               
               
               
               
             
           
               
                 TABLE 1 
               
               
                   
               
               
                   
                   
                 Mfg. 
                   
               
               
                   
                 Sampling 
                 Entity 
               
               
                 Conditions 
                 Dimension 
                 Level 
                 Interpretation of Conditional Logic 
               
               
                   
               
             
             
               
                 *ALL 
                 1. FOT 
                 1. WU 
                 1. If the FOT program recommends a 
               
               
                   
                   
                   
                 routing change, then *ALL means 
               
               
                   
                   
                   
                 VALID 
               
               
                 *OPT 
                 2. PART 
                 2. WU 
                 2. If the PART program recommends 
               
               
                   
                   
                   
                 a routing change and FOT (1) was 
               
               
                   
                   
                   
                 also VALID, then *OPT means that 
               
               
                   
                   
                   
                 this operation is skipped for this mfg. 
               
               
                   
                   
                   
                 entity. IF FOT (1) was INVALID and 
               
               
                   
                   
                   
                 if PART recommends a routing 
               
               
                   
                   
                   
                 change, then *OPT means VALID 
               
               
                 *ALL 
                 3. FOT 
                 3. MFGN 
                 3. IF FOT for different ENTITY level 
               
               
                   
                   
                   
                 recommends routing change, then 
               
               
                   
                   
                   
                 *ALL means VALID 
               
               
                 *OPT 
                 4. RATE 
                 4. MFGN 
                 4. If RATE recommends routing 
               
               
                   
                   
                   
                 change and none of the previous 
               
               
                   
                   
                   
                 (FOT (1), RATE (2), FOT (2)) were 
               
               
                   
                   
                   
                 VALID, then *OPT means VALID. 
               
               
                   
                   
                   
                 If any of (FOT (1), RATE (2), 
               
               
                   
                   
                   
                 FOT (2)) were VALID, then OPT 
               
               
                   
                   
                   
                 means operation is skipped. 
               
               
                   
               
               
                 As shown, the “*OPT” condition is particularly desirable because it helps distribute the global sampling plan across the total production run. That is, the “*OPT” condition prevents one particular assembly 190 from being sampled repeatedly, thus throwing off the overall validity of the testing program. The “*OPT” condition can also help avoid bottlenecks by allowing inspection operations to be deferred during particularly busy times or in response to shortages and/or outages. 
               
             
          
         
       
     
         [0044]      FIG. 8  illustrates one embodiment of the first instance sampling (“FOT”) sampling program  122   a  in more detail. In operation, each order is processed by a fingerprint service  123  that coverts the specific list of machine type model numbers (MTMs, sometimes known as product numbers or SKUs), feature codes, and quantities into a fingerprint. The resulting fingerprint is then checked against a database of previously built products and, if fingerprint not found, the order is assigned the required additional operation(s) and the table is updated. If, however, the fingerprint is found, then the system&#39;s  100  current date is compared against an ‘expiration’ criterion. If the previous instance was too old, then the current order is also scheduled for inspection. 
         [0045]    More specifically, at block  802 , the FOT sampling program  122   a  receives order information from the adaptive engine  121  indicating that the organization wants “FOT” sampling and indicating that the order passed all of the exclusionary checks (described with reference to blocks  708 - 712  in  FIG. 7 ). Next, the FOT program  122   a  determines at blocks  804 - 810  what product level the order involves, e.g., system level analysis  806 , unit of work level analysis  808 , or order level analysis  810 . This operation may involve reviewing the first_config requirements table  186  ( FIG. 10 ). At block  820 , the FOT program  122   a  then determines whether the assembly  190  already has an appropriate level fingerprint in the WIP database  128 . If not, the FOT program  122   a  first if checks an ignore/suppress table  821  to determine if any portions of the configuration can be ignored when calculating the fingerprint at blocks  822 - 823 , then calls the fingerprint service  123  at block  824  to calculate the fingerprint using the required level, nomenclature, and entity number. 
         [0046]    At block  830 , the FOT program  122   a  compares the fingerprint for the current assembly  190  to the first_config history table  184  ( FIG. 10 ) in the WIP database  128 . The sampling dimension program  130  then determines at block  832  if the required sampling quantity for this fingerprint has been met within the date range. Part of this operation includes querying the first_config history table  184 . If additional sampling is required, the FOT program  122   a  determines which operations to add at block  836 , again using the first_config requirements table  186 . The FOT program  122   a  concludes by updating the WIP records at block  838  and then returning a “sampling required” response, together with the correct operation(s), to the MES  126  at block  840 . 
         [0047]    If, however, the FOT program  122   a  determined at block  832  that the required quantity of this config ID has already been met within the date range, the FOT program  122   a  writes this result to the first_config history table  184  at block  850  and then returns a “sampling not required” response to the MES  126  at block  852 . 
         [0048]      FIG. 9  illustrates one embodiment of the fingerprint ID service  123 . At block  904 , the fingerprint ID service  123  receives an order (block  902   a - 902   c ) from the adaptive engine  121  requesting a new or updated fingerprint. At block  906 , the fingerprint ID service  123  parses the order to obtain the information that will be required to form the fingerprint, such as the entity ID, the units of work and their IDs, the unit placement, the device codes, feature bills of materials (BOM) and placement, and installed parts and placement. At blocks  908 - 914 , the fingerprint ID service  123  parses the order to determine what type of fingerprint is responsive to the original request. 
         [0049]    The fingerprint ID service then gathers the information necessary to calculate the fingerprint at block  916 . In some embodiments, this may include querying an ignore-suppress table at blocks  918 - 920  to determine if any portions of the order should be ignored for this assembly. That is, if a ‘system’ fingerprint normally is normally generated from items A, B, C, and D, the ignore-suppress table may indicate that the fingerprint ID service should skip item B for this particular assembly  190 . The fingerprint ID service  123  then calculates the requested fingerprint type at block  922  and returns the result at block  924 . 
         [0050]      FIG. 10  illustrates how to calculate the fingerprint in more detail. At block  1002 , the fingerprint ID service  123  receives an order from the adaptive engine  121  requesting a new or updated fingerprint. The fingerprint ID service  123  may also search the WIP database  128  to obtain the information that will be required to form the fingerprint, such as the entity ID, the units of work and their IDs, the unit placement, the device codes, feature bills of materials (BOM) and placement, and installed parts and placement. The fingerprint ID service  123  parses the request for the desired configuration level(s) at block  1004  and then selects the first configuration data element at block  1006 . Next, the fingerprint ID service  123  converts the configuration data element(s) into base-64 at block  1008  and then divides that result into 64 bit blocks at block  1010 . Some embodiments will pad the last block to ensure it has the full 64 bits. Next, at blocks  1012 - 1020 , the fingerprint ID service  123  will then compute a hash from the 64 bit blocks. Although the particular hash in described in  FIG. 10  is desirable because it produces similar outputs for similar inputs, any known check-sum, message digest, or hashing algorithm that produces a unique result may be used. The resulting hash is returned at block  1022  as the fingerprint. 
         [0051]      FIG. 11  illustrates the operation of the rate/qualification based sampling strategy program  122   b  in more detail. In operation, this program  122   b  tracks for which systems or units of work a sampling operation is selected, and the corresponding attribute list is used to determine whether or not to sample this particular item. More specifically, at block  1102 , the RATE program  122   b  receives a call asking it to evaluate the sampling strategy for an assembly  190 . The RATE program  122   b  responds by first reviewing a routing map definition file for the next operation (i.e., the operation after the one that triggered the call) at blocks  1103 - 1104 . Next, at block  1106 , the RATE program  122   b  determines if the next operation is a sampling operation. If not, it leaves the next operation in the routing map at block  1105  and exits; otherwise, the RATE program  122   b  proceeds to block  1108 . 
         [0052]    At block  1108 , the RATE program  122   b  determines if the next operation is a system level operation. If so, the RATE program  122   b  then asks whether the previous operation completed the sampling strategy for any lower level assembly  190  (e.g., assembly  190   b  in MFGN  190   a ) at block  1112 . If yes, then the RATE program  122   b  skips the next operation at block  1110  to avoid dirty data in the population and then returns to block  1102 ; otherwise, the RATE program  122   b  determines at block  1113  if the highest level for this assembly  190  had been previously selected. If no, then the RATE program  122   b  determines whether a sampling operation should be performed at block  1115  (described in more detail with reference to  FIG. 12 ), otherwise, if RATE program  122   b  determined the highest level for this assembly  190  had been previously selected at block  1113 , the RATE program proceeds to block  1105 . 
         [0053]    At block  1120 , if an additional sampling operation was required by block  1115 , then the RATE program  122   b  issues work orders requesting the tests be performed at block  1122 , updates the sample population data at block  1124 , and then proceed to block  1105 . If, however, an additional sampling operation was not required at block  1120 , then the RATE program  122   b  proceeds to update the WIP database  128  with the new sample data at block  1130  and update the sample population data at block  1132  and block  1134 . That is, the RATE program  122   b  logs that there was an assembly  190  that met the population requirements, or the RATE program  122   b  logs the number sampled and indicates that the assembly  190  is marked but not yet complete. When the sampling completes, then the assembly  190  is updated again to reflect that fact. These two pieces of data are desirable to show how many were assemblies  190  were actually sampled and how many assemblies  190  were produced in total. Thus, using this information, the RATE program  122   b  can access the percentage sampled already, etc. 
         [0054]    At block  1140 , if the RATE program  122   b  determined at block  1108  that this was not a system level operation, then the RATE program  122   b  determines whether the previous operation was the last defined for the sub-assembly  190   b ,  190   c , etc. This decision may include querying the manufacturing history for the sub-assembly  190   b ,  190   c , etc. If previous operation did complete the sub-assembly  190   b ,  190   c , etc, then the RATE program  122   b  determines at block  1142  whether the sub-assembly  190   b ,  190   c , etc. was previously selected; otherwise the RATE program  122   b  proceeds to block  1110 . 
         [0055]    If the sampling strategy determined at block  1142  that sub-assembly  190   b ,  190   c , etc. was previously selected, then the RATE program  122   b  proceeds to block  1105 , otherwise the RATE program  122   b  proceeds to block  1115  and resolves the sub-assembly  190   b ,  190   c , etc. 
         [0056]      FIG. 12  illustrates the operation of block  1115  in more detail. At block  1203 , the RATE program  122   b  determines what type of sampling is requested by the call, and then selects matching sampling control records. Next, at block  1204 , the RATE program  122   b  determines if any sampling programs have been previously set up. If so, then the RATE program  122   b  determines if there are any remaining sampling control records (a table in which users identify what type of sampling to initiate, at what operation, for which products, and the corresponding sampling parameters, not shown) at block  1206 , otherwise the RATE program  122   b  replies at block  1208  that ‘no sample’ is required and exits. If RATE program  122   b  determined at block  1206  that sampling control records remain, then the RATE program  122   b  selects the relevant sampling control records at block  1210 ; otherwise the RATE program  122   b  replies that no sample is required at block  1208  and exits. 
         [0057]    At block  1214 , the RATE program  122   b  determines whether ‘qualify’ or ‘rate’ sampling was specified. If ‘qualify’ was specified, then the RATE program  122   b  determines at block  1216  whether the current sample count is less then the required sample value. This determination may include querying the sampling control records  1217  (a table in which users identify what type of sampling to initiate, at what operation, for which assemblies, and the corresponding sampling parameters) and a sample population information table  1219  (tracks sample population per attribute used in determining sample selection). If the current sample count is less then the required sample value, then the RATE program  122   b  returns that ‘a sample is required’ at block  1218 ; otherwise, the RATE program  122   b  iterates through the remaining bills of materials (BOM) for the assembly to determine if any remain at blocks  1220 - 1222 . If the sample count is less then the sample value and no remaining BOM&#39;s remain in the list, then the RATE program  122   b  will return to block  1206 . 
         [0058]    If ‘rate’ was specified at block  1204 , then the RATE program  122   b  determines at block  1230  whether the sample count/population size is less then the required sampling rate. If so, then the RATE program  122   b  returns a sample required message at block  1218 , otherwise the RATE program  122   b  iterates through the remaining bills of materials (BOM) for the assembly  190  to determine if any remain at blocks  1232 - 1234 . If the required rate has been satisfied and no remaining BOM&#39;s remain in the list, then the RATE program  122   b  will return to block  1206 . 
         [0059]    Referring again to  FIGS. 1A-1C , the computing system  100  in this embodiment comprises a plurality of central processing units  110   a - 110   d  (herein generically referred to as a processor  110  or a CPU  110 ) connected to a main memory unit  112 , a mass storage interface  114 , a terminal/display interface  116 , a network interface  118 , and an input/output (“I/O”) interface  120  by a system bus  119 . The mass storage interfaces  114 , in turn, connect the system bus  119  to one or more mass storage devices, such as a direct access storage device  140  or a readable/writable optical disk drive  542 . The network interfaces  118  allow the computer system  100  to communicate with other computing systems  100  over the communications medium  106 . 
         [0060]    The computing system  100  in this embodiment is a general-purpose computing device. Accordingly, the CPU&#39;s  110  are capable of executing program instructions stored in the main memory  112  and are constructed from one or more microprocessors and/or integrated circuits. Moreover, in this embodiment, the computing system  100  contains multiple processors and/or processing cores, as is typical of larger, more capable computer systems. However, in other embodiments, the computing systems  100  may comprise, in whole or in part, a single processor system; a single processor designed to emulate a multiprocessor system; or special purpose processing devices, such as an application specific integrated circuit (ASIC). 
         [0061]    When the computing system  100  starts up, the associated processor(s)  110  initially execute the program instructions that make up the operating system  124 , which in turn, manages the physical and logical resources of the computer system  100 . These resources include the main memory  112 , the mass storage interface  114 , the terminal/display interface  116 , the network interface  118 , and the system bus  119 . As with the processor(s)  110 , some computer system  100  embodiments may utilize multiple system interfaces  114 ,  116 ,  118 ,  120 , and busses  122 , which in turn, may each include their own separate, fully programmed microprocessors. 
         [0062]    The system bus  119  may be any device that facilitates communication between and among the processors  110 ; the main memory  112 ; and the interfaces  114 ,  116 ,  118 ,  120 . Those skilled in the art will appreciate that the system bus  119  may be a relatively simple, single bus structure that provides a direct communication path among the system bus  119  (as depicted in  FIG. 1A ), or may be a more complex structure, such as point-to-point links in hierarchical, star or web configurations; multiple hierarchical buses; parallel and redundant paths, etc. 
         [0063]    The main memory  112  and the mass storage devices  140  work cooperatively in this embodiment to store the operating system  124 , the MES  126 , the WIP database  128 , the sampling programs  122 . In this embodiment, the main memory  112  is a random-access semiconductor device capable of storing data and programs. Although  FIG. 1A  conceptually depicts this device as a single monolithic entity, the main memory  112  in some embodiments may be a more complex arrangement, such as a hierarchy of caches and other memory devices. Thus, for example, the main memory  112  may comprise multiple levels of caches, and these caches may be further divided by function, so that one cache holds instructions while another holds non-instruction data, which is used by the processor or processors. The memory may be further distributed and associated with different CPUs  110  or sets of CPUs  110 , as is known in any of various so-called non-uniform memory access (NUMA) computer architectures. Moreover, some embodiments may utilize virtual addressing mechanisms that allow the computing systems  100  to behave as if it has access to a large, single storage entity instead of access to multiple, smaller storage entities such as the main memory  112  and the mass storage device  140 . 
         [0064]    Moreover, while the operating system  124 , the MES  126 , the WIP database  128 , and the sampling programs  122  are illustrated as being contained within the main memory  112 , some or all of them may be physically located on different computer systems and may be accessed remotely, e.g., via a communications medium, such as the Internet. That is, while the operating system  124 , the MES  126 , the WIP database  128 , and the sampling programs  122  are illustrated as being contained within the main memory  112 , these elements are not necessarily all completely contained in the same physical device at the same time, and may even reside in the virtual memory of other computer systems  100 . Such arrangements are common in virtualized and cloud-based embodiments. 
         [0065]    The system interface units  114 ,  116 ,  118 ,  120  support communication with a variety of storage and I/O devices, including the managed stations  191 . More specifically, the mass storage interface unit  114  supports the attachment of one or more mass storage devices  140 , which are typically rotating magnetic disk drive storage devices, although they could alternatively be other devices, including arrays of disk drives configured to appear as a single large storage device to a host and/or archival storage media, such as hard disk drives, tape (e.g., mini-DV), writeable compact disks (e.g., CD-R and CD-RW), digital versatile disks (e.g., DVD, DVD-R, DVD+R, DVD+RW, DVD-RAM), holography storage systems, blue laser disks, IBM Millipede devices and the like. 
         [0066]    The terminal/display interface  116  directly connects one or more display units  199  to the computer system  100 . These display units  180  may be non-intelligent (i.e., dumb) terminals, such as a cathode ray tube, or may themselves be fully programmable workstations used to allow IT administrators and users to communicate with the computing system  100 . Note, however, that while the interface  116  is provided to support communication with one or more displays  180 , the computer systems  100  does not necessarily require a display  180  because all needed interaction with users and other processes may occur via network interface  118 . 
         [0067]    The communications medium may be any suitable network or combination of networks and may support any appropriate protocol suitable for communication of data and/or code to/from multiple computing systems  100 . Accordingly, the network interfaces  118  can be any device that facilitates such communication, regardless of whether the network connection is made using present day analog and/or digital techniques or via some networking mechanism of the future. Those skilled in the art will appreciate that many different network and transport protocols can be used to implement the network. The Transmission Control Protocol/Internet Protocol (“TCP/IP”) suite contains suitable network and transport protocols. 
         [0068]    The computing system  100  in  FIGS. 1A-1C  is depicted with multiple attached terminals  180 , such as might be typical of a multi-user “mainframe” computer system. In such a case, the actual number of attached devices is typically greater than those shown in  FIG. 1A , although the present invention is not limited to systems of any particular size. The computing systems  100  may alternatively be a single-user system, typically containing only a single user display and keyboard input, or might be a server or similar device which has little or no direct user interface, but receives requests from other computer systems (clients). One exemplary computing system  100  is the IBM Power® platform running the i5/OS® multitasking operating system, both of which are available from International Business Machines Corporation of Armonk, N.Y. However, those skilled in the art will appreciate that the methods, systems, and apparatuses of the present invention apply equally to any computing system  100  and operating system combination, regardless of whether one or both of the computer systems  100  and terminals  180  are complicated multi user computing apparatuses, a single workstations, lap-top computers, mobile telephones, personal digital assistants (“PDAs”), video game systems, embedded computer systems, appliances, tablet computer, pocket computer, telephone, pager, automobile, teleconferencing system, appliance, or any other appropriate type of electronic device, or the like. 
         [0069]    Although the present invention has been described in detail with reference to certain examples thereof, it may be also embodied in other specific forms without departing from the essential spirit or attributes thereof. For example, those skilled in the art will appreciate that the present invention is capable of being distributed as a program product in a variety of forms, and applies equally regardless of the particular type of computer-readable signal bearing medium used to actually carry out the distribution. Examples of tangible, computer-readable signal bearing media include, but are not limited to: (I) read-only storage media (e.g., read only memory devices (“ROM”), CD-ROM disks readable by a CD drive, and Digital Versatile Disks (“DVDs”) readable by a DVD drive); (ii) writable and rewriteable storage media (e.g., floppy disks readable by a diskette drive, CD-R and CD-RW disks readable by a CD drive, random access memory (“RAM”), and hard disk drives). Examples of communication signal bearing media include, but are not limited to: (i) computer networks, such as those implemented using “Infiniband” or IEEE 802.3x “Ethernet” specifications; (ii) telephone networks, including cellular transmission networks; and (iii) wireless networks, such as those implemented using the IEEE 802.11x, IEEE 802.16, General Packet Radio Service (“GPRS”), Family Radio Service (“FRS”), and Bluetooth specifications). Those skilled in the art will appreciate that these embodiments specifically include computer software downloaded over the Internet. 
         [0070]    The present invention may also be embodied part of a service engagement with a client corporation, nonprofit organization, government entity, internal organizational structure, or the like. Aspects of these embodiments may include configuring a computer system to perform, and deploying software, hardware, and web services that implement, some or all of the methods described herein. Aspects of these embodiments may also include analyzing the client&#39;s operations, creating recommendations responsive to the analysis, building systems that implement portions of the recommendations, integrating the systems into existing processes and infrastructure, metering use of the systems, allocating expenses to users of the systems, and billing for use of the systems. These service engagement embodiments may be directed at providing complete manufacturing solutions, to providing only information services, or some combination thereof. 
         [0071]    The accompanying figures and this description depicted and described embodiments of the present invention, and features and components thereof. Those skilled in the art will appreciate that any particular program nomenclature used in this description was merely for convenience, and thus the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature. Thus, for example, the routines executed to implement the embodiments of the invention, whether implemented as part of an operating system or a specific application, component, program, module, object, or sequence of instructions could have been referred to as a “program”, “application”, “server”, or other meaningful nomenclature. Indeed, other alternative hardware and/or software environments may be used without departing from the scope of the invention. Likewise, reference to “the invention” shall not be construed as a generalization of any inventive subject matter disclosed herein and shall not be considered to be an element or limitation of the appended claims except where explicitly recited in a claim(s). Therefore, it is desired that the embodiments described herein be considered in all respects as illustrative, not restrictive, and that reference be made to the appended claims for determining the scope of the invention.