Forum Discussion

VVpackers's avatar
VVpackers
New Contributor
2 years ago

how to debug a business rule

An allocation business rule is not allocating the rates properly . Hence we would like to debug the business rule and also figure out which intersections are passed and what is the value and allocation rate used in allocation calculation .

This allocation process involves a formula in UD7 member .

Please advise how to see the messages used in api.logmessage . Should we need to create a dashboard to capture the messages that are logged while running the allocations. Again, we are looking for which members used and the value / rate used to allocate.

  • VVpackersYou can use the below methodology to start debugging your rule. I have read the below tip from this community.

    	1) Simplifying Log Message 
    	
    	Define a Boolean Constant LogSwitch
    
    		Public Const LogSwitch As Boolean = True 
    		
    		True- To turn on logging for your business rule
    		False - To turn off logging  for your business rule
    		
    		Use the below statement when writing a log 
    		If LogSwitch = True Then brapi.ErrorLog.LogMessage(si, "My Workflow name is " &Workflow )
    
    
    Also, To Log everything in a single string use the below format -
    
    		Dim log As String = String.Empty
    		
    		'Append to “log” throughout business rule
    		
    		log += “Message 1” & VbCrLf   '<— VbCrLf is a .Net constant for “New Line”
    		
    		log += “Message 2” & VbCrLf 
    		
    		
    		'At the very end of Business Rule I write the log variable to the ErrorLog.
    BRApi.ErrorLog.LogMessage(si, log)

     

  • OS_Pizza's avatar
    OS_Pizza
    Contributor III

    VVpackersYou can use the below methodology to start debugging your rule. I have read the below tip from this community.

    	1) Simplifying Log Message 
    	
    	Define a Boolean Constant LogSwitch
    
    		Public Const LogSwitch As Boolean = True 
    		
    		True- To turn on logging for your business rule
    		False - To turn off logging  for your business rule
    		
    		Use the below statement when writing a log 
    		If LogSwitch = True Then brapi.ErrorLog.LogMessage(si, "My Workflow name is " &Workflow )
    
    
    Also, To Log everything in a single string use the below format -
    
    		Dim log As String = String.Empty
    		
    		'Append to “log” throughout business rule
    		
    		log += “Message 1” & VbCrLf   '<— VbCrLf is a .Net constant for “New Line”
    		
    		log += “Message 2” & VbCrLf 
    		
    		
    		'At the very end of Business Rule I write the log variable to the ErrorLog.
    BRApi.ErrorLog.LogMessage(si, log)

     

    • VVpackers's avatar
      VVpackers
      New Contributor

      Thanks for all your ideas . I am also trying to get messages out of a formula used in a UD7 member. How can I grab messages out of it ? Because I can see the messages from a business rule and not seeing from the messages I put in UD7 member formula. 

  • RobbSalzmann's avatar
    RobbSalzmann
    Valued Contributor II

    I use 

     

    Sub Debug(si As SessionInfo, message As String)
    	isTestOrQa = True
    	If(isTestOrQa)Then BRApi.ErrorLog.LogMessage(si, message)
    End Sub

     

     

     

     

    • DanielWillis's avatar
      DanielWillis
      Valued Contributor

      Same for me except that since we're running it through our own debugging function I add as much useful info as I can (which would be a pain if repeating for every manual logmessage. For example, a better timestamp that allows sub-second sorting.

  • RobbSalzmann's avatar
    RobbSalzmann
    Valued Contributor II

    You can write debug messages to the log with BRApi.ErrorLog.LogMessage(si,"Message to log")

     

  • JackLacava's avatar
    JackLacava
    Honored Contributor

    Anything written with Api.LogMessage or BRApi.ErrorLog.LogMessage will appear in the Error Log, which can be found in the System pane - NOT in the Task Activity Log.

    • OS_Pizza's avatar
      OS_Pizza
      Contributor III

      1. When you run Calculate.Run calculate using logging. This will show you if your formulae ran or not.

      If it doesnt show up , that means your formulae never ran and the log entry wont be there.

      2. You need to share the screenshot of your allocation rule that you have written and the portion where you     are trying to debug.

  • chul's avatar
    chul
    Contributor III

    If API is available, do NOT use BRAPI. I understand that this is for debugging but it does add time to calculations. The negative performance impact of accidentally leaving the switch turned on will be heavier if BRAPI is used.