[rules-users] Binding a variable with an OR pattern

Joe Ammann joe at pyx.ch
Tue Aug 13 09:02:59 EDT 2013


Hi all

Trying to do the following: as one pattern of a rule, I want to bind a
variable to a fact with code "7001", or (if such a fact does not exist)
to one with the value "7000".

Until now, I haven't been able to formulate this in one single rule, as
simple as it sounds - probably I'm just overlooking something basic ...

Currently I have 2 rules:

rule "R7012: UpdateInstrumentsIssuerFrom7001"
agenda-group "TRANSFER_TO_LIVE"
salience 100
when
    sirole : SourcingInstitutionRole(sourcing_Status ==
SourcingStatus.IMPORTED,
                                     roleCd == "7001" )
    insti  : Institution ( ids != null, ids.sspFI ==
sirole.institutionProviderId )
    instr  : Instrument ( ids != null, ids.sspFI == sirole.providerId,
issuer.issuerId != insti.id )
then
    tlog.info("Modify issuer of {} to {} (from role code 7001)", instr,
insti);
    modify (instr) {
        issuer.issuerId = insti.id
    }
end

rule "R7012: UpdateInstrumentsIssuerFrom7000"
agenda-group "TRANSFER_TO_LIVE"
salience 100
when
    sirole : SourcingInstitutionRole(sourcing_Status ==
SourcingStatus.IMPORTED, roleCd == "7000" )
    insti  : Institution ( ids != null, ids.sspFI ==
sirole.institutionProviderId )
    instr  : Instrument ( ids != null, ids.sspFI == sirole.providerId, 
issuer.issuerId != insti.id )
    not SourcingInstitutionRole(sourcing_Status == SourcingStatus.IMPORTED,
                                providerId == instr.ids.sspFI,
                                institutionProviderId == instr.ids.sspFI,
                                roleCd == "7001" )
then
    tlog.info("Modify issuer of {} to {} (from role code 7000)", instr,
insti);
    modify (instr) {
        issuer.issuerId = insti.id
    }
end

This seems to work, but I would have expected that it should be easy to
do this in one single rule !? But I just can't come up with a rule that
does what I want...

How would I formulate such as rule?

-- 
CU, Joe



More information about the rules-users mailing list