Updating an Existing Property on Workflow vote

Hello,

After a user votes on a workflow, I want to update an existing property (_conversation_history). The code below is what I am using.

It appears that the code is generating the correct string in the variable (newconvo)), but it is not updating the property on the item?

Innovator inn = this.getInnovator();
Item controlledItem = this.apply("GetControlledItem");
if (controlledItem.isError()) {
return inn.newError("smc_TechInquiry_Notifications: Retrive Workflow: Unexpected error: " + controlledItem.getErrorString());
}
// get the message from requestor and reply to requestor

string messagefrom = controlledItem.getProperty("_message_from_requestor", "");
string replyTo = controlledItem.getProperty("_reply_to_requestor", "");
string history = controlledItem.getProperty("_conversation_history","");

string newconvo = history + " " + messagefrom + " " + replyTo;

string message = controlledItem.getPropertyCondition("_conversation_history");
this.setProperty("_conversation_history",newconvo);

return this;

Thank you for your help!

  • I don´t see any "apply" in your code. You set the Property, but only to the temporary context. You don´t seem to use edit/apply to actually save your new value. 

    And I see a second problem. As far as I understand you want to update your history value:

    You use this line to get the value:

    string history = controlledItem.getProperty("_conversation_history","");

    But that line to update the value:

    this.setProperty("_conversation_history",newconvo);

    In your context "this" represents the "Activity" item while controlledItem represent your change process. 
    I am not sure if controlledItem.setProperty in combination with edit/apply would work, cause the controlled item is something generated by the helper function. But you can give it a try. 

    If it doesn´t work, get the id of the controlledItem and do a direct edit of the Change process.

  • Using setProperty on an item does not inherently apply that change to the database. In this case, you are hoping to update the controlledItem, so you could update that item for an edit, then set the property, and apply.

    controlledItem.setAction("edit");
    controlledItem.setProperty("_conversation_history",newconvo);
    controlledItem.apply();