Reject Function

Certified Senior Developer

Hi,

Im new to using reject function. 

Now im using the reject function in a process model in a script task 

In the input : I am calculating a map which looks like this : 

{

   id : <>,

   account : <account_cdt(id, name, hold_code)> 

}

Now in the output tab I want to use reject function to reject all those accounts who have hold codes null ... but then my requirement is that the ID should remain in the output

I am using reject function like this : 

reject(

fn!isnull(_),

    a!forEach(

          items : ac!map,

          expression : {

                 id : fv!item.id,

                 holdCodes : index(index(fv!item, "account"), "hold_code")

          }

   )

)

Now I know this wont work, but can anyone suggest me how to make it work ? 

  Discussion posts and replies are publicly visible

Parents
  • I don't understand the purpose of removing holdCode from the cdt if it is null and only show the account id in that case.

    But if I can understand the requirement correctly then you will be wanting to implement it as follows:

    a!localVariables(
      local!map: {
        a!map(
          id: 1,
          account: 'type!{urn:com:appian:types:PA}PA_accountTemp'(id: 1, name: "test", holdCode: "")
        ),
        a!map(
          id: 2,
          account: 'type!{urn:com:appian:types:PA}PA_accountTemp'(id: 1, name: "test1", holdCode: "abcd")
        ),
        a!map(
          id: 3,
          account: 'type!{urn:com:appian:types:PA}PA_accountTemp'(id: 1, name: "test2", holdCode: "")
        )
      },
      a!forEach(
        items: local!map,
        expression: if(
          isnull(
            index(fv!item, "account", "holdCode", null)
          ),
          updatedictionary(
            fv!item,
            { account: { id: fv!item.account.id } }
          ),
          fv!item
        )
      )
    )

Reply
  • I don't understand the purpose of removing holdCode from the cdt if it is null and only show the account id in that case.

    But if I can understand the requirement correctly then you will be wanting to implement it as follows:

    a!localVariables(
      local!map: {
        a!map(
          id: 1,
          account: 'type!{urn:com:appian:types:PA}PA_accountTemp'(id: 1, name: "test", holdCode: "")
        ),
        a!map(
          id: 2,
          account: 'type!{urn:com:appian:types:PA}PA_accountTemp'(id: 1, name: "test1", holdCode: "abcd")
        ),
        a!map(
          id: 3,
          account: 'type!{urn:com:appian:types:PA}PA_accountTemp'(id: 1, name: "test2", holdCode: "")
        )
      },
      a!forEach(
        items: local!map,
        expression: if(
          isnull(
            index(fv!item, "account", "holdCode", null)
          ),
          updatedictionary(
            fv!item,
            { account: { id: fv!item.account.id } }
          ),
          fv!item
        )
      )
    )

Children