Content controls for business data connectivity
January 20th, 2015 by JasonSometimes, Word is a natural way for people to interact with back end applications (eg SAP).
This is particularly so when:
- business data will be output to a Word document,
- the user is more familiar with Word than the other system,
- certain data updates may be required (and are permitted)
So maybe there are 4 high level categories:
- apps which support commercial transactions (a recipient will receive a Word document), eg
- employment onboarding (letter of employment)
- invoicing
- apps with a reporting component: is the report format a natural interface if it was made bi-directional?
- workflow/BPM systems which present documents (work orders, proposals, approvals etc)
- policy/procedures in regulated industries, where a worker must follow a series of steps. Can present that in a docx; the worker can tick the steps off as they do them
- related training scenarios?
Microsoft had an emphasis on what they then called “Office Business Applications” back around the Office 2007 launch. Fast forward to today, and “business connectivity services” are part of SharePoint.
But you can achieve the same sort of thing without SharePoint, using docx4j and data bound content controls.
Once you have your back end data in an XML format (and there are many tools/techniques to help with this), you can use content controls to bind what the user sees in Word to elements in that XML.
The beauty of it is that the binding is bi-directional, so if the user edits the document, the XML is updated (ie it stays in synch).
After the user has made their edit, you can update the back end application. Typically, you’d do this after they saved & closed the document (ie outside Word, using docx4j), but you could also do it from within Word (a less good approach, but still, an option).
What if there is some data which the user shouldn’t be able to edit? You simply lock the content control to prevent editing.
To quickly try out this approach, put together some sample XML, then upload it as explained here, to get a docx you can experiment with.
We’d loved to hear about how you might use this approach?