Question Claude Mourzelas · Aug 12, 2022

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

Comments

Oliver Wilms · Aug 12, 2022

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

0
Claude Mourzelas  Aug 17, 2022 to Oliver Wilms

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

0
Irène Mykhailova  Aug 27, 2022 to Claude Mourzelas

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.

0
Eduard Lebedyuk  Aug 27, 2022 to Irène Mykhailova

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

0
Claude Mourzelas · Aug 29, 2022

Hello,

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

0