I have a temporary schema that has a bunch of normal attributes and a memo element. When I use xtk.session.Write with an XML object, the attributes update fine, but the memo element (IrMessage) is blank. Any idea how to template in an XML element in the JS?
<!-- Key Fields -->
<attribute label="Workflow Id" length="32" name="workflowId" notNull="true" required="true"
type="string"/>
<attribute label="Service Order Id" length="12" name="serviceOrderId" notNull="true"
required="true" type="string"/>
<attribute label="Switch Document Id" length="20" name="switchDocumentId" notNull="true"
required="true" type="string"/>
<!-- data fields -->
<attribute label="EDM Link" length="256" name="edmLink" type="string"/>
<attribute label="bit.ly code" length="12" name="bitly" type="string"/>
<element label="IR Message" name="IrMessage" type="memo"/>
<attribute label="IR Description" name="IrDescription" type="string"/>
writeRecord: function ( data ) {
try{
xtk.session.Write(
<TempData xtkschema="ori:TempData"
_operation="insert"
_key="@switchDocumentId,@serviceOrderId,@workflowId"
switchDocumentId={data.switchDocumentId}
serviceOrderId={data.serviceOrderId}
workflowId={vars.thisWorkflowId}
edmLink={data.edmLink}
bitly={data.bitly}
IrDescription = {data.IrDescription}>
<IrMessage>{data.IrMessage}</IrMessage>
</TempData>);
} catch (e) {
logError("Something bad happened in writeRecord: " + e);
}
}
Solved! Go to Solution.
Views
Replies
Total Likes
Managed to do it via sqlExec, but interested to know why the above xtk.session.Write method wouldn't work
try {
sqlExec("insert into oritempdata (sbitly,sedmLink,sIrDescription,mIrMessage,sswitchDocumentId,sserviceOrderId,sworkflowId) values ('" + data.bitly + "','" + data.edmLink + "','" + data.IrDescription + "','" + data.IrMessage + "','" + data.switchDocumentId + "','" + data.serviceOrderId + "','" + vars.thisWorkflowId + "');");
} catch (e) {
logError("Something bad happened in writeRecord: " + e);
}
Views
Replies
Total Likes
Managed to do it via sqlExec, but interested to know why the above xtk.session.Write method wouldn't work
try {
sqlExec("insert into oritempdata (sbitly,sedmLink,sIrDescription,mIrMessage,sswitchDocumentId,sserviceOrderId,sworkflowId) values ('" + data.bitly + "','" + data.edmLink + "','" + data.IrDescription + "','" + data.IrMessage + "','" + data.switchDocumentId + "','" + data.serviceOrderId + "','" + vars.thisWorkflowId + "');");
} catch (e) {
logError("Something bad happened in writeRecord: " + e);
}
Views
Replies
Total Likes
Try xtk.persist.Write(). The sqlExec() call needs special access right and is not as safe/user-friendly- cf your example code where there aren't bind variables or even input escape, so a ' in IrDescription will crash the script.
Views
Replies
Total Likes
Views
Replies
Total Likes
Hi @Darren_Bowers,
Came across the same recently and in case we just want to avoid the sqlExec from rights and security pov, the following approach works.
Just tried pass this as an child element instead as an attribute. Got some inspiration by looking at the "Edit XML" of the data in console.
writeRecord: function ( data ) {
try{
xtk.session.Write(
<TempData xtkschema="ori:TempData"
_operation="insert"
_key="@switchDocumentId,@serviceOrderId,@workflowId"
switchDocumentId={data.switchDocumentId}
serviceOrderId={data.serviceOrderId}
workflowId={vars.thisWorkflowId}
edmLink={data.edmLink}
bitly={data.bitly}
IrDescription = {data.IrDescription}>
<IrMessage><![CDATA[your text here]]</IrMessage>
</TempData>);
} catch (e) {
logError("Something bad happened in writeRecord: " + e);
}
}
Thanks,
Deb
Views
Replies
Total Likes
Views
Likes
Replies