john-boyer
Submitted by administrator on Sat, 04/24/2010 - 00:27.
A customer asked me recently how they could use XForms constructs to create a form that dynamically populates a table with available products that can be ordered based on selection of a product provider. In this case, the customer also wanted to have the product order list be editable once provided, allowing the user to delete rows or even to add more rows to the product order table initially provided for the selected store. Seemed like another good example for the blog.
So, suppose you have a main data instance for a form that looks something like this:
<xforms:instance id="data" xmlns=""> <data> <storeID></storeID> <products> <store> <product name="" code="" cost="0" qty="0" total="0"/> </store> </products> <total>0</total> </data> </xforms:instance>
Each product has a name, code, and cost, and the end-user will indicate the quantity of the product they desire. The above data corresponds to showing an empty table until the user chooses a "storeID". Here is the XForms user interface markup for showing a four column table having as many rows as there are "product" elements in the data.
<xforms:repeat nodeset="products/store/product" id="orderTable"> <xforms:group ref="."> <xforms:input ref="@name"> <xforms:label>Product Name</xforms:label> </xforms:input> <xforms:input ref="@cost"> <xforms:label>Unit Cost</xforms:label> </xforms:input> <xforms:input ref="@qty"> <xforms:label>Desired Quantity of Product</xforms:label> </xforms:input> <xforms:input ref="@total"> <xforms:label>Calculated Line Total</xforms:label> </xforms:input> </xforms:group> </xforms:repeat>
Initially, the table will have just one row of four user interface elements containing essentially empty or zero values. However, now lets hook up something that allows us to pick a store ID so we can fill the table with an initial order of products. Now, it would be reasonable in a full form application to obtain the list of stores from a web service and then get the starting list of products for the selected store from another web service. Getting data from web services is not an important but orthogonal point, so in this mock-up, I'm going shorten all of that down to just having the data available in a format that looks like this:
<xforms:instance id='storeLists' xmlns=""> <stores> <store ID="A"> <product name="Widget" code="W1" cost="3.50" qty="0" total="0"/> <product name="Gadget" code="G1" cost="4.25" qty="0" total="0"/> <product name="Trinket" code="T1" cost="2.75" qty="0" total="0"/> </store> <store ID="B"> <product name="Gadget" code="G1" cost="4.25" qty="0" total="0"/> <product name="Gromet" code="G2" cost="3.50" qty="0" total="0"/> </store> <store ID="C"> <product name="Widget" code="W1" cost="3.50" qty="0" total="0"/> <product name="Trinket" code="T1" cost="2.75" qty="0" total="0"/> <product name="Gromet" code="G2" cost="3.50" qty="0" total="0"/> <product name="Sprocket" code="S1" cost="1.99" qty="0" total="0"/> </store> <store ID="D"> <product name="Locket" code="L1" cost="9.50" qty="0" total="0"/> <product name="Pocket" code="P1" cost="1.50" qty="0" total="0"/> <product name="Rocket" code="R1" cost="7.50" qty="0" total="0"/> <product name="Sprocket" code="S1" cost="1.99" qty="0" total="0"/> <product name="Socket" code="S2" cost="2.49" qty="0" total="0"/> </store> </stores> </xforms:instance>
The user is provide the ability to select a store using the "select1" control, and the list of stores can be easily picked up from the data using an "itemset". Once the user makes a choice, an "xforms-value-changed" event on the select1 could be used to run a web service to get the product list, but here we'll just mock that up with an "insert" because the data is already available:
<xforms:select1 ref="storeID" appearance="minimal"> <xforms:label>Choose a store</xforms:label> <xforms:itemset nodeset="instance('storeLists')/store"> <xforms:label ref="@ID"/> <xforms:value ref="@ID"/> </xforms:itemset> <xforms:action ev:event="xforms-value-changed"> <xforms:delete nodeset="instance('data')/products/store" at="1"/> <xforms:insert context="instance('data')/products" origin="instance('storeLists')/store[@ID = instance('data')/storeID]"/> </xforms:action> </xforms:select1>
The "ref" on the select1 tells where to store the resulting store selection. The "nodeset" on the itemset tells where to get the list of stores from. The "ref" attribute on the xforms:label in the itemset tells what to show for each item in the list of choices, and the "ref" xforms:value tells what to store in the data ("storeID" due to the ref on select1) when a particular list choice is selected.
The "xforms-value-changed" event handler recognizes when a selection has been made, since that results in a value change on the "storeID" data node. The delete action gets rid of any preceding list, and then the insert action copies the list of products for the selected store into the main data. In particular notice that the XPath predicate in the origin attribute selects a store element to copy based on the store element's ID attribute matching the selected store identity placed in the storeID element by the value change behavior of the select1.
Once this insert occurs, the xforms:repeat is automatically responsive to the change of the data. It generates a four column row of user interface controls for each of the inserted product elements. For example, if the user picks store A, then they get three rows for Widgets, Gadgets and Trinkets. If they then pick store D, the form automatically adjusts to five rows for Lockets, Pockets, Rockets, Sprockets and Sockets.
Once the table content has been set with the product list for a particular store, the user may choose to add or delete rows from the table. Here is an additional instance that would be used to store the data prototype for a product:
<xforms:instance id='proto' xmlns=""> <prototypes> <product name="" code="" cost="0" qty="0" total="0"/> </prototypes> </xforms:instance>
A button to add a row to the repeat table would trigger the addition using the following XForms markup:
<xforms:trigger> <xforms:label>Add Item</xforms:label> <xforms:action ev:event="DOMActivate"> <xforms:insert context="products/store" nodeset="product" at="index('orderTable')" position="after" origin="instance('proto')/product"/> <xforms:setfocus control="orderTable"/> </xforms:action> </xforms:trigger>
This simply inserts a product prototype, obtained via the origin attribute, into the location defined by the context and nodeset attributes at a position corresponding to the row of the table that current has the input focus. When the data is inserted, the repeat table automatically generates another four-column row of user interface elements to allow the user to interact with the new data.
Similarly, a button to delete a row from the repeat table would trigger the deletion using the following XForms markup:
<xforms:trigger> <xforms:label>Delete Item</xforms:label> <xforms:action ev:event="DOMActivate"> <xforms:delete context="products/store" nodeset="product" at="index('orderTable')"/> <xforms:insert context="products/store" at="1" position="before" origin="instance('proto')/product" if="count(instance('data')/products/store/product)=0"/> <xforms:setfocus control="orderTable"/> </xforms:action> </xforms:trigger>
This simply deletes the product data element corresponding to the row of the table that currently contains the input focus. The row of user interface elements that presented this data is automatically deleted. As the next step of the action script, if the product list data becomes empty due to the prior delete, a new empty product prototype is inserted. The repeat table then presents one row of interface elements, so this extra insert ensures the user is never left with an unsightly empty table.
Last but not least, the actions scripts of both of the triggers above end with an xforms:setfocus action. This is because pressing a button, be it to add or delete an item from a table, transfers focus to the button. That's just how the web works. But the user's focus is not really on the buttons; those are just tools. The user's focus is on changing the table, so it is a better user experience to push the focus back to the repeat table.
Submitted by administrator on Mon, 01/04/2010 - 19:47.
As we start off the business of a new decade, I already find myself looking forward to the improvements in XForms 1.2.
I know, I know, we just released the XForms 1.1 Recommendation, which contained a huge bundle of new features and architectural improvements. Still, the working group has been energetically advancing on still more features and improvements even as we closed the loop on the W3C process in the latter half of last year. I am very pleased with the completion of XForms 1.1, but the only constant is change, and we have an excellent array of new technical results to achieve in XForms.
The working group has put a fair bit of effort into the triage of features to separate nearer term (and simpler) objectives from those features of a more architecturally significant nature, which tend to get put in the "XForms 2.0" bucket.
My personal favorite "simple" feature is model-based UI switching with the switch element. This may seem like a bit of a nerdy thing to perseverate on, but the switch element is the only UI control we have that is not directly controllable by a UI binding to data. So, if a form author wants to switch UIs based on a user input, such as changing the payment details UI based on the selection of a payment, then the form author typically resorts to using group elements and the relevant model item property. But this is more than just the sense of completion we'll get from being able to say *all* UI controls can be declaratively linked to data. And it's more than just the satisfaction we'll get from providing the right tool for the job. The ability to declaratively link the state of a switch to data is critical to the save/reload web application pattern and the transaction digital signature web application pattern.
Other web application standardization efforts are focused mainly on what happens during execution of a single web page. XForms-based technogies are a step ahead because they can more easily address the user patterns related to collaboration on the web. Whether it is one user saving an application context and reloading it again in the future, or whether one user provides data to be loaded by a second user, the simple fact remains that data can be in any state along a continuum between empty template and fully completed, so web applications need to be declaratively responsive to that continuum. And nowhere is this clearer than when a web-based transaction is of high enough value to warrant a digital signature. A digital signature needs to be able to capture the full current state of the web application, and having a declarative binding to the data is the easiest way to achieve that goal since it means one can simultaneously sign the web application page template(s) and the data as separate resources.
For the record, Lotus Forms has for a few years now used a legitimate XForms extension mechanism, the xfdl:state attribute, to support model-based switching. We deemed this extension critical to our ability to address our customers' requirements for the above two web application patterns. Standardized integration of XForms with XML Signatures and other advanced security features like XAdES is, so far, in the XForms 2.0 bucket.
In conclusion, I'm not necessarily saying this is the "biggest" feature of XForms 1.2, only that it is my fave. I'll be giving some coverage to the other XForms 1.2 features in future blog posts, so please click the 'follower' button above (top right) and stay tuned.
Submitted by administrator on Tue, 09/01/2009 - 23:20.
Ubiquity XForms version 0.7 is now available. In addition to contributing to the recent advancement of XForms 1.1 to Proposed Recommendation, this new version has many new features, fixes and highlights. Personally I'm happiest with the progress on implementing submissions, but that may be a bit of bias because I contributed some code to deal with aspects of submissions such as serialization, validation and relevance pruning. On the other hand, I contributed code in other areas, so maybe it's just that I'm biased toward any improvements to our ability to support the XRX architecture and connect the XForms client to server-side services.
In any case, there's lots of good core XForms features that have been added as well as noteworthy extension features. My personal favorites are the calendar and checkbox controls used for date and boolean type XForms inputs, the new map controls, and the very simple javascript function extension. Check out the loan-lowercase.html sample and its format.js file, for example.
And this blog entry would not be complete without my mentioning a special word of appreciation to the folks at webBackplane for all their contributions in general but especially for the Ubiquity XForms rollup system, which consolidates the many files of the processor into a single file to be deployed on your server. I have an internal project right now that uses the rollup, and it provides us with the high level of performance we expected/required in our applications.
Full details of the version 0.7 release can be found here: <http://code.google.com/p/ubiquity-xforms/wiki/Release0Point7>
Submitted by administrator on Fri, 08/14/2009 - 22:31.
The XForms 1.1 specification was approved for transition to Proposed Recommendation. Publication as a Proposed Recommendation is currently expected next Tuesday.
In order to achieve this transition, we presented a report of multiple implementations of XForms based on an expansive test suite, we presented the disposition of all formal comments received on the candidate recommendation, and we presented the important changes, which were those changes that the community would reasonably want to hear why they were not substantive deviations and were interoperably implementable.
Advancement to Proposed Recommendation essentially says we're "putting it to a vote" now. The member companies of W3C vote on advancement of XForms 1.1 to Recommendation, and they have until Sept. 22 to cast their votes. Based on the many significant improvements that have been made in XForms 1.1, and the rigorous standardization process we have followed, we are obviously quite optimistic about the outcome of the vote.
I am also especially pleased that both the IE7 and FF3 browser implementations of Ubiquity XForms were included in the implementation report.
Submitted by administrator on Thu, 07/30/2009 - 00:18.
Back in March, I wrote about the open standards basis of Lotus Forms documents. This entry included comments on the use of the XML Signatures standard in combination with XForms within the XFDL markup of Lotus Forms.
Now I'd like to draw your attention to a developerWorks article we've now published on the technical details of Verifying Lotus Forms XML Signatures with Java. This article explains how a JSR 105 compliant implementation, such as can be found in the Apache security library or in Java 6, can be used validate the XML signatures created by the Lotus Forms client software (either the Web Form Server or the client-side Forms Viewer plugin).
Generally, a Lotus Forms document consolidates the client-side of the business process function. This could be a many-step process for an individual or it could be a process that spans many individuals who are collaborating to perform a business transaction. Applying an XML signature on a Lotus Form protects the markup of the consolidated client experience, not just the transactional data created by users. Users don't "see" the XML markup of data for a transaction. They visually see (or aurally sense with accessibility software) the whole "contract" that gives context to the data content. An XML signature applied by Lotus Forms client software signs the whole agreement. The above mentioned article explains how open standards based software can be used to complete the server-side function of validating the XML signatures in order to secure the transactions of a business process. Since Lotus Forms are XML documents based on XForms, this means that the entire business process workflow on a Lotus Form can be achieved with open standards based software.
Submitted by administrator on Thu, 07/30/2009 - 00:18.
Back in March, I wrote about the open standards basis of Lotus Forms documents. This entry included comments on the use of the XML Signatures standard in combination with XForms within the XFDL markup of Lotus Forms.
Now I'd like to draw your attention to a developerWorks article we've now published on the technical details of Verifying Lotus Forms XML Signatures with Java. This article explains how a JSR 105 compliant implementation, such as can be found in the Apache security library or in Java 6, can be used validate the XML signatures created by the Lotus Forms client software (either the Web Form Server or the client-side Forms Viewer plugin).
Generally, a Lotus Forms document consolidates the client-side of the business process function. This could be a many-step process for an individual or it could be a process that spans many individuals who are collaborating to perform a business transaction. Applying an XML signature on a Lotus Form protects the markup of the consolidated client experience, not just the transactional data created by users. Users don't "see" the XML markup of data for a transaction. They visually see (or aurally sense with accessibility software) the whole "contract" that gives context to the data content. An XML signature applied by Lotus Forms client software signs the whole agreement. The above mentioned article explains how open standards based software can be used to complete the server-side function of validating the XML signatures in order to secure the transactions of a business process. Since Lotus Forms are XML documents based on XForms, this means that the entire business process workflow on a Lotus Form can be achieved with open standards based software.
Submitted by administrator on Mon, 06/22/2009 - 17:37.
Just ran across a good developerWorks article on Integrating Lotus Forms with Lotus Domino.
Domino is a web application and web services platform that is often used in combination with the Lotus Notes rich client platform. However, as this article shows, it is possible for Domino to have broader reach out to all web browsers without a large client-side installation. The intelligence and interactivity of XForms are combined with the high precision presentation layer of XFDL to describe a rich client experience, but the Lotus WebForm Server is used to convert that to HTML and AJAX that is natively understood by the web browser. The net result is that XML data processing and web services from Domino servers are extended right out to the webtop.
Of course, if you do have the Lotus Notes client platform installed, then the story gets better because the Notes replication capabilities can be brought to bear for when a user needs to work in offline/disconnected mode. You can also use the Notes Composite Application Framework to create mashups involving Lotus Forms and other application components deployed to the Notes client. Whether you use the Lotus Forms Viewer or the Lotus Forms WebForm Server to render a Lotus Form in Notes application component, you have access to a running Lotus Form using an API. This gives you getters and setters, of course, so you can push data from other components into the Lotus Form, but you can also set up event listeners that are notified of changes made within the Lotus Form, so you can push changes from the Lotus Form to any other component in your mashup.
But net-net, if you want to extend your Domino applications and services beyond the usual enterprise IT boundaries and get access to new B2C and G2C market opportunities, using Lotus Forms is a way to do it. See the new article for technical details.
Submitted by administrator on Mon, 06/22/2009 - 17:37.
Just ran across a good developerWorks article on Integrating Lotus Forms with Lotus Domino.
Domino is a web application and web services platform that is often used in combination with the Lotus Notes rich client platform. However, as this article shows, it is possible for Domino to have broader reach out to all web browsers without a large client-side installation. The intelligence and interactivity of XForms are combined with the high precision presentation layer of XFDL to describe a rich client experience, but the Lotus WebForm Server is used to convert that to HTML and AJAX that is natively understood by the web browser. The net result is that XML data processing and web services from Domino servers are extended right out to the webtop.
Of course, if you do have the Lotus Notes client platform installed, then the story gets better because the Notes replication capabilities can be brought to bear for when a user needs to work in offline/disconnected mode. You can also use the Notes Composite Application Framework to create mashups involving Lotus Forms and other application components deployed to the Notes client. Whether you use the Lotus Forms Viewer or the Lotus Forms WebForm Server to render a Lotus Form in Notes application component, you have access to a running Lotus Form using an API. This gives you getters and setters, of course, so you can push data from other components into the Lotus Form, but you can also set up event listeners that are notified of changes made within the Lotus Form, so you can push changes from the Lotus Form to any other component in your mashup.
But net-net, if you want to extend your Domino applications and services beyond the usual enterprise IT boundaries and get access to new B2C and G2C market opportunities, using Lotus Forms is a way to do it. See the new article for technical details.
Submitted by administrator on Fri, 06/12/2009 - 20:45.
Check out this developerWorks article for a step-by-step guide to deploying a DB2 web service and then consuming that web service using the Lotus Forms Designer.
Once the WSDL for a particular DB2 web service is pulled into your Lotus Forms Designer, you select and autogenerate a data instance and a specific service, drag-and-drop the data instance onto the design canvas to autocreate the user interface, and then generate the run-time XForms submission for the service. The article above shows exactly how to do each step.
A smart XForms client and a smart interface to the server database mean no custom code in the middle. Thus, computing power is made available to a broader class of IT knowledge workers who require only forms and database skills. Process democratization in action.
Submitted by administrator on Fri, 06/12/2009 - 20:45.
Check out this developerWorks article for a step-by-step guide to deploying a DB2 web service and then consuming that web service using the Lotus Forms Designer.
Once the WSDL for a particular DB2 web service is pulled into your Lotus Forms Designer, you select and autogenerate a data instance and a specific service, drag-and-drop the data instance onto the design canvas to autocreate the user interface, and then generate the run-time XForms submission for the service. The article above shows exactly how to do each step.
A smart XForms client and a smart interface to the server database mean no custom code in the middle. Thus, computing power is made available to a broader class of IT knowledge workers who require only forms and database skills. Process democratization in action.
Submitted by administrator on Fri, 06/05/2009 - 06:39.
Despite all the excitement about the possibilities that HTML5 offers for a better world wide web, I believe there is a critical flaw in the go-forward plan of those who are feeling the momentum.The problem is that they still haven't got ~80% of the web browser makers on board!By which I mean they haven't got you-know-who.
There's really only one way to break the loggerjam and move forward with advancing thestate of the web. We need to get you-know-who out of the way of progress by showingthat we can innovate on the web with or without their participation. We have now shown that this is feasible by way of the ubiquity strategy based on our abilityto deliver an interactive web application language in multiple web browsers with no client-side plugins and no server-side processing of the language. Click here to visit the project.
For all web advancement technologies, including HTML5, the longer term effect of the ubiquity strategy should be that the late bloomers are shamed into implementing the advancements, thereby obviating the need for the ubiquity code. But meanwhile the ubiquity strategy is the way to enable web advancement technologies including HTML5 to emerge (in the proactive verb sense of the word).
Submitted by administrator on Fri, 06/05/2009 - 06:39.
Despite all the excitement about the possibilities that HTML5 offers for a better world wide web,
I believe there is a critical flaw in the go-forward plan of those who are feeling the momentum.
The problem is that they still haven't got ~80% of the web browser makers on board!
By which I mean they haven't got you-know-who.
There's really only one way to break the loggerjam and move forward with advancing the
state of the web. We need to get you-know-who out of the way of progress by showing
that we can innovate on the web with or without their participation. We have now shown
that this is feasible by way of the ubiquity strategy based on our ability
to deliver an interactive web application language in multiple web browsers with no
client-side plugins and no server-side processing of the language.
Click here to visit the project.
For all web advancement technologies, including HTML5, the longer term effect of
the ubiquity strategy should be that the late bloomers are shamed into implementing the advancements,
thereby obviating the need for the ubiquity code. But meanwhile the ubiquity strategy is the
way to enable web advancement technologies including HTML5 to emerge (in the proactive
verb sense of the word).
Submitted by administrator on Sat, 05/30/2009 - 00:19.
So, I went to the movies recently and saw the new Dan Brown flick Angels and Demons. Probably not much of a spoiler to mention that the plot suspense is derived from the need to defuse an antimatter bomb placed somewhere in Vatican city, and everybody's favorite symbologist is called in to decipher the clues that may help lead to its location.
And they only have until midnight to find it. And the baddies are going to kill a Cardinal every hour before the big bang just to prove how serious they are.
As a taunt, the baddies provide a webcam view of the bomb, which is in a place lit by artificial light. So, someone in the story has the brilliant idea of shutting off the power around town until they see the lights go off where the bomb is located, and the law enforcement folks dutifully begin working through each section of the power grid in sequence.
This is the point where I had some difficulty maintaining a sense of edge-of-your-seat suspense. It seemed to me that they could find out where the bomb was located before the baddies killed their first Cardinal by turning off half the power grid, then a quarter, then an eighth, and so on just like a binary search. I managed to force myself out of this funk and enjoy the movie by convincing myself that nobody in the story would have reasonably known about a binary search, but the point remains that relying on the right algorithm can save you a lot of brute force work.
In the case of deciding whether to use an XForms-based solution or to hand-roll your own data-intensive web application with a pile of javascript to drive the client-side, it's the same issue really. Do you want to do a lot of brute force work yourself, or do you want to benefit from the topological sort algorithm built into the XForms computation engine? In a world of angels and demons, the declarative updating of XForms is like a get out of hell free card. The problem with the imperative approach of javascript is that it's process-based (step-by-step) whereas client-side usability is best served by a less structured, more free form experience. Users pick what they want to update and when, and the program has to be responsive to all permutations of their behavior. Better to let the machine figure out how to keep everything in synch. That's why we have machines.
Submitted by administrator on Sat, 05/30/2009 - 00:19.
So, I went to the movies recently and saw the new Dan Brown flick Angels and Demons. Probably not much of a spoiler to mention that the plot suspense is derived from the need to defuse an antimatter bomb placed somewhere in Vatican city, and everybody's favorite symbologist is called in to decipher the clues that may help lead to its location.
And they only have until midnight to find it. And the baddies are going to kill a Cardinal every hour before the big bang just to prove how serious they are.
As a taunt, the baddies provide a webcam view of the bomb, which is in a place lit by artificial light. So, someone in the story has the brilliant idea of shutting off the power around town until they see the lights go off where the bomb is located, and the law enforcement folks dutifully begin working through each section of the power grid in sequence.
This is the point where I had some difficulty maintaining a sense of edge-of-your-seat suspense. It seemed to me that they could find out where the bomb was located before the baddies killed their first Cardinal by turning off half the power grid, then a quarter, then an eighth, and so on just like a binary search. I managed to force myself out of this funk and enjoy the movie by convincing myself that nobody in the story would have reasonably known about a binary search, but the point remains that relying on the right algorithm can save you a lot of brute force work.
In the case of deciding whether to use an XForms-based solution or to hand-roll your own data-intensive web application with a pile of javascript to drive the client-side, it's the same issue really. Do you want to do a lot of brute force work yourself, or do you want to benefit from the topological sort algorithm built into the XForms computation engine? In a world of angels and demons, the declarative updating of XForms is like a get out of hell free card. The problem with the imperative approach of javascript is that it's process-based (step-by-step) whereas client-side usability is best served by a less structured, more free form experience. Users pick what they want to update and when, and the program has to be responsive to all permutations of their behavior. Better to let the machine figure out how to keep everything in synch. That's why we have machines.
Submitted by administrator on Mon, 04/27/2009 - 17:57.
Happy birthday to me!
Here's to XForms ubiquity;
In FireFox and IE.
Happy birthday to me!
But seriously folks, IBM is a proud sponsor and contributor to the Ubiquity XForms open source project, and the Lotus Forms team has exciting plans for capitalizing on the ability to have XForms support directly within a web page.
Gone is the distorting lens of limitations imposed by the fraction of language features that the dominating browser makers are prepared to support today. The Ubiquity movement is all about freeing us, as consumers of the interactive web, to express open standards for software that meets our customers' technical requirements and deploy our solutions directly to the web.
Gee, with all this birthday fun, the next thing I really ought to do is go on a Safari!
Submitted by administrator on Mon, 04/27/2009 - 17:57.
Happy birthday to me!
Here's to XForms ubiquity;
In FireFox and IE.
Happy birthday to me!
But seriously folks, IBM is a proud sponsor and contributor to the Ubiquity XForms open source project, and the Lotus Forms team has exciting plans for capitalizing on the ability to have XForms support directly within a web page.
Gone is the distorting lens of limitations imposed by the fraction of language features that the dominating browser makers are prepared to support today. The Ubiquity movement is all about freeing us, as consumers of the interactive web, to express open standards for software that meets our customers' technical requirements and deploy our solutions directly to the web.
Gee, with all this birthday fun, the next thing I really ought to do is go on a Safari!
Submitted by administrator on Thu, 03/26/2009 - 22:40.
A Lotus Form is a document currently expressed in an XML vocabulary called XFDL (html version, pdf version).
This is significant enough, in and of itself, to be set off in a paragraph. XML is a de facto industry standard from the W3C, and this means that widely deployed, interoperable, industry standard software toolkits can be used to introspect and manipulate the content of XFDL, i.e. Lotus Forms documents, thus mitigating issues of vendor lock-in.
But the story gets better...
The XFDL format internally employs W3C standard XForms, so without further reference to any vendor-specific documents, the standard indicates where in the XFDL document to look for the data content created by an end-user who fills in the Lotus Forms document. Anyone with access to a Java reference manual could write code to prepopulate data into an XFDL (Lotus Forms) document before it is delivered to an end-user, and they can write code to extract data from the document when it is returned to the server for processing.
But the story gets even better...
XFDL incorporates the W3C XML Signatures standard, so widely available industry standard tools are available from multiple vendors for validating the security of digital signatures in XFDL documents. In addition to the Apache XML Security implementation, it is notable that Java itself now natively contains support for XML Signatures (JSR 105).
These standards mean that the entire server-side lifecycle of the Lotus Form can be achieved without being locked into using any particular vendor's API. Any application server, any portal server, any server-side environment that can receive HTTP POSTs and process XML in the POST data can be used in combination with Lotus Forms.
And if you ever hear a vendor try to play up high availability of a client-side browser plugin for processing their favorite file format, ask them "Plugin?? What plugin??" With Lotus Forms, you don't need a browser plugin at all because the Lotus Forms Web Form Server converts the XFDL into dynamic HTML that can be processed directly by the browser with no plugins at all. Best of all, when the user finishes interacting with the Lotus Form, the resulting XFDL document is delivered to the application server endpoint, where it can be processed as XML using the standard APIs.
Submitted by administrator on Thu, 03/26/2009 - 22:40.
A Lotus Form is a document currently expressed in an XML vocabulary called XFDL (html version, pdf version).
This is significant enough, in and of itself, to be set off in a paragraph. XML is a de facto industry standard from the W3C, and this means that widely deployed, interoperable, industry standard software toolkits can be used to introspect and manipulate the content of XFDL, i.e. Lotus Forms documents, thus mitigating issues of vendor lock-in.
But the story gets better...
The XFDL format internally employs W3C standard XForms, so without further reference to any vendor-specific documents, the standard indicates where in the XFDL document to look for the data content created by an end-user who fills in the Lotus Forms document. Anyone with access to a Java reference manual could write code to prepopulate data into an XFDL (Lotus Forms) document before it is delivered to an end-user, and they can write code to extract data from the document when it is returned to the server for processing.
But the story gets even better...
XFDL incorporates the W3C XML Signatures standard, so widely available industry standard tools are available from multiple vendors for validating the security of digital signatures in XFDL documents. In addition to the Apache XML Security implementation, it is notable that Java itself now natively contains support for XML Signatures (JSR 105).
These standards mean that the entire server-side lifecycle of the Lotus Form can be achieved without being locked into using any particular vendor's API. Any application server, any portal server, any server-side environment that can receive HTTP POSTs and process XML in the POST data can be used in combination with Lotus Forms.
And if you ever hear a vendor try to play up high availability of a client-side browser plugin for processing their favorite file format, ask them "Plugin?? What plugin??" With Lotus Forms, you don't need a browser plugin at all because the Lotus Forms Web Form Server converts the XFDL into dynamic HTML that can be processed directly by the browser with no plugins at all. Best of all, when the user finishes interacting with the Lotus Form, the resulting XFDL document is delivered to the application server endpoint, where it can be processed as XML using the standard APIs.
Submitted by administrator on Sat, 02/21/2009 - 01:31.
Well, my frieds, it seems a good time to draw your attention to a collection of available resources that can help you understand how you and your customers can address a full spectrum computing requirements, from the enterprise information application all the way down to the simple design-deploy-collect-analyze pattern for situational applications that arise throughout the enterprise
First of all, check out the Lotus Forms Enablement videos on YouTube. There are videos that show Lotus Forms in action in government, financial, and HR scenarios where enterprise-level functionality is a must. But you can also see videos on the new Lotus Forms Turbo product, which enables business users to design and deploy simpler survey style forms for themselves in a matter of minutes.
I want to make a pitstop here to plug the value of the XForms standard in creating this array of products. XForms as a language has a strong declarative component. This means that non-trivial relationships between data and sophisticated interactional and presentational objects is simply declared by the form developer, and it is up to the form run-time system to enforce the relationships. This maps very naturally to how we human beings think and work. We say things like "Whenever I get an email from domain X, put it in my super special high priority folder". We don't directly write batch jobs that run loops over our inbox to categorize our email, and even if we did, the time at which those jobs would run would be specified declaratively! In fact, I don't think it's hyperbole to say that the universe itself operates mostly on declarative laws. Gravity just happens. If you let go something, it drops. It's the law; get used to it ;-).
The point is that the declarative language constructs of XForms are what enable Lotus Forms to accelerate enterprise-level application design, to enable end-user design of simpler applications, and to ensure interoperability between these two types of applications so that the simpler situational applications can be scaled up to the enterprise level as their value becomes more broadly established. The declarative constructs of XForms accomplish all of this due to the simple fact that it is far easier to create software that maps point-and-click/drag-and-drop design experience gestures onto high-level declarative language constructs than it is to map the same things onto huge blobs of imperative scripted code from a general purpose programming language.
And don't just take my word for it. When you finish watching some of the videos at the YouTube link above, how about going for a test drive? You can get free trial downloads of the Lotus Forms, including the client-side runtime and design environments. If you like the enterprise-level capabilities, but you don't want to deploy a client-side runtime, you can also purchase the Lotus Forms Web Forms Server, which translates Lotus Forms into standard web pages. But once you're in test-drive mode with the client-side runtime viewer, check out the Lotus Forms catalog of sample forms. Finally, you can also test drive the new offering for non-technical users directly, without having to install a thing by visiting Lotus Forms Turbo on Greenhouse, or if you'd prefer to test drive it in-house, then just download it from the free trial downloads page.
Either way, once you've gotten Turbo, see a couple of the videos then think of your own simple survey app. Design and deploy it right onto Greenhouse and see how long it doesn't take!
Submitted by administrator on Fri, 01/16/2009 - 01:26.
I'm about to start packing my bags to head out for Lotusphere 2009.
Sunday is Business Development Day (BDD), and I'll be presenting at the Futurists Panel on
Dual Forms: An open standard office document mashup for document-centric business processes,
and the broader context of Interactive Documents as Web 2.0 Applications.
I'm very pleased to be part of such an exciting panel, which also includes Mary Beth Raven (of Notes fame, speaking on task management) and
Mathew Flaherty (from the Lotus CTO's Office, speaking on the value of open source and open standards).
I've seen their talks in rehearsal of course, and they're well worth your time.
In addition to the talk above, the Lotus Forms team has quite a showing at the conference again this year. Here's a list of where you can find us and when:
Lotus Forms Exhibits (in Oceana, Mon. 10:30AM-8:00PM, Tue. 9:00AM-6:00PM, Wed. 9:00AM-5:00PM)
Meet the Lotus Forms Developers in the Labs (on the Showcase Floor in the Dolphin Exhibit Hall)
- Electronic Forms Ped #5
- DB2 and Lotus Forms at Ped #6
Business Development Day: Sunday, January 18
BDD 204, 8:45-9:45am
New Lotus Industry Solution-based Marketing & Sales Initiatives (will include Lotus Forms)
Click here to see full abstract
Speaker: Gary Dolsen
Location: Toucan 1 and 2, Swan Hotel
BDD102, 2:45-3:45pm
WebSphere Portal Product Family Applied to Real Business (will include Lotus Forms)
Click here to see full abstract
Speakers: Gary Dolsen & Jeffrey Seifert
Location: Pelican 1 and 2, Swan Hotel
Meet the Speakers/Product Experts Session
5:00-6:00pm
Location: Fantasia Garden Pavilion, Swan Hotel
Sessions & Other Related Activities:
The Client Reference Lounge: The IBM Client Reference team is hosting a
high-end hospitality suite as a way to say "Thank You!" to our client reference customers
and to invite potential reference customers to stop by and learn more about the program.
Open all week, this suite is available to you to hold customer meetings or to use as a respite.
Monday, January 19
1:00-2:00pm
AD 507: BPM Made Easy: Looking forward with Lotus Forms and the Business Process Accelerator
Click here to see full abstract
Location: SW 1-2
Presenters: Dave Manning, Tony Fiorot
2:15-3:15pm
ID604: What’s New in Lotus Forms
Click here to see full abstract
Location: SW 1-2
Presenters: Bob Levy, Dave Manning
3:45-4:45pm
IDR604R: What’s New in Lotus Forms
Click here to see full abstract
Location: SW 1-2
Presenters: Bob Levy, Dave Manning
Tuesday, January 20
7:15-8:15am
Partner Round Table: WebSphere Portal & Lotus Forms
Location: Swan, Dove hospitality suite (breakfast is included)
10:00-11:00am
Customer Panel: Succeeding with IBM WebSphere Portal
Speakers: Pat Kozak of C-Lock and Matt Garst (EIM)
Attend this panel session to hear directly from customers who have realized business
advantages through their WebSphere Portal and Business Process Acclerator implementations.
Learn how each approached their business requirements, organized investment value assessments
and technical strategies, and are now offering leading edge portal-based services. Hear their
insights on approaches that work well, lessons learned, and their plans for portal platform
expansions supporting future growth.
1:30-2:30pm
Portal and Related Products Networking Session
Location: Dolphin, Europe 5
During this time customers can mingle with subject matter experts in a relaxed atmosphere.
It is a great opportunity to thank the customers who contribute to our success.
Invite your customers to come to the reference room, meet Portal and Forms experts encourage
their participation in the reference program.
4:15-5:15pm
AD514: Composing a Mashup Application with IBM Lotus Forms
Click here to see full abstract
Location: SW 1-2
Presenters; Dave Manning, Dave Shepherd
Thursday, January 22
7:00-8:00am
BOF 107: Getting Started with IBM Lotus Forms Turbo
Location: SW Parrot 1
Presenter: Ricardo Rossi
For more information and free trial software for XML powered electronic forms web applications
using XForms, visit the Lotus Forms website today.
|