Table of Contents |
---|
From the point of view of the user interface, most web applications can be thought of simply as CRUD (Create, Retrieve, Update & Delete) operations on documents. In the diagram below, the form is being used to initially display a Customer and Order and then to update them. If you think in REST terms, the form is a View Resource that composes multiple Entity Resources (in this case a Customer Resource and an Order Resource), displays their current state and allows you to update them.
provides frevvo provides a very flexible and powerful mechanism for interacting with documents (and the web in general).
Integrating with HTTP Servers via Form & Document Actions
can frevvo can POST form or workflow data to your web server for processing. There are two options available Form Action Post and Doc Action Post. The difference between the two is that the Form Action POST displays the response from the web server to the user whereas the Doc Action POST does not.
...
HTTP Wait-Notify is a step, configured with a post url, that can be added to a workflow. The workflow data is posted to this url when the task is executed. A call-back url is included in the post. The workflow and task are suspended until the receiver posts back.
...
For each Document Type that you add to your form, permits frevvo permits you to assign
- a document URI Template resolved either using query parameters or form fields.
- a Read method and
- a Write method.
...
Resource | Method | Description | Returns |
---|---|---|---|
Customer List | GET | List of customers (may be criteria-based) | XML list of customers |
Customer List | POST | Create new customer | URI of newly created customer |
Customer | GET | Get customer data | XML representation of customer |
Customer | PUT | Update customer | |
Customer | DELETE | Remove customer |
...
That's it. As usual, you access the form using its URl. When the form is used (instantiated), you may specify one or more query parameters along with the URI. For this example, we might use a URI and query parameter: .../form/1234?customer=02. will frevvo will resolve the URI template above to: .../customers/02, GET the customer, and display the initialized form. When the form is submitted, will frevvo will automatically PUT the customer document to the same URI thereby updating the customer. The diagram below shows the interactions.
...
Consider the case where a form is used to create a new customer. Follow the same steps above, except use the appropriate URI template .../customers and change the Read method to POST. That's it. As usual, you access the form using its URl . When the form is used (instantiated), will frevvo will perform the POST and create the customer. It will then follow the server redirect (to the URI of the newly new customer) and display the form. When the user enters customer information and submits the form, will frevvo will automatically PUT the resulting XML document to the URI of the newly created customer resource thereby updating it. The diagram below shows the interactions:
...
The form has a Customer document and we have specified URI template .../customers/{customer} and Read method GET. In this form, there is a control which that has Type ID 'customer' as shown in the figure below.
If you enter a value in this control, will frevvo will automatically resolve the URI template using the new value and attempt to GET a new document. If it succeeds, the form will be initialized with the new document and all relevant control values will automatically update. In the example above, try changing the value to 03 or 04. Notice how the customer information fields change to reflect the new document that is being edited by the form.
If you enter an ID that does not exist, the GET will fail (return an empty document or a 404 HTTP status code). In this case, will frevvo will automatically revert back to the default document with default values as specified by the designer.
...
For example, if you enter ID 03, will frevvo will GET .../customers/03, display the form with fields initialized from the returned XML document and PUT the modified XML document to the same URI when the form is submitted. This PUT will update the customer with ID 03.
If you enter ID 99 (which does not exist), will frevvo will GET .../customers/99, which returns an empty document. The form will be displayed with default values (as entered originally by the designer). When submitted, the resulting XML document will be PUT to .../customers/99. This PUT will create a new customer with ID 99 (the behaviour behavior depends on the implementation on the server - in our example, the PUT creates the customer).
Example
The database frevvo database connector is a working example of a restful service. You can Download the database connector which comes with source code. Refer to the db connector tutorial to see how this restful service is used.
...
Forms and workflows can be initialized by an XML document. This is most commonly done when the form is created from an XSD data source but can also be used with forms created from from frevvo's palette controls. The most common method is to connect the XML document to the form via the form's doc action and manually set document URls wizard.
...
In addition to chaining multiple forms with common data sources from XSD together via the Form Action Post as described above, it is also possible to write a servlet or other web code that does a Post request with a form Url to the Form the frevvo Form Server. This request can also be coded to contain an XML document. If the XML document conforms to and is in the same namespace as one of the form's documents (either from-scratch palette controls or from XSD schema datasource), then the Form Server will use that XML document to initialize the form's fields.
...