cancel
Showing results for 
Search instead for 
Did you mean: 

Retriving sErrorReport/diagnosis from a Modeling Rule in VBScript

Solved
Highlighted
Contributor

Retriving sErrorReport/diagnosis from a Modeling Rule in VBScript

I am running a modeling rule using the follwoing code:

 

oRule = getRoot().getObjectFromID("~bIGR5)c0NrZQ['On Premises' type Applications should have recommended assocations]")
oToBeRuled = getRoot().getObjectFromID("~IUnzipl2MzJ)[VSP]")

print oRule.getProp("Short Name")
print oToBeRuled.GetProp("Short Name")

sResult = ""
sResult = oRule.RuleApply(oToBeRuled)

print sResult

 

 

This works fine however i am not able to figure out how to get the error report when a modeling rule fails.  The modeling rule macro was setup as follows:

 

Option Explicit

Sub RuleAppliableIs (oToBeRuled, oRule, sParameter, bRuleAppliableIs)
	
	bRuleAppliableIs = false

  if oToBeRuled.getProp("Cloud Computing") = "1OP" then
    bRuleAppliableIs = true
  End if
	
end sub


Sub RuleWithReportApply (oToBeRuled, oRule, sParameters, bRuleResult, sErrorReport)	
	
    bRuleResult = false
	
		if oToBeRuled.GetCollection("Server").count > 0 And oToBeRuled.GetCollection("Site").count > 0 And oToBeRuled.GetCollection("Used Technology").count > 0 And oToBeRuled.GetCollection("Required Technical Infrastructure").count > 0 then
				bRuleResult = true
      else
		  sErrorReport = "Missing one or all of following associations : Server,Site,Used Technology,Required Technical Infrastructure"
    End if
	
end sub

 

When you right click on an object and you run check --> regulation with propgation it prints out sErrorReport.

 

part1.jpg

part2.jpg

 

I tried to find this report to see how it was implemented but it seems that is is part of a dll somewhere.  So is there anyway to get this informaiton about a fialed modeling rule from the API?

5 Replies
MEGA

Re: Retriving sErrorReport/diagnosis from a Modeling Rule in VBScript

Hello FM_MEGA

 

If I understand, you want to apply a modeling rule using API script and get the text result in case of success or failure

 

You can use this to get the text result in case of failure

oRule.GetProp("~vxKaP7Pu0z80[When rule is not valid] ","Display")

 

Script example (VB script)

 

Set oApp = GetObjectFromId("~X2n9DT2rMzMN[A01]")
Set oRule = GetObjectFromID("~o6OrCgnB2fp2[An application cannot be a component of itself]")


' to get a boolea result


Print oRule.RuleApply(oApp)


' to get a text if rule applies successfully


Print oRule.GetProp("~Sts8Kcqg1D80[Rule Description]","Display")

' to get a text if rule application fails

Print oRule.GetProp("~vxKaP7Pu0z80[When rule is not valid] ","Display")

 

Jerome
Contributor

Re: Retriving sErrorReport/diagnosis from a Modeling Rule in VBScript

Thanks for responding but I tried that and it dosen't work.  It will only print the attribute value as you can see below:

wrongStuff.PNG

 

wrongStuff2.PNG

 

What I'm trying to get is from the implementing macro that is connected to the modeling rule

WhatIneed.PNG

 

This shows up in the regulation report

 

Contributor

Re: Retriving sErrorReport/diagnosis from a Modeling Rule in VBScript

The regulation report is able to show this information.  Is there any other way to get this information ?

MEGA

Re: Retriving sErrorReport/diagnosis from a Modeling Rule in VBScript

Hello,

I think you need to call the macro :

oRule = getRoot().getObjectFromID("~bIGR5)c0NrZQ['On Premises' type Applications should have recommended assocations]")
oToBeRuled = getRoot().getObjectFromID("~IUnzipl2MzJ)[VSP]")
Set myMacro = CurrentEnvironment.getMacro(oRule.getCollection("~d)mXIQv51vy0[Macro d'implementation]").item(1).shortname)
Call myMacro.RuleWithReportApply(oToBeRuled, oRule, sParameters, bRuleResult, sErrorReport)


print oRule.getProp("Short Name")
print oToBeRuled.GetProp("Short Name")
print bRuleResult
print sErrorReport

Regards,

 

Lionel

Contributor

Re: Retriving sErrorReport/diagnosis from a Modeling Rule in VBScript

Thank you.  This seems to work.  Now that I have a working example in VB i think i can implement this in Java.  I do have one more quesiton.   Not all modeling rules use RuleWithReportApply some just use RuleApply and others don't implement Macro's they use MetaTest.  Is there a way to test to make sute the RuleWithReportApply method has been implemented?