David wrote an
article on the BEA site,
that, to its credit, confronts the issue (and IMO, mistaken assumption of so many);
that the Web is for humans. He writes;
It turns out that humans are pretty darned smart. We can figure out a variety of interactions such as:
* How to enter usernames and passwords into different pages
* When to stop waiting for a page to return and resubmit the request
* When timed out of a site, how to reenter data and get to the right pages
* How to enter an e-mail address in a Web form, and then switch over to the e-mail client to view the resulting e-mail message
* What ordering (or flow) of Web pages to go through to achieve a task
Dave’s correct that humans are pretty darned smart, and also when he
later suggests that machine-to-machine integration requires additional
standards because of this. But he’s mistaken if he believes (and I know
he does 8-) that this requires disregarding REST’s
uniform interface constraint.
Allow me to run through that list to demonstrate …
How to enter usernames and passwords into different pages. For the
specific case of user names & passwords, the Web already has a
standard for that. For the more
general case of entering any data, I agree that a standard is missing. That’s why
I developed RDF Forms, but
something like WIDL could also be
used.
When to stop waiting for a page to return and resubmit the request. I
can’t imagine a scenario where you’d need a standard for this. If the system were
stateless, then time is immaterial. I would expect that what is most important
would be that when you do resubmit, that the expectation about invocation
semantics are explicit, e.g. “once and only once”, “idempotent”, “safe”, etc… I
agree that standardization is required here
(though not as much as you
might expect).
When timed out of a site, how to reenter data and get to the right pages.
This sounds like a combination of the previous two, but I should also mention that
RDF Forms uses “link metadata” (i.e. type information adorning a hyperlink, such
as <PurchaseOrder rdf:about=”http://…”/>) that can be used by automata to
“get to the right pages”.
How to enter an e-mail address in a Web form, and then switch over to the e-mail
client to view the resulting e-mail message. Much like the first one above regarding
data entry, but I’m not sure what “switch over to the e-mail client” means; surely my automata
isn’t going to be using the Outlook GUI/app, it’ll be using some email client library
or an HTTP proxy to an MTA.
What ordering (or flow) of Web pages to go through to achieve a task.
That’s where “hypermedia as the engine of application state” comes in, as hypermedia
is your application model. Link metadata is key here too; I talked about this in
“Hypermedia Workflow”.
But I do think some more standardization is required, specifically in the
area of link metadata describing useful workflow abstractions such as rendezvous
(none of the RESTful integration work I’ve done has required a workflow component
other than vanilla hypermedia, so I can’t say with certainty what needs to be
standardized).
Thanks to Dave for mentioning this, because it’s been such a long standing
assumption that most Web services proponents would consider it unworthy of
discussion.