Question
claude Mourzelas · Aug 12

ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>

Hello,

 

I try to realize a simple test in a BPL and i have this kind of error message. I don't understand why ! I have a simple CSV file in input with 3 columns (Nom, Prenom, Age) and a rule based on the age

 

ERROR <Ens>ErrBPTerminated: Terminating BP TestSiJeune # due to error: ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>zevaluateRuleDefinition+18 ^User.Person.IsJeune.1 *Age,User.Person.TransfoTest.Context -- logged as '-'
number - @'
if (((pContext.Age)>(25))) {'
> ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>zevaluateRuleDefinition+18 ^User.Person.IsJeune.1 *Age,User.Person.TransfoTest.Context -- logged as '-'
number - @'
if (((pContext.Age)>(25))) {'

Product version: IRIS 2022.1
0
0 183
Discussion (5)1
Log in or sign up to continue

It appears to me that User.Person class does NOT have Age property

Hello Olivier,

thanks for your answer. Il have modified some options and now, il have an another error.

10:45:19.295:Thread1: Erreur <Ens>ErrException: <PROPERTY DOES NOT EXIST>zS1+5^Demo.DemoBPL.Thread1.1 *%Process,Demo.Person.Record --  - connecté en tant que '-' numéro - @' Set request.%Process = process'

This is the generated code. Is it a Bug ? Set request.%Process  = process : %Process does not exist

Method S1(process As Ens.BusinessProcess, context As Ens.BP.Context, synctimedout As %Boolean, syncresponses As %ArrayOfObjects(ELEMENTTYPE="%Library.Persistent"), request As %Library.Persistent, response As %Library.Persistent) As %Status [ Language = objectscript, PublicList = (process, context) ]
{
 Set $ZT="Trap",status=$$$OK do {
 Do ##class(Ens.Util.Trace).WriteTrace("user","Demo.DemoBPL","S1","debut")
 Do ##class(Ens.Util.Trace).WriteTrace("user","Demo.DemoBPL","S1",request.Age)
 Do ##class(Ens.Util.Trace).WriteTrace("user","Demo.DemoBPL","S1","fin")
 Set request.%Process = process

Set status=##class(Ens.Rule.RuleDefinition).EvaluateRulesEx("Demo.IsItYoung",,request,"testAge",.ruleReturn,.ruleReason,,process.RuleLogging) Quit:$$$ISERR(status)
 Set context.IsYoung = ruleReturn

Now it says that you don't have %Process in your request. Since "request" is the variable that you pass and it has a property "Age" you should probably check whether you specify that your request should contain %Process.

request should not contain process, there is a separate process variable for that.

Hello,

I understood my mistake. I passed the reference of my object in context variable and everything is ok. Thank you all.