Appian Community and Appian Academy are being upgraded. From July 24–August 3, the Appian Community will be in read-only mode. During this time, the site will be read-only and user registration will be disabled. We apologize for any inconvenience this may cause, but a more secure, stable, and performant Community experience is coming soon!

The new Appian Community launches August 3, followed by Appian Academy on August 7. During the migration, Appian Community Edition, Appian Academy, Documentation, Certifications, Instructor-led Customer Training, Partner Sales Training & Accreditation, and Forum (for Appian Partners and Customers only) will remain available.

Using Json string instead of CDT in process model (long running)

Currently in our workflow, the processes are very long lived (approximately 300,000 active at a time). So, any change we make in the CDT won't get affected on the older processes. Which makes our job a little complex to write logic which is always backward compatible and sometimes we have to make compromise saying that the functionality will work for a new processes only.

Now we are on our way of redesigning our original process model that handles the workflow. Although we are leaning towards short lived processes, there are chances that few processes stays in the memory for a longer period of time.

So, mainly to avoid the CDT backward compatibility (that I mentioned above), we thought of using the JSON string wherever we were using the CDT in the process model. And we can always deJsonify that and get a dictionary using a!fromJson function in the interface/expression. And because the JSON is basically a text, if we change the structure (mostly adding/removing/updating an attribute), the process model won't require any changes.

Is above a good practice? Or using CDT is the preferred way to go. Sorry if there is already a discussion on it, in that case please point me to that thread.

Thanks!

  Discussion posts and replies are publicly visible

Parents
  • I agree with & :
    This is a creative idea.
    But, I would be concerned that you're inviting too much risk if you do this.

    As you noted, you're coping with a process maintenance consideration.
    That said, one of the last thing you want to do, where maintenance is concerned, is introduce extremely novel, or unorthodox design patterns. It's likely to make maintenance more difficult in the long run.
    If this were some sort of "silver bullet", it would likely have become fashionable a long time ago.

    If you suspect that your CDTs are going to be subject to frequent changes, you're on the right track to move towards short-lived processes. What can you do to eliminate the occurrence of of those few processes that stay alive too long?
Reply
  • I agree with & :
    This is a creative idea.
    But, I would be concerned that you're inviting too much risk if you do this.

    As you noted, you're coping with a process maintenance consideration.
    That said, one of the last thing you want to do, where maintenance is concerned, is introduce extremely novel, or unorthodox design patterns. It's likely to make maintenance more difficult in the long run.
    If this were some sort of "silver bullet", it would likely have become fashionable a long time ago.

    If you suspect that your CDTs are going to be subject to frequent changes, you're on the right track to move towards short-lived processes. What can you do to eliminate the occurrence of of those few processes that stay alive too long?
Children
No Data