how can I prepopulate the fields of current task with previous completed task details

Certified Associate Developer

how can I prepopulate the fields of current task with previous completed task details?

  Discussion posts and replies are publicly visible

Parents Reply Children
  • 0
    Certified Lead Developer
    in reply to sireesha
    Can I get an expression rule to retrieve the specific fields only from data store entity.

    a!queryEntity has the capability to specify the particular fields you want returned, when all you want is a subset of available fields.  What have you tried?

  • You're welcome.

    This will retrieve all the fields:



    For more info, please check: https://docs.appian.com/suite/help/23.1/fnc_system_a_queryentity.html

    Also , please vote up and verify the answer as correct, in order iit will be helpful for other user in the community.


    Thanks

    Rómulo

  • 0
    Certified Associate Developer
    in reply to Rómulo

    Thank you so much Romulo,

    Now I can retrieve the data so to prepopulate the same thing I have placed it in value parameter. when I open the form the previous data is prepopulating so I wanted it to change to something more with the existing data .so when I am doing that the form refreshes automatically and the modified data is not visible in the form.so how can I get rid of this could you please help me?


    label: "comments",
    labelPosition: "ABOVE",
    value: rule!T_EX(name:ri!expensedetails.name),
    saveInto: {ri!expensedetails.comments},
    refreshAfter: "UNFOCUS",
    required: true,
    height: "MEDIUM",
    validations: {},
    showWhen: ri!hra=true,

  • +1
    Certified Senior Developer
    in reply to sireesha

    This is not how this should be configured.

    You need to save the result of expression rule called inside value parameter in a localVariable and then use that variable in value and saveInto also to store the updated value in the same variable so that the updated value reflects as a display value.

    Please try updating your code with the below code.

    a!localVariables(
      local!data: rule!T_EX(name: ri!expensedetails.name),
      a!paragraphField(
        label: "comments",
        labelPosition: "ABOVE",
        value: local!data,
        saveInto: { local!data, ri!expensedetails.comments },
        refreshAfter: "UNFOCUS",
        required: true,
        height: "MEDIUM",
        validations: {},
        showWhen: ri!hra
      )
    )

  • 0
    Certified Associate Developer
    in reply to Sanchit Gupta (Xebia)

    Thank you very much Sachin Gupta,

    It was helpful,Sorry to trouble you again

    Does it works when there are two local variables 

    saveInto: {if(rule!APN_isBlank(local!repeatedinternalcomment),
                      (local!internalComment,
                      a!save(
                        ri!internalComment,
                        'type!{urn:com:appian:types:ISR}ISR_StudyComment'(
                          commentId: if(
                            rule!APN_isBlank(ri!internalComment.commentId),
                            {},
                            ri!internalComment.commentId
                          ),
                          comment: local!internalComment,
                          isInternal: true(),
                          reviewStage: cons!ISR_TEXT_REVIEWSTAGE_CODE_MEDIREV,
                          isActive: true(),
                          createdBy: loggedInUser(),
                          createdOn: now(),
                          updatedBy: loggedInUser(),
                          updatedOn: now()
                        )
                      )),
                      (local!repeatedinternalcomment,
                      a!save(
                        ri!internalComment,
                        'type!{urn:com:appian:types:ISR}ISR_StudyComment'(
                          commentId: if(
                            rule!APN_isBlank(ri!internalComment.commentId),
                            {},
                            ri!internalComment.commentId
                          ),
                          comment: local!repeatedinternalcomment,
                          isInternal: true(),
                          reviewStage: cons!ISR_TEXT_REVIEWSTAGE_CODE_MEDIREV,
                          isActive: true(),
                          createdBy: loggedInUser(),
                          createdOn: now(),
                          updatedBy: loggedInUser(),
                          updatedOn: now()
                        )
                      )))
                    },
    could you please help me
  • +1
    Certified Senior Developer
    in reply to sireesha

    Please use the insert code feature to paste the code.

    Not sure what you are trying to do here but I think the syntax should be like this.

    saveInto: if(
      rule!APN_isBlank(local!repeatedinternalcomment),
      {
        local!internalComment,
        a!save(
          ri!internalComment,
          'type!{urn:com:appian:types:ISR}ISR_StudyComment'(
            commentId: if(
              rule!APN_isBlank(ri!internalComment.commentId),
              {},
              ri!internalComment.commentId
            ),
            comment: local!internalComment,
            isInternal: true(),
            reviewStage: cons!ISR_TEXT_REVIEWSTAGE_CODE_MEDIREV,
            isActive: true(),
            createdBy: loggedInUser(),
            createdOn: now(),
            updatedBy: loggedInUser(),
            updatedOn: now()
          )
        )
      },
      {
        local!repeatedinternalcomment,
        a!save(
          ri!internalComment,
          'type!{urn:com:appian:types:ISR}ISR_StudyComment'(
            commentId: if(
              rule!APN_isBlank(ri!internalComment.commentId),
              {},
              ri!internalComment.commentId
            ),
            comment: local!repeatedinternalcomment,
            isInternal: true(),
            reviewStage: cons!ISR_TEXT_REVIEWSTAGE_CODE_MEDIREV,
            isActive: true(),
            createdBy: loggedInUser(),
            createdOn: now(),
            updatedBy: loggedInUser(),
            updatedOn: now()
          )
        )
      }
    )

  • 0
    Certified Associate Developer
    in reply to Sanchit Gupta (Xebia)

    Thanks you so much everything was worked out.Thanks alot

  • 0
    Certified Associate Developer
    in reply to Sanchit Gupta (Xebia)

    Hi Sanchit,

    I am trying to auto populate some details in the field reviewer, By following the below code I am able to populate the data from the previous task .

    But my question is if I didnt made any changes in the prepopulated data it was not saved into the db.How can I savethe prepopulated data as it is into DB?

    Many thanks in advance

     local!BCreviewer:rule!ISR_toget_BC_Reviewer(ISR_Studyrequest: ri!studyRequest.studyRequestId),
     
     value: if(rule!APN_isBlank(local!BCreviewer),ri!studyMedicalReview.BCReviewedBy,local!BCreviewer)
     saveInto: if(rule!APN_isBlank(local!BCreviewer),ri!studyMedicalReview.BCReviewedBy,(local!BCreviewer,ri!studyMedicalReview.BCReviewedBy)),

  • +1
    Certified Lead Developer
    in reply to sireesha

    You will need to make sure the value you want ends up being populated into your Rule Input CDT.

    If you know the value in advance and can evaluate the expression that originally populates it, earlier (as in prior to the form being reached), one method is to pre-populate the CDT before the first task is reached.

    However if you're just referring to a value pre-populated on the second task, then I'm unclear why the value isn't already stored in your PV CDT that you're passing into the second form.  If it is, then you shouldn't necessarily need to re-initialize it on that form and shouldn't need to mess with the local variable at all.

    Finally, one of the simplest and most standard ways to store the value captured in the local variable into the rule input CDT field, upon form submission (regardless of the answer to the above question), is to use an a!save() statement in the saveInto of the Submit button, and copy the local variable's value into the correct field.  I try to reserve this method for when it's truly necessary and won't add unnecessary complexity.

    It's hard to judge here without being able to take your full code into context... but I'd suggest revising a few things here...

    a!localVariables(
      
      /* instead of multiple messy if(isNull()) statements, simply do that check here, then only use this local variable until Submit time */
      local!BCreviewer: a!defaultValue(
        value: ri!studyMedicalReview.BCReviewedBy,
        default: rule!ISR_toget_BC_Reviewer(ISR_Studyrequest: ri!studyRequest.studyRequestId)
      ),
    
      (...)
      
        value: local!BCReviewer,
        saveInto: local!BCReviewer,
      
      (...)
      
      primaryButtons: {
        a!buttonWidget(
          label: "Submit",
          submit: true(),
          
          saveInto: {
            ri!buttonPressed,
            
            a!save(
              ri!studyMedicalReview.BCReviewedBy,
              local!BCReviewer
            )
          }
        )
      }
    )

  • 0
    Certified Associate Developer
    in reply to Mike Schmitt

    Thank you so much for the reply Mike.

    I wanted to prepopulate some data to BCrevierwer for example  ABC  is the BC reviwer already stored in the table StudyMedicalReviewer to reference studyrequest ID.

    If we get the task for same studyRequest Id I need to have ABC as the BCreviwer for the requestId.If we want to change that name we can change too--this is the requirement

    a!localvariable{
    local!BCreviewer:rule!ISR_toget_BC_Reviewer(ISR_Studyrequest: ri!studyRequest.studyRequestId),
    //rule to get the BC reviwer from the table with reference studyrequest Id//
    
     a!sideBySideLayout(
              items: {
                a!sideBySideItem(
                  item: a!textField(
                    label: "Business Conduct Reviewer",
                    labelPosition: "ABOVE",
                    value: if(rule!APN_isBlank(local!BCreviewer),ri!studyMedicalReview.BCReviewedBy,local!BCreviewer),
                    saveInto: if(rule!APN_isBlank(local!BCreviewer),ri!studyMedicalReview.BCReviewedBy,(local!BCreviewer,ri!studyMedicalReview.BCReviewedBy)),
                    showWhen: if(
                      local!businessCounduct,
                      true(),
                      false()
                    ),
                    required: if(
                      ri!studyMedicalReview.decision = cons!ISR_TEXT_DECISION_MEDREVDEC_FRINFO_CODE,
                      false(),
                      true()
                    )
                  )
                ),
                a!sideBySideItem(
                  item: a!dateField(
                    label: "Business Conduct Reviewed On",
                    labelPosition: "ABOVE",
                    value: if(rule!APN_isBlank(local!BCrevieweddate),ri!studyMedicalReview.BCReviewedOn,local!BCrevieweddate),
                    //If the rule value is not there I mean if there is no reviewer for that studyRequestID then value goes to table// 
                    saveInto: if(rule!APN_isBlank(local!BCrevieweddate),{ri!studyMedicalReview.BCReviewedOn},{local!BCrevieweddate,ri!studyMedicalReview.BCReviewedOn}),
                
                    
                   
                  )
                )
              }
            ),

    I have write the above code. for example ABC is BC reviewer for study RequestId=2 then ,in the form BC reviewer is populated as ABC. if we keep that ABC without editing then it wont saved into the DB again with the same StudyRequestID.If I made it to ABCD then it will saved into DB.

    So how can I save the prepopulated data without editing into the table again with same studyrequest id=2

    Could please help me?

    Many thanks in advance