On Tue, 20 Oct 2009 07:26:02 +0000, jpardol wrote:
> We are creating a CI 8.47 to PeopleSoft Financial, and we have a
> problem.
Financials? Usually it's the HR system that people integrate with IDM.
> The new CI are creating based on PSA as designed. But in the PSA, all
> fields used are single-valued (ratio 1 to 1), such as the name. But we
> may need to also manage the roles, and do not know how to treat them
> because the relationship would be "N to N" and the exchange of
> information is made from the stage table
The PeopleSoft driver and CI can handle multi-valued attributes without a
problem. The PeopleSoft people here refer to them as "scroll" values, if
I recall correctly. They don't actually get put in the staging table,
though. All that goes in there is the EMPLID, the timestamp, and the
status. The driver queries, via the CI, for the data it needs.
> and we do not know how to
> reflect these roles "N" in the stage table to be a variable number,
> because not all users have the same number of roles asigned.
You'll get a "scroll" value of the roles. You'll have to parse it and do
something meaningful with the results. What do you intend to do with
these roles?
Here's a sample of what I'm talking about. Our CI kicks out up to four
types of phone numbers, in a <modify> document it looks like:
<modify-attr attr-name="PERSONAL_PHONE">
<add-value>
<value>
<component name="PHONE_TYPE">MAIN</component>
<component name="PHONE">815/753-1000</component>
</value>
<value>
<component name="PHONE_TYPE">BUSN</component>
<component name="PHONE">815/753-1000</component>
</value>
<value>
<component name="PHONE_TYPE">CELL</component>
<component name="PHONE">815/753-1000</component>
</value>
</add-value>
</modify-attr>
and the DirXML Script to turn this in to something useful is:
<rule>
<description>Flattening view of Phone Scroll (modify)</description>
<conditions>
<and>
<if-operation mode="case" op="equal">modify</if-operation>
<if-op-attr name="PERSONAL_PHONE" op="available"/>
</and>
</conditions>
<actions>
<do-trace-message>
<arg-string>
<token-text xml:space="preserve">Flattening view of Phone Scroll
(modify)</token-text>
</arg-string>
</do-trace-message>
<do-if>
<arg-conditions>
<and>
<if-xpath op="true">modify-attr[@attr-name='PERSONAL_PHONE']/add-
value/value/component[@name='PHONE_TYPE']/text()='MAIN'</if-xpath>
</and>
</arg-conditions>
<arg-actions>
<do-set-dest-attr-value name="homePhone">
<arg-value>
<token-xpath expression="modify-attr[@attr-name='PERSONAL_PHONE']/
add-value/value/component[@name='PHONE_TYPE'][text()='MAIN']/../component
[@name='PHONE']/text()"/>
</arg-value>
</do-set-dest-attr-value>
</arg-actions>
<arg-actions/>
</do-if>
<do-if>
<arg-conditions>
<and>
<if-xpath op="true">modify-attr[@attr-name='PERSONAL_PHONE']/add-
value/value/component[@name='PHONE_TYPE']/text()='BUSN'</if-xpath>
</and>
</arg-conditions>
<arg-actions>
<do-set-dest-attr-value name="Telephone Number">
<arg-value>
<token-xpath expression="modify-attr[@attr-name='PERSONAL_PHONE']/
add-value/value/component[@name='PHONE_TYPE'][text()='BUSN']/../component
[@name='PHONE']/text()"/>
</arg-value>
</do-set-dest-attr-value>
</arg-actions>
<arg-actions/>
</do-if>
<do-if>
<arg-conditions>
<and>
<if-xpath op="true">modify-attr[@attr-name='PERSONAL_PHONE']/add-
value/value/component[@name='PHONE_TYPE']/text()='CELL'</if-xpath>
</and>
</arg-conditions>
<arg-actions>
<do-set-dest-attr-value name="mobile">
<arg-value>
<token-xpath expression="modify-attr[@attr-name='PERSONAL_PHONE']/
add-value/value/component[@name='PHONE_TYPE'][text()='CELL']/../component
[@name='PHONE']/text()"/>
</arg-value>
</do-set-dest-attr-value>
</arg-actions>
<arg-actions/>
</do-if>
<do-if>
<arg-conditions>
<and>
<if-xpath op="true">modify-attr[@attr-name='PERSONAL_PHONE']/add-
value/value/component[@name='PHONE_TYPE']/text()='PGR'</if-xpath>
</and>
</arg-conditions>
<arg-actions>
<do-set-dest-attr-value name="pager">
<arg-value>
<token-xpath expression="modify-attr[@attr-name='PERSONAL_PHONE']/
add-value/value/component[@name='PHONE_TYPE'][text()='PGR']/../component
[@name='PHONE']/text()"/>
</arg-value>
</do-set-dest-attr-value>
</arg-actions>
<arg-actions/>
</do-if>
<do-strip-op-attr name="PERSONAL_PHONE"/>
</actions>
</rule>
--
---------------------------------------------------------------------------
David Gersic
dgersic_@_niu.edu
Novell Knowledge Partner
http://forums.novell.com
Please post questions in the newsgroups. No support provided via email.