I know that I can create a shape using elementFactory.createShape, but this is a pain in the ass. I would like to create a shape using xml and append it to the process.
For example, if I drag and drop a shape in palette, its xml is
<bpmn:task>
<bpmn:documentation> and many other tags</bpmn:documentation>
</bpmn:task>
Maybe you can use this to create what we call the business object from the XML. With that one in hand you may be able to create the element via ElementFactory#create.