I recently updated a CDT, which is referenced in a process model subprocess. The

I recently updated a CDT, which is referenced in a process model subprocess. The CDT is passed by reference to the subprocess.

Existing processes on my development server are now broken because they can't call the subprocess with the older version of the CDT. The error message reads: "The following process process parameters were of the incorrect type: ...". The newer version has minimal changes: I just updated the VARCHAR size of a text field.

I have never had issues like this before, even when adding new fields to a CDT. I am very concerned about pushing this build to our production server. Is this a problem with Appian 7.2? Is there any way I can fix the broken processes?...

OriginalPostID-71541

OriginalPostID-71541

  Discussion posts and replies are publicly visible

Parents
  • Hi Daniel, We've done a lot of versioning of CDTs over the last few years, and have as a result gone back through our workflows and removed most passing by reference because of the sorts of issues you are experiencing.
    If you instead passs the parameter by value on input and map it on output, you don't get the problem (in this case, Appian is smart enough to auto-convert most CDT changes).
    This is a shame, because you lose the benefits of by reference passing (performance / memory usage / simplicity). Given Appian can auto convert CDTs when passed by value, it would certainly be a good improvement if it also did it when passed by reference.
    There are still a few cases we use passing by reference, but only when we know the subprocess we are calling will ALWAYS return quickly (ie: has no user tasks, msg task, scheduled tasks, etc). That way their will never be running instances of them when you upgrade.
Reply
  • Hi Daniel, We've done a lot of versioning of CDTs over the last few years, and have as a result gone back through our workflows and removed most passing by reference because of the sorts of issues you are experiencing.
    If you instead passs the parameter by value on input and map it on output, you don't get the problem (in this case, Appian is smart enough to auto-convert most CDT changes).
    This is a shame, because you lose the benefits of by reference passing (performance / memory usage / simplicity). Given Appian can auto convert CDTs when passed by value, it would certainly be a good improvement if it also did it when passed by reference.
    There are still a few cases we use passing by reference, but only when we know the subprocess we are calling will ALWAYS return quickly (ie: has no user tasks, msg task, scheduled tasks, etc). That way their will never be running instances of them when you upgrade.
Children
No Data