- Notifications
You must be signed in to change notification settings - Fork 16
Sample Process Module
Mads Hansen edited this page Jun 8, 2017 · 2 revisions
The PROCESS-MODULE is the property name used to designate the XQuery or JavaScript module used by the PROCESS-TASK. Typical tasks performed by the PROCESS-MODULE are to transform data or generate a report. Below is an example of each task using XQuery.
The following generates a report:
xquery version "1.0-ml"; import module namespace l-app-policy = "http://www.marklogic.com/ps/lib/l-app-policy" at "/lib/l-app-policy.xqy"; declare namespace pb = "http://persistence.base.organization.gov"; declare namespace p = "http://persistence.ffe.organization.gov"; declare namespace b = "http://base.persistence.base.organization.gov"; declare variable $URI as xs:string external; (: The value for this variable is passed in by CORB :) let $doc := fn:doc($URI) let $origAppId := $doc/p:financialPlanPolicy/p:originatingFinancialPlanIdentifier/text() let $version := $doc/p:financialPlanPolicy/b:versionInformation/pb:versionNumber/text() let $ptn := $doc/p:financialPlanPolicy/p:policyTrackingNumber/text() let $creationDate := fn:tokenize($doc/p:financialPlanPolicy/p:financialPlanPolicyCreationDateTime, "-")[1] let $app := if ($creationDate eq "2014") then l-app-policy:getLinkedApplicationVersionFromPolicy($doc/p:financialPlanPolicy) else () for $appMember in $app/p:applicationMember let $recordedFinancialAdviseUsage := $appMember/p:recordedFinancialAdviseUsage/p:definingFinancialUseType/pb:referenceTypeCode/text() let $missingDate := if (fn:not($appMember/p:hedgeFundAccount/p:lastInvestmentDate) or fn:empty($appMember/ p:hedgeFundAccount/p:lastInvestmentDate /text())) then fn:true() else fn:false() (: Note the string returned to CORB has two values separated by a comma : which is then written to file by the ExportToFileTask :) return if ($recordedFinancialAdviseUsage eq "1" and $missingDate) then fn:concat( $origAppId, ",", $ptn) else ()The following adds a node to certain documents:
xquery version "1.0-ml"; import module namespace audit = "http://ffx.ffe.gov/lib/util/audit" at "/lib/util/audit/audit.xqy"; declare namespace p = "http://persistence.organization.gov"; declare variable $URI as xs:string external := "/DE/gov/ffe/InsurancePlanPolicy/1151837.xml"; declare variable $DEBUG := fn:true(); declare variable $collectionName := "FFM3453_MissingSingleRelationships"; let $candidatePolicy := fn:doc($URI)/p:insurancePlanPolicy let $subscriber := $candidatePolicy/p:coveredInsuredMember[fn:matches(./p:subscriberIndicator, "true")] let $count := fn:count($subscriber) return if ($count eq 1) then let $insertionPoint := if (fn:exists($subscriber/p:identifingTobaccoUseType)) then $subscriber/p:identifingTobaccoUseType else $subscriber/p:subscriberIndicator let $selfReferenceBlock := element p:definingMemberAssocationTypeToSubscriber { element pb:referenceTypeCode { 1 }, element pb:referenceTypeName { "ApplicationMemberAssociationReasonType" } } return if ($DEBUG) then ("ADD", $insertionPoint, $selfReferenceBlock) else ( xdmp:node-insert-after( $insertionPoint, $selfReferenceBlock ), audit:audit($collectionName, $URI, $audit:CHANGE-TYPE-ADD, $insertionPoint, $selfReferenceBlock) ) else ()