We're currently using the Salesforce.com Campaign Association cloud app to associated existing Leads and Contacts with campaigns, using various campaign member statuses to differentiate their engagement based on the actions they've taken (or not taken). Because we sometimes use several campaign canvases to move contacts through different workflows (i.e., supporting webinars, workshop offers, etc.) at the same time that they exist in nurture flows, we find that it is sometimes possible for a status of lesser value (i.e., Viewed) over-writing a higher-impact value (i.e., Workshop Requested), depending upon the most recent activity taken by the contact.
My initial thought was to "stack" a few Compare Custom Object Field decision rules to see (prior to passing through the Cloud App step) whether or not the contact is already associated with a particular campaign, and if so, whether or not they have a "stronger" status already. This approach is functional, but time- and resource-intensive, and prone to human error (if the person configuring the workflow neglects to consider "upstream" statuses, etc.).
So my short idea with a long preamble is this:
In the SFDC Campaign Association App, enable functionality that enables the step to evaluate whether or not the contact(s) flowing through it already have a campaign member status for the SFDC campaign in question and if so, whether or not the existing status should be updated with the status being effected in that step. This would allow "stronger" statuses attained earlier in a campaign to persist if present, while allowing "weaker" statuses to be ascribed if no previous association has been made, without the need for extraneous, error-prone decision steps in the canvas.