Description
A line step can be Online or Offline validated. This is opposed to on posting (header steps)
Use case
- Tell the user instantly whether an input value is correct
- Return additional steps - based on the input
Limitations
- You will limit the Offline capability because a request is made for each order lines registration
There are two types of online validation
- Specific step validation (steps in stadard Workflows)
- Custom step validation
Specific step validation
Specific validation can be set up in the following steps from the "standard" workflow
- ToBin / FromBin
- Lot number
- Tote
- Serial number
- Quantity
Changes to mobile configuration
Add the "<validation>" tag in the service section, to enable the validators needed. Each required element needs to be enabled and have a document type set.
Besides that, the "includeCollectedValues" attribute dictates whether previously gathered steps should be added to the request
<service id="Pick" type="Order" orderType="Pick"> <validation> <lotNumberValidation online="true" documentName="ValidateLotNumber" includeCollectedValues="true"/> <serialNumberValidation online="true" documentName="ValidateSerialNumber"/> <fromBinValidation online="true" documentName="ValidateFromBin"/> <toBinValidation online="true" documentName="ValidateToBin"/> <toteValidation online="true" documentName="ValidateTote"/> <quantityValidation online="true" documentName="ValidateQuantity"/> </validation> </service>
The OnlineValidation Request
ItemNumber, lineNumber and orderBackendId are always included, followed by the step setup for validation, and previously gathered steps if setup to do so.
<?xml version="1.0" encoding="utf-8"?> <request name="ValidateLotNumber" created="2021-12-14T11:22:30+01:00" xmlns="http://schemas.microsoft.com/Dynamics/Mobile/2007/04/Documents/Request"> <requestData name="ValidateLotNumber"> <itemNumber>TF-003</itemNumber> <lineNumber>20000</lineNumber> <orderBackendId>RE000160</orderBackendId> <lotNumber>ScannedLotNumber</lotNumber> </requestData> </request>
The online validation responses should look as follows.
<?xml version="1.0" encoding="UTF-8"?> <response xmlns="http://schemas.microsoft.com/Dynamics/Mobile/2007/04/Documents/Response" messageid="07E64DA6-2335-40C1-83DB-5C40E3043083" status="Completed"> <responseData xmlns="http://schemas.taskletfactory.com/MobileWMS/BaseDataModel" /> </response>
If status is returned as Completed, then the application will take that as a positive response. Other status will be interpreted as an error, and will prevent the user from going forward.
Custom step validation
Generic step validation is a mechanism for validating any step in the workflow configuration, which does not have a specific validation element in the services section. This type of online validation still has the possibility to validate current step and any previous step if setup to do so.
Configuration is done inside the workflow, and looks as follows.
<workflow id="customWorkflow" itemNumberAI="01,02,91"> <configuration scanBehaviourWhenRegisteringQuantity="ScanNextItem" cancelBehaviour="Close" autoSave="false" fastForwardMode="InputAndScanValues"> <steps> ... <text id="23" name="CustomTextField" header="Custom Text Field"> <onlineValidation documentName="ValidateCustomTextField" online="true" includeCollectedValues="true"/> </text> <typeAndQuantity header="Type something" id="5" name="TypeAndQuantity" scanBehavior="Add"> <onlineValidation online="true" documentName="ValidateTypeAndQuantity" includeCollectedValues="true"/> </typeAndQuantity> ... </steps> </configuration> </workflow>
The request and response will look the same as the specific validation types.
Online validation response for Type and quantity
The generic online validator does have an extra feature when it comes to the TypeAndQuantity step stype, which allows the backend to return a new displayname for the scanned value.
So instead of e.g. displaying a serial number, the item number or a human readable name can be displayed on the control.
Notice that the display value (TypeDisplay) needs to contain all the information.
<?xml version="1.0" encoding="UTF-8"?> <response xmlns="http://schemas.microsoft.com/Dynamics/Mobile/2007/04/Documents/Response" messageid="28AEF07E-2629-46F4-B935-AB6207DC3FFC" status="Completed"> <responseData xmlns="http://schemas.taskletfactory.com/MobileWMS/BaseDataModel"> <TypeKey>TF-002</TypeKey> <TypeDisplay>TF-002 - Intense Orange</TypeDisplay> </responseData> </response>
Extended online validation functionality
Besides the capability to validate whether or not an entered value is accepted by the backend, several online validators also support returning additional information, and changing behaviour.
Returning a quantity
When utilizing lot or serial number validation, a quantity can be returned, which will be used as the quantity going forward.
Whether or not the user is allowed to edit the quantity can be set by the <ValueInteractionPermission> element.
ValueInteractionPermission can have three states.
- AllowEdit - Allows the user to edit the value in the quantity step.
- ApplyDirectly - Hides the quantity step all together.
- VerifyOnly - Disables the quantity step, allowing the user to see, but not edit it.
<?xml version="1.0" encoding="UTF-8"?> <response xmlns="http://schemas.microsoft.com/Dynamics/Mobile/2007/04/Documents/Response" messageid="EA9FD6AF-78C6-47DE-82CE-3EB789FAFE64" status="Completed"> <responseData xmlns="http://schemas.taskletfactory.com/MobileWMS/BaseDataModel"> <LotNumberInformation xmlns="http://schemas.taskletfactory.com/MobileWMS/WarehouseInquiryDataModel"> <Quantity>5</Quantity> <ValueInteractionPermission>ApplyDirectly</ValueInteractionPermission> </LotNumberInformation> </responseData> </response>
Returning registration collector steps
Available from v. 1.5.12
All specific online validators can return steps as part of the response to validation.
The response should look as follows:
<?xml version="1.0" encoding="UTF-8"?> <response xmlns="http://schemas.microsoft.com/Dynamics/Mobile/2007/04/Documents/Response" messageid="6972D4AF-1829-43FE-B0FB-C37B3249E689" status="Completed"> <responseData xmlns="http://schemas.taskletfactory.com/MobileWMS/BaseDataModel"> <registrationCollectorConfiguration xmlns="http://schemas.microsoft.com/Dynamics/Mobile/2007/04/Documents/Response"> <steps> <add inputType="Text" id="10" name="MyCustomStep1" autoForwardAfterScan="true" header="MySerialSteps1" defaultValue="" editable="true" optional="false" primaryInputMethod="Scan" /> <add inputType="Text" id="20" name="MyCustomStep2" autoForwardAfterScan="true" header="MySerialSteps2" defaultValue="" editable="true" optional="false" primaryInputMethod="Scan" /> </steps> </registrationCollectorConfiguration> </responseData> </response>
The registration collector configuration element can be combined with lot and serial number information elements, and should exist on the same xml node level.
Setting Serial Number Validation Level (optional)
When using Serial Number validation, you can also set the "ValidationLevel" for how restrictive to validating serial numbers.
<service id="Pick" type="Order" orderType="Pick"> <validation> <serialNumberValidation online="true" documentName="ValidateSerialNumber" validationLevel="Line"/> </validation> </service>
The levels are:
- Item: The same serial number can only be registered once per item, but multiple times across items.
- Line: A serial number can only be registered once per order line, but multiple times per order.
- Order (default): A serial number can only be registered once per order
Step 2: Handle validation in backend
Search and find an article describing how to enable OnlineValidation for your platform.