The Fields tab is where you define the set of fields that can be used in a pull query or back order queue strategy. To get to the Fields tab of a List, double-click on the desired List in the Toolbox (if you haven't added a List you can add if from the button in the Toolbox). Then select the Fields tab.
Depending on the type of list you create, a default set of fields will be added. You can easily remove these fields by pressing the next to the field, and/or add your own if needed. The following image shows the default set of fields available for an item list.
Adding Fields
Click on the button for a list of available fields to add. The available add options will include, at a minimum, the following set of options.
- Expression - An expression field will evaluate a FlexScript function to retrieve the field's value. Enter the name you want to call the field in Expression Field. Then enter the expression directly in Expression, or use the buttons to the right of the edit to choose various options, sample for the desired value, or edit the code in a code window.
- Label - A label field will retrieve its value from the same-named label on the entry's value object. Enter the name of the label in Label Field. Note that this will only work if a list entry's value is an object reference, not a number or string.
- Push Argument - A push argument field is only used if you are manually pushing values onto the list using the listpush() command. The listpush() command allows you define additional arguments after the partition ID argument. In the Fields tab you add a Push Argument field, define its name and the number of the additional argument associated with the field. For example, if your listpush() call were: listpush("ItemList1", item, partitionID, up(item));, you could then add a push argument field, in Push Argument Field give it the name parentObject, and under Argument, enter 1, meaning the first additional argument after the partition ID of the listpush() command.
- age - The age field is a dynamic customized expression field that returns the amount of simulation time that has elapsed since the entry was added to the list.
- pushTime - The pushTime field is a customized expression field that returns the simulation time when the entry was added to the list.
Fields for Specific List Types
In addition to the standard set of fields, pressing the button will provide options specific to the type of list you are using. Note that all of these are just customized Expression fields. This means that if the given set of automatic fields don't fit your needs, you can easily view and customize the code associated with each field. Available add options may include the following:
Item List Fields
- itemType - The item type of the item.
- distance - This is the straight-line distance from the item to the puller object. Using in the case of item lists, the puller will be a FixedResource that is pulling from the list, trying to determine which item to receive next.
- queueSize - The size of the object that containers the item. For example, if the item is in a queue, this is the total number of items currently in the queue.
- ageInQueue - The time that has elapsed since the item first entered the object that currently contains it.
- totalAge - The time that has elapsed since the item was first created.
- meetsPullRequirement - Used in FixedResource pulling. This evaluates to 1 if the item satisfies the puller object's pull requirement.
Fixed Resource List Fields
- queueSize - The number of items currently in the Fixed Resource.
- distance - The straight-line distance from the Fixed Resource value to a puller object (usually an item).
- throughput - The throughput of the Fixed Resource.
- isIdle - 1 if the Fixed Resource's state is STATE_IDLE, 0 otherwise. Note that you may need to adjust this field based on the state profile of the objects that will be on the list. For example, Queues don't use STATE_IDLE as part of their state profile, so if Queues will be on the list, the expression may need to be adjusted.
Task Sequence List Fields
- priority - The priority value of the Task Sequence.
- preempt - The preempt value of the Task Sequence.
- distance - The travel distance from the puller Task Executer to the Task Sequence's first travel destination.
- isTransportTS - 1 if the Task Sequence is a standard transportation Task Sequence to move an item from one Fixed Resource to another, 0 otherwise.
- isUtilizeTS - 1 if the Task Sequence is a utilization Task Sequence, i.e. a Task Sequence to go and be utilized at a Processor object, 0 otherwise.
- loadToUnloadDistance - For transport Task Sequences, the straight-line distance from the point where item will be picked up to the point where the item will be dropped off.
- loadStation - For transport Task Sequences, the object that the item will be loaded from.
- unloadStation - For transport Task Sequences, the object that the item will be unloaded to.
- transportItem - For transport Task Sequences, the item that will transported.
Task Executer List Fields
- utilization - The non-idle state percentage of the Task Executer.
- totalTravel - The total travel distance of the Task Executer.
- distance - Assuming the puller is a Task Sequence, the travel distance from the Task Executer to the Task Sequence's first travel destination.
- queueSize - The number of items currently in the Task Executer.
- throughput - The Task Executer's current output.
- isIdle - 1 if the Task Executer's current state is idle, 0 otherwise.
- isPullerPreempting - Assuming the puller is a Task Sequence, 1 if the Task Sequence is preempting, 0 otherwise.
- pullerPriority - Assuming the puller is a Task Sequence, the priority value of the Task Sequence.
Dynamic Fields
Each field you add (except push arguments) can be a dynamic field by checking the Dynamic checkbox. A dynamic field is a field whose source value may change while an entry is on the List. While a non-dynamic field's value will be evaluated only once when the entry is added to the List, a dynamic field's value will be re-evaluated every time the list is queried with a pull request. For this reason, non-dynamic fields are faster in execution, but dynamic fields offer more power in querying lists whose source values may change. Also, all puller-dependent fields must be designated as dynamic.