1 |
52294
|
alessia.ba
|
#0. READ EVERYTHING BEFORE RUNNING ANY XUPDATE
|
2 |
52120
|
alessia.ba
|
#1. Take all transformation workflows and change the arc to select the currently non existing node "selectIncrementalTransformation"
|
3 |
|
|
|
4 |
|
|
for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType')
|
5 |
|
|
let $arc := $x[.//WORKFLOW_NAME='transform']/RESOURCE_PROFILE/BODY/CONFIGURATION/NODE[./@type='SetProviderInfo' and ./@isStart='true']/ARCS/ARC[./@to ='fetchOriginals']
|
6 |
|
|
return update value $arc/@to with 'selectIncrementalTransformation'
|
7 |
|
|
|
8 |
|
|
#2. Now we add the missing node just after the start node
|
9 |
|
|
|
10 |
|
|
for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType')
|
11 |
|
|
let $startnode := $x[.//WORKFLOW_NAME='transform']/RESOURCE_PROFILE/BODY/CONFIGURATION/NODE[./@type='SetProviderInfo' and ./@isStart='true']
|
12 |
|
|
return update insert
|
13 |
|
|
<NODE name="selectIncrementalTransformation" type="IncrementalTransformation">
|
14 |
|
|
<DESCRIPTION>Decide REFRESH/INCREMENTAL transformation</DESCRIPTION>
|
15 |
|
|
<PARAMETERS>
|
16 |
52390
|
alessia.ba
|
<PARAM required="true" type="string" name="operationType" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])">INCREMENTAL</PARAM>
|
17 |
52120
|
alessia.ba
|
</PARAMETERS>
|
18 |
|
|
<ARCS>
|
19 |
|
|
<ARC to="fetchOriginals"/>
|
20 |
|
|
</ARCS>
|
21 |
|
|
</NODE>
|
22 |
52294
|
alessia.ba
|
following $startnode
|
23 |
|
|
|
24 |
52390
|
alessia.ba
|
In case there are nodes with the wrong parameter name (transformationType instead of operationType), do not worry.
|
25 |
|
|
It is a left over from previous migration and you can fix it running this xquery:
|
26 |
52294
|
alessia.ba
|
|
27 |
|
|
for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType')
|
28 |
|
|
let $transNode := $x[.//WORKFLOW_NAME='transform']/RESOURCE_PROFILE/BODY/CONFIGURATION/NODE[./@type='IncrementalTransformation']
|
29 |
|
|
let $param := $transNode/PARAMETERS/PARAM[@name='transformationType']
|
30 |
|
|
return update value $param/@name with 'operationType'
|
31 |
|
|
|
32 |
|
|
NOTE: if there are already incremental workflows, the xupdate in #2. will screw them up
|
33 |
|
|
creating a duplicate IncrementalTransformation node that must be deleted.
|
34 |
52390
|
alessia.ba
|
You can look for this workflows with the following xquery:
|
35 |
|
|
|
36 |
|
|
for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType')
|
37 |
|
|
where (count($x[.//NODE/@name='selectIncrementalTransformation']) > 1) return $x
|