Jos Nieuwenhuis


Dynamisch aanpassen waarde in XREF tabel

Primary keys zijn behoorlijk statisch; een waarde verandert normaal gesproken nooit. Als er toch een omnummeractie plaatsvindt kun je daarmee rekening houden in de XREF tabel. In een project heb ik meegemaakt dat het aantal posities van een medewerkernumer op een gegeven moment werd gewijzigd. Het aantal voorloopnullen werd aangepast zodat het totale aantal posities voor alle medewerkers identiek werd. Onderstaande code past een eventueel gewijzigde waarde in de XREF tabel:

 
<xsl:variable name="value-a" select="corecom:Identification/corecom:ID/text()"/>
<xsl:variable name="value-b" select="number($value-a)"/>
<xsl:variable name="xref_a"
	select="xref:lookupXRef('WORKER_EMPLOYMENTID','A_01',$value-a, 'A_01', false())"/>
<xsl:variable name="xref_b"
	select="xref:lookupXRef('WORKER_EMPLOYMENTID','B_01',$value-b, 'B_01', false())"/>
<xsl:variable name="dummy">
 <xsl:choose>
   <xsl:when test="string-length($xref_a) = 0 and string-length($xref_b) = 0">
	<!-- nieuw, dus create en link -->
	<xsl:value-of select="xref:populateXRefRow('WORKER_EMPLOYMENTID','COMMON',$value-a,'A_01',$value-a,'ADD')"/>
	<xsl:value-of select="xref:populateXRefRow('WORKER_EMPLOYMENTID','COMMON',$value-a,'B_01',$value-b,'LINK')"/>
   </xsl:when>
   <xsl:when test="string-length($xref_a) = 0 and string-length($xref_b) > 0">
	<!-- omgenummerd, dus update -->
	<xsl:value-of select="xref:populateXRefRow('WORKER_EMPLOYMENTID','SVS_01',$xref_b, 'A_01',$value-a,'UPDATE')"/>
   </xsl:when>
   <xsl:when test="string-length($xref_a) >0 and string-length($xref_b) = 0">
	<!-- sleutel in a bestaat al, in b nog niet,  dus link -->
	<xsl:value-of select="xref:populateXRefRow('WORKER_EMPLOYMENTID','AFAS_01',$xref_a,'B_01',$value-b,'LINK')"/>
   </xsl:when>
  </xsl:choose>
</xsl:variable>
Datum: 13 april 2012 - BPEL

Geen reacties

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.