V8 Job Submit and Form Changes
4 min
The Web.Wizard controls the process that the user sees to enter the data to submit a Request. It is a combination of built-in pages and custom forms.
A typical Web.Wizard might look something like this.
- SelectUser
- SelectMultipleDL
- GenericConfirm
Versions V7 or older
Each page is shown, and when the user clicks next, the following happens:
- The user clicks on a button to start a new Request.
- A new Job is created in memory on the server for the specified Task.
- The first Page or Form is shown
- The user enters the data and then clicks Next
- Form data is sent to the server to process.
- This form data is used to bind to the ASP.NET controls
- These controls then update the Job Arguments in Memory on the server
- The next page is generated and shown to the user as HTML
- Repeat the process above until the user clicks 'Submit' on GenericConfirm
- The Job in memory is saved to the database where the Job Service picks it up and starts the Workflow.
Summary
- The Job is stored in session memory on the server
- This means it is possible to lose the job if the session times out
- The UI and Job can get out of sync if the user uses the Back button.
V8 or Newer
The process is quite different in mechanism.
- The user clicks on a button to start a new request.
- The server generates a JobViewModel for the first page
- This contains a JSON model of the Job and the first form to display.
- Job Model
- The Job is NOT stored on the server and only exists in the Model
- The Job in the model contains the arguments and a securityToken. This securityToken is a SHA256 Hash of the data in the Job.
- The Job data cannot be changed by the client and is sent back to the server to update.
- View Model - information required to display the form
- Form Controls
- Model
- The model contains the data that can be updated by the form.
- Bindings
- The bindings contain the mapping between the Form Controls -> Model -> ActivateBind
- The bindings controls the validation and the mapping between the Model and the Job ActivateBind statements.
- This also protected by a SHA256 hash and cannot be changed on the client.
- The client renders the Form Controls and displays the data from the model for each control.
- The user changes the Model by interacting with the controls.
- Submit the Form
- The Job, Model and Bindings are sent the server
- The Server validates the Model data for each binding and updates the Job with the new data.
- The server then returns the updated Job with the new View model for the next page.
- Submitting the Request
- The GenericConfirm page will update and validate the Job and then submit the Job to Activate Orchestrator for processing.
Key Differences
- The Job is never stored on the Web Server and only exists in the model and is stored in the history for each Page.
- If the user hits the back button the Job will be restored to the correct version for that page.
- Any changes made in 'future' pages are lost and the job is restored to a consistent state.