Over the last few years I've used Infopath from time to time to create a few nice simple forms. Mostly, for use as part of the development cycle or for nice quick and simple applications. I've been lucky in tht most of the organisations I've beed working with have Infopath installed throughout, so I havn't had to live with the limitations of the Web version. Even so, whenever anything complex comes along, the decision has always been to go with hand crafted applications as the requirement is beyond Infopaths functionality.
Thats just changed for me. I have been working on a more complex expenses based system and the initial thought was to use Infopath, even if this is just to help gather requirements, then code up in C#. However, as the complexity of the application grew, I started getting to grips with what you can actually achieve with Infopath and became more and more impressed. Let me give a ew examples:
- The form required lots of reference data to populate listboxes. Based on the selection of an employee list box, lots of employee information, location, manager, currency, etc, needed to be set in the XML based on the selected item.
- Expense items used various levels of cascading dropdown filters, starting with the expense type, which then limited the available categories, the selection of which limited the selection of cost centres, etc.
- An expense in non GBP currency required a call to a web service to get the exchange rate for the date of the expense.
- Business rules needed to be defined and enforced in a soft way. i.e. rules are defined in the Sharepint list, not by coding the form.
- All pretty common stuff, but my initial thoughts were that this could be done in Infopath but would require c# code behind. As I progressed I was suprised to see that everything could be achieved using rules and filters and no code was required. All in all, this resultd in a really good looking and complex form being created in a couple of days where I would expect a few weeks using ASP.NET....good saving. Plus there is the added advantage that as I am using no hand crafted code, the form itself should have less errors in testing, and the final win is the release and versioning process makes the change releae cycle far faster.
The flexibility and speed of this approach meant that I had a nice incremental development cycle working with the business users and could then concentate my coding on the workflows required to approve the forms and feed information into our back end financial and payroll systems.
Although I would still say that Infopath is only useful in certain business scenarios. If you find a good fit, but think that the requirements may be too complex for Infopath, I'd recommend giving it a more detailed look. It might save you a great deal of time and money in the long run.