Details
-
Type:
Improvement
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 2.1.3
-
Component/s: Development
-
Security Level: Public (Public: Anyone can view)
-
Labels:None
-
Rice Module:KRAD
-
Application Requirement:KC
-
KAI Review Status:Not Required
-
KTI Review Status:Not Required
Description
Maint Docs are persisting the whole object tree into the document content table and this appears to be unnecessary. Is there a way to limit the serialization of properties on the maintenance documents like there is for the transactional documents? If not, can a change be made in KRAD to make the serialization of properties smarter?
Here is my understanding of why <workflowProperties> is not being using to limit the serialization of maintenance documents. In case of maint docs on save, the business objects for the maintenance documents are serialized to XML. Once the document is enroute, and a user opens the doc back up the business object is deserialized from the XML representation stored in KRNS_DOC_HDR_T using XStream and set on the maintenance document. Once all approvals have been gathered against the document, the document is loaded from the database deserializing the business objects from the XML content stored on KRNS_MAINT_DOC_T and the doRouteStatusChangeEvent is invoked. Only when the document is processed does the business object get persisted into the db. Until then all the data incase of maint docs is kept on the XML. This is not the case with Transactional documents where the data is stored in intermediate tables until its processed.
https://wiki.kuali.org/display/KFSOLD/Specifying+Document+Properties+to+Serialize+for+Workflow+in+the+Data+Dictionary talks about how you can specify which properties you want to serialize. The document does say that </workflowProperties> can be used for both transactional as well as maintenance docs though I was not able to find an example where its being used in maintainence documents to specify multiple properties of a document in the rice codebase. The ones I found are serializing the main business object.
<workflowProperties>
<workflowPropertyGroup>
<workflowProperty path="oldMaintainableObject.businessObject" />
<workflowProperty path="newMaintainableObject.businessObject" />
</workflowPropertyGroup>
</workflowProperties>