Search Results wms_rule_gen_pkgs




Overview

APPS.WMS_RULE_GEN_PKGS is an Oracle Warehouse Management (WMS) package that dynamically generates PL/SQL execution packages from rule definitions stored in the warehouse rules repository. It is an internal, non-shipped generator component: its header comment carries the ETRM "noship" designation, confirming that it is intended as a private service consumed by other WMS packages rather than by customer code. The package carries AUTHID CURRENT_USER, so all dynamic SQL and DDL it issues executes under the privileges of the calling schema, resolving unqualified object names through that caller's synonyms.

Its central purpose is to transform declarative rule metadata (rule type, source/destination location, task, label, cost group, operation and package type) into executable rule packages that the WMS engine then calls during putaway, picking and task execution. The package also maintains an in-memory/table-driven sequence of rule counts, guaranteeing that concurrently executing rule-generation sessions obtain non-conflicting package numbers.

Key Procedures and Functions

The metadata documents four callable units in the package specification:

  • GENERATERULEEXECPKS — the main entry point. It accepts the standard FND API conformance parameters (API version, initialization of the message list, validation level, and the return status/message count/message data out parameters) plus a set of selective filter arguments identifying the rule context: pick code, put code, task code, label code, cost group code, operation code and package type. Its business role is to read the matching rule definitions and generate or regenerate the corresponding execution packages.
  • UPDATE_COUNT — takes a rule type and a count value and persists the current sequence number for that rule type. This is the routine most commonly associated with the search term "update_count"; it advances the counter used when naming and tracking generated rule packages.
  • GET_COUNT_NO_LOCK — returns the current count for a rule type without acquiring a row lock. It is a read-only inspection call, appropriate for display or diagnostics where contention with a concurrent generator must be avoided.
  • GET_COUNT_WITH_LOCK — returns the count for a rule type after acquiring a lock on the counter row. This is the concurrency-safe variant used by the generator to serialize allocation of rule package numbers across sessions.

The specification also declares a PL/SQL associative array type, tbl_long_type, indexed by BINARY_INTEGER and holding LONG values, used internally to buffer large rule text during package construction.

Tables Accessed

Beyond the standard FND_ORACLE_USERID and DUAL references that support API plumbing and dictionary lookups, the package works against WMS_RULES_B (the base rule definition table, the source of rule metadata), WMS_RULE_LIST_PACKAGE (the mapping of rules to the execution packages produced), and ALL_OBJECTS (used to test for the existence of generated packages before create, replace or drop operations). It also relies on DBMS_SQL for dynamic SQL/DDL execution and on PLITBLM for LONG-to-VARCHAR2 conversion — a necessary step because rules stored as LONG columns cannot be manipulated directly in procedural code without this helper.

Usage Notes

Because WMS_RULE_GEN_PKGS is a noship utility, it should not be called directly from customer extensions. Within EBS 12.1.1 and 12.2.2 it is invoked from the warehouse rule setup and rule maintenance flows, typically when a user defines or changes an allocation, putaway, picking or task rule and the system must compile the corresponding execution package. The ETRM metadata records that it is referenced by three other packages, which are the supported callers. Administrators encountering "update_count" in a session or trace should read it as an internal counter-maintenance step of rule package generation, not as a user-facing transaction; diagnosis is best directed at concurrent rule-generation activity and at the WMS_RULE_LIST_PACKAGE entries it maintains.