Get Set External PVs Activity clears out data when process is using older version of the CDT

I have a related action that will make updates to fields in a CDT so I need to inform all active tasks of the change. We are currently using Set External PVs Activity to update active processes with the updated information. However, we recently made updates to the CDT which caused some processes to still use the older version of the CDT (indicated with ^version) and the Set External PVs Activity plug-in clears out the CDT data in the active processes instead of updating due to version incompatibility. 

Is there a way  I can cast an older version of the CDT to the newest version without things being cleared out? Or are there any other ways for me to tell the active processes that there was an update to the CDT?

  Discussion posts and replies are publicly visible

Parents
  • Unfortunately I do not believe we can cast to an older version of a CDT, and there are no services available to update running process instance CDT versions, neither Appian Process Upgrade or the IFM Manager plugin will update CDT versions for you.

    I ran into this exact situation one time with a Related Action that was used to pass similar updates, outside of the workflow, to the running process instance. After a CDT version change we noticed any updates to legacy instances would clear the values and there was no easy way to get them back.  I was able to utilize the IFM Manager (after some configuring..) to retrieve data from the DB and re-load the older process CDTs to bring things back online, but the Edit mechanism had to be shut down and modified.  That was enough to steer me away from ever passing entire CDTs across processes, even to sub processes.

    Thus, I typically use a mechanism in the process of having a "Refresh" loop from the Start Node, which waits until a boolean PV (say, pv!sys_refreshCdt) is set to true.  In the Edit process, handle the data write directly to the DB, then use the Set External PVs node to only set pv!sys_refreshCdt to true(), this will fire the script task which refreshes the CDT via a!queryEntity(), resetting the pv!sys_refreshCdt value to false (for future edits) - no passing CDTs required.  

Reply
  • Unfortunately I do not believe we can cast to an older version of a CDT, and there are no services available to update running process instance CDT versions, neither Appian Process Upgrade or the IFM Manager plugin will update CDT versions for you.

    I ran into this exact situation one time with a Related Action that was used to pass similar updates, outside of the workflow, to the running process instance. After a CDT version change we noticed any updates to legacy instances would clear the values and there was no easy way to get them back.  I was able to utilize the IFM Manager (after some configuring..) to retrieve data from the DB and re-load the older process CDTs to bring things back online, but the Edit mechanism had to be shut down and modified.  That was enough to steer me away from ever passing entire CDTs across processes, even to sub processes.

    Thus, I typically use a mechanism in the process of having a "Refresh" loop from the Start Node, which waits until a boolean PV (say, pv!sys_refreshCdt) is set to true.  In the Edit process, handle the data write directly to the DB, then use the Set External PVs node to only set pv!sys_refreshCdt to true(), this will fire the script task which refreshes the CDT via a!queryEntity(), resetting the pv!sys_refreshCdt value to false (for future edits) - no passing CDTs required.  

Children