Multi Valued attribute returning values as single String.

Hello All,

I am using Loop Back driver to send email notification to users when the roles assigned to them are about to expire. In the email I need to Publish Role CN, Expiry date and nrfRoleCategorykey (multi-valued attribute in the role). For each role I am fetching nrfRoleCategorykey value using query, as it is multi-valued attribute it is giving all the values as a single concatenated string without any delimiter example as below:
nrfroleCategoryKey: AlphaBetaDelta……. etc.
I want these values with some delimiter as (Alpha, Beta, Delta,...etc).

Below is the code i am using:

<do-set-local-variable name="varRoleCatogeryKey" scope="policy">
<arg-node-set>
<token-query class-name="nrfRole" datastore="src">
<arg-dn>
<token-global-variable name="RolesContainer"/>
</arg-dn>
<arg-match-attr name="CN">
<arg-value type="string">
<token-local-variable name="RoleName"/>
</arg-value>
</arg-match-attr>
<arg-string>
<token-text xml:space="preserve">nrfRoleCategoryKey</token-text>
</arg-string>
</token-query>
</arg-node-set>
</do-set-local-variable>
<do-set-local-variable name="varMultipleRoleCatKeys" scope="policy">
<arg-string>
<token-text xml:space="preserve"/>
</arg-string>
</do-set-local-variable>
<do-for-each>
<arg-node-set>
<token-local-variable name="varRoleCatogeryKey"/>
</arg-node-set>
<arg-actions>
<do-set-local-variable name="varMultipleRoleCatKeys" scope="policy">
<arg-string>
<token-local-variable name="varMultipleRoleCatKeys"/>
<token-text xml:space="preserve">,</token-text>
<token-local-variable name="current-node"/>
</arg-string>
</do-set-local-variable>
</arg-actions>
</do-for-each>
=======================================================================================
Part of Trace:

[05/31/17 11:35:23.732]:Loopback Driver Roles Exp Notification ST: Action: do-set-local-variable("varMultipleRoleCatKeys",scope="policy",token-local-variable("varMultipleRoleCatKeys") "," token-local-variable("current-node")).
[05/31/17 11:35:23.732]:Loopback Driver Roles Exp Notification ST: arg-string(token-local-variable("varMultipleRoleCatKeys") "," token-local-variable("current-node"))
[05/31/17 11:35:23.732]:Loopback Driver Roles Exp Notification ST: token-local-variable("varMultipleRoleCatKeys")
[05/31/17 11:35:23.732]:Loopback Driver Roles Exp Notification ST: Token Value: "".
[05/31/17 11:35:23.732]:Loopback Driver Roles Exp Notification ST: token-text(",")
[05/31/17 11:35:23.732]:Loopback Driver Roles Exp Notification ST: token-local-variable("current-node")
[05/31/17 11:35:23.732]:Loopback Driver Roles Exp Notification ST: Token Value: "AlphaBetaDelta".
[05/31/17 11:35:23.732]:Loopback Driver Roles Exp Notification ST: Arg Value: ",AlphaBetaDelta".
==============================================

current Node is returning value as "AlphaBetaDelta" .

Some one help me on this how to achieve these values as Alpha,Beta,Delta.



Regards,
Eswar
Parents
  • On 01.06.2017 13:34, ed00491298 wrote:
    >
    > Hello All,
    >
    > I am using Loop Back driver to send email notification to users when the
    > roles assigned to them are about to expire. In the email I need to
    > Publish Role CN, Expiry date and nrfRoleCategorykey (multi-valued
    > attribute in the role). For each role I am fetching nrfRoleCategorykey
    > value using query, as it is multi-valued attribute it is giving all the
    > values as a single concatenated string without any delimiter example as
    > below:
    > nrfroleCategoryKey: AlphaBetaDelta��. etc.
    > I want these values with some delimiter as (Alpha, Beta, Delta,...etc).


    use the join action for that:

    <do-set-local-variable name="list" scope="policy">
    <arg-string>
    <token-join delimiter=",">
    <token-local-variable name="varRoleCatogeryKey"/>
    </token-join>
    </arg-string>
    </do-set-local-variable>

    --
    Norbert
Reply
  • On 01.06.2017 13:34, ed00491298 wrote:
    >
    > Hello All,
    >
    > I am using Loop Back driver to send email notification to users when the
    > roles assigned to them are about to expire. In the email I need to
    > Publish Role CN, Expiry date and nrfRoleCategorykey (multi-valued
    > attribute in the role). For each role I am fetching nrfRoleCategorykey
    > value using query, as it is multi-valued attribute it is giving all the
    > values as a single concatenated string without any delimiter example as
    > below:
    > nrfroleCategoryKey: AlphaBetaDelta��. etc.
    > I want these values with some delimiter as (Alpha, Beta, Delta,...etc).


    use the join action for that:

    <do-set-local-variable name="list" scope="policy">
    <arg-string>
    <token-join delimiter=",">
    <token-local-variable name="varRoleCatogeryKey"/>
    </token-join>
    </arg-string>
    </do-set-local-variable>

    --
    Norbert
Children
  • Thank you all for your responses, Solution given by alex has worked and able to get the values as expected:)

    <do-set-local-variable name="varRoleCatogeryKey" scope="policy">
    <arg-node-set>
    <token-query class-name="nrfRole" datastore="src">
    <arg-dn>
    <token-global-variable name="RolesContainer"/>
    </arg-dn>
    <arg-match-attr name="CN">
    <arg-value type="string">
    <token-local-variable name="RoleName"/>
    </arg-value>
    </arg-match-attr>
    <arg-string>
    <token-text xml:space="preserve">nrfRoleCategoryKey</token-text>
    </arg-string>
    </token-query>
    </arg-node-set>
    </do-set-local-variable>

    <do-set-local-variable name="varMultipleRoleCatKeys" scope="policy">
    <arg-node-set>
    <token-text xml:space="preserve"/>
    </arg-node-set>
    </do-set-local-variable>

    <do-for-each>
    <arg-node-set>
    <token-xpath
    expression="$varRoleCatogeryKey//value[ancestor::*[@attr-name='nrfRoleCategoryKe
    y']]"/>
    </arg-node-set>
    <arg-actions>
    <do-set-local-variable name="varMultipleRoleCatKeys" scope="policy">
    <arg-node-set>
    <token-xpath expression="$varMultipleRoleCatKeys | $current-node"/>
    </arg-node-set>
    </do-set-local-variable>
    </arg-actions>
    </do-for-each>

    <do-set-local-variable name="varMultipleRoleCatKeys" scope="policy">
    <arg-string>
    <token-join delimiter=",">
    <token-local-variable name="varMultipleRoleCatKeys"/>
    </token-join>
    </arg-string>
    </do-set-local-variable>

    Br,
    Eswar.
  • Thank you for your confirmation, Eswar.

    Alex