Look at the activiti-sources… The form-rendering of the form-properties is extremely simple. You can easily extract the *FormPropertyRenderer and related classes and use that in your app. To add additional supported types (with your own UI to select e.g.. department), you just plug in an new FormPropertyRenderer.
Another approach would be to just use the StartFormData and TaskFormData you get back from our AOI and inspect the list of FormPropertiy instances and render a UI-element, based on the getType().