Yes Misi,

I too am seeing the same bugs with the way that the dev studio parses
qualifications & expressions. In patch 2 I found a number of perfectly
valid table field qualifications were being rejected by the parser. In
patch 3 this is not occuring but it is removing parentheses in set
fields and totally changing the meaning of the expression on
occasions. Sometimes I have had to break things up into multiple
operations just to be sure that the parser wouldn't break it.

I'm hoping that patch 4 improves things a bit. There are a few little
bugs in Dev studio that are holding development speed back a little at
the moment. This is one as well as the need to sometimes select fields
more than once to get them to take in a set fields.

I'd rather go back to the old admin tool parser where it went overkill
with all of the parenthesis than the current flawed parsing.

The ideal solution would be to be able to store qualifications in the
schema as entered in dev studio and have the system honour the
precedence rules as documented. Surely this is possible but I expect
we will have to wait for release 8.


Rod



2009/11/19 Misi Mladoniczky <[email protected]>:
> Hi Fred,
>
> Why would this have anything to do with flat files???
>
> The only reason for this that I can think of, is that the developers did
> not get enough time to do it right.
>
> I can not imagine a programmer that would not LOVE the challenge of
> optimizing a thing like this, and get payed to do it ;-)
>
>        Best Regards - Misi, RRR AB, http://www.rrr.se
>
> Products from RRR Scandinavia:
> * RRR|License - Not enough Remedy licenses? Save money by optimizing.
> * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs.
> * RRR|Translator - Manage and automate your language translations.
> Find these products, and many free tools and utilities, at http://rrr.se.
>
>> According to the Workflow Objects docs there is a operator precedence.
>>
>> Operator precedence
>>
>> When you use multiple operators to construct qualification criteria, they
>> are evaluated in the following order:
>>   1 ( )
>>   2 NOT (!) - (unary minus)
>>   3 * / %
>>   4 + -
>>   5 < <= > >= = != LIKE
>>   6 AND (&&)
>>   7 OR (||)
>> Operators of the same precedence are performed left to right.
>> You can use parentheses in an expression to override operator precedence.
>> AR System evaluates expressions inside parentheses first before evaluating
>> those outside.
>>
>> Part of the design of adding parenthesis probably goes back to when Remedy
>> supported using flat files as a database.
>>
>> Fred
>>
>> -----Original Message-----
>> From: Action Request System discussion list(ARSList)
>> [mailto:[email protected]] On Behalf Of Lyle Taylor
>> Sent: Monday, November 02, 2009 2:12 PM
>> To: [email protected]
>> Subject: Re: Java API for ARS - How to obtain a Run-If line from an Active
>> Link (for example)
>>
>> It's possible that that's the motivation behind how it's currently
>> architected, but it's not a very good excuse.  The SQL will all get
>> dynamically generated based on the qualification tree generated by parsing
>> the qualification string, not on the qualification string itself.  It's
>> very doable to define qualification strings so that operator precedence,
>> etc., is in line with common practice, and that wouldn't affect Remedy's
>> ability to be DB agnostic in the slightest.  The only difference that it
>> makes is that parsing the qualification strings becomes slightly more
>> complicated (but still very doable - there are tools that will write much
>> of this code for you - e.g., lex/yacc, etc.).  Once you've parsed the
>> qualification string according to whatever rules you've put in place, you
>> end up with the same data structure that they currently have which will
>> then be used to generate the SQL just like they do now.  The current
>> scheme is unnecessarily simplistic and actually makes the system more
>> difficult to use because of the excessive number of parentheses in
>> qualification schemese.
>>
>> Lyle
>>
>> -----Original Message-----
>> From: Action Request System discussion list(ARSList)
>> [mailto:[email protected]] On Behalf Of Rick Cook
>> Sent: Monday, November 02, 2009 12:46 PM
>> To: [email protected]
>> Subject: Re: Java API for ARS - How to obtain a Run-If line from an Active
>> Link (for example)
>>
>> Lyle, my take on that is that Remedy is trying to be DB agnostic.  Rather
>> than compete with how each DB processes SQL, or trying to anticipate how a
>> receiver of an API call might do so, they just kept it simple.
>>
>>
>> Rick
>>
>> -----Original Message-----
>> From:         Lyle Taylor <[email protected]>
>> Date:         Mon, 2 Nov 2009 12:29:40
>> To: <[email protected]>
>> Subject: Re: Java API for ARS - How to obtain a Run-If line from an Active
>> Link (for example)
>>
>>>From what I've been able to tell, there is no such thing as operator
>>> precedence in AR System aside from parentheses.  It all seems to be
>>> dictated on the parentheses which seems to correspond to the tree that
>>> their parser build internally.  There's a lot of room for improvement in
>>> the area of qualifications in Remedy, in my opinion.
>>
>> Lyle
>>
>>
>> -----Original Message-----
>> From: Action Request System discussion list(ARSList)
>> [mailto:[email protected]] On Behalf Of Misi Mladoniczky
>> Sent: Thursday, October 29, 2009 2:13 AM
>> To: [email protected]
>> Subject: Re: Java API for ARS - How to obtain a Run-If line from an Active
>> Link (for example)
>>
>> Hi,
>>
>> Just tested some things.
>>
>> I am working on ARServer/Developer 7.5.0 patch 3.
>>
>> In the Run-If and Set/Push-Fields-If-Qualification, it still puts in extra
>> brackets:
>>
>> What I entered:
>> 'CU:ID' = $CU:ID$ AND 'CO:ID' = $CO:ID$ AND 'Status' = "Active"
>> After reopen:
>> (('CU:ID' = $CU:ID$) AND ('CO:ID' = $CO:ID$)) AND ('Status' = "Active")
>>
>> It seems like they did some efforts on the the VALUE in the
>> Set/Push-Fields Action.
>>
>> The problem is that i does not work, the new BMC parenthesis optimizer is
>> faulty!!!
>>
>> I entered:
>> (1.0 + 2.0) * 3.0
>> This is shown after reopening the filter:
>> 1.0 + 2.0 * 3.0
>>
>> They must take into account that the * has a higher priority than the +,
>> and put in parenthesis accordingly, if needed.
>>
>>         Best Regards - Misi, RRR AB, http://www.rrr.se
>>
>> Products from RRR Scandinavia:
>> * RRR|License - Not enough Remedy licenses? Save money by optimizing.
>> * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs.
>> * RRR|Translator - Manage and automate your language translations.
>> Find these products, and many free tools and utilities, at http://rrr.se.
>>
>>> Misi,
>>> There was a fix put in to....I think it was set/push action
>>> qualifications
>>> to fix their excess parenthesis, but I wasn't aware of any more still
>>> being
>>> in existence.  Can you give me an example of where you are seeing it?
>>>
>>> -----Original Message-----
>>> From: Action Request System discussion list(ARSList)
>>> [mailto:[email protected]] On Behalf Of Misi Mladoniczky
>>> Sent: Wednesday, October 28, 2009 4:31 AM
>>> To: [email protected]
>>> Subject: Re: Java API for ARS - How to obtain a Run-If line from an
>>> Active
>>> Link (for example)
>>>
>>> Hi,
>>>
>>> It would be very nice if someone could take the time to create an
>>> algorithm
>>> that removed the unnecessary grouping parentheses...
>>>
>>>         Best Regards - Misi, RRR AB, http://www.rrr.se
>>>
>>> Products from RRR Scandinavia:
>>> * RRR|License - Not enough Remedy licenses? Save money by optimizing.
>>> * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy
>>> logs.
>>> * RRR|Translator - Manage and automate your language translations.
>>> Find these products, and many free tools and utilities, at
>>> http://rrr.se.
>>>
>>>> Wow...ask a tough one....ok....took me FOREVER to figure out
>>>> Qualifiers....but here is basically what you need to do.
>>>>
>>>> A QualifierInfo object has three main parts, LeftOperand, Operation,
>>>> and RightOperand.  To explain these parts I will give you an example
>>>>
>>>> ('Status' = "Fixed") AND ('Create Date' < $DATE$)
>>>>
>>>> Ok, if that is your QualifierInfo object, here are your pieces
>>>>
>>>> LeftOperand = ('Status' = "Fixed")
>>>> Operation = AND
>>>> RightOperand = ('Create Date' < $DATE$)
>>>>
>>>> So, what I have done in several programs now is to write an iterative
>>>> subroutine, if you check the operation to determine if it is a
>>>> relational operation (< > = != etc).  If it's not, I throw
>>>> RightOperand back into the sub till it is, If it is then you know you
>>>> are down to a single operand, and then you can parse the field/value
>>>> on left and right for what you want to check/test for.
>>>>
>>>> Please let me know if this helps any....it's still a bit fuzzy in my
>>>> head, but I understand it well enough as it is to do what I need to do.
>>>>
>>>>_____
>>>>
>>>> From: Action Request System discussion list(ARSList)
>>>> [mailto:[email protected]] On Behalf Of David Morgan
>>>> Sent: Tuesday, October 27, 2009 8:33 AM
>>>> To: [email protected]
>>>> Subject: Java API for ARS - How to obtain a Run-If line from an Active
>>>> Link (for example)
>>>>
>>>>
>>>> Hi ARSListers,
>>>>
>>>> I have been looking at the Java API but am stumped by Qualifiers.
>>>>
>>>> String name1 = "Demo";
>>>> String swd = "etno";
>>>> String sname = "dclha002";
>>>> Integer tcpport = 8001;
>>>> Integer rpcnum = 0;
>>>>
>>>> ARServerUser context=new ARServerUser(name1,swd,"",sname, tcpport);
>>>> // Check and verify user login:
>>>>  try {
>>>>        // If User Pass/Acct name is wrong, this gens an error.
>>>>        context.login();
>>>>      } catch( ARException e ) {
>>>>        System.out.println( "Login Error : " + " Possible Bad password
>>>> or acct name. " );
>>>>        //This return ends all further processing and exits...
>>>>         return;
>>>>      }
>>>>
>>>> List<ActiveLink>
>>>> aLinkObjs=context.getListActiveLinkObjects("AST:WorkLog");
>>>>
>>>> int x = 0;
>>>> for (int i = 0; i < aLinkObjs.size(); i++) {
>>>>     System.out.format("\n%20s%60s\n\n", i,
>>>> aLinkObjs.get(i).getName());
>>>>     //ActiveLink alink = aLinkObjs.get(x);
>>>>             try{
>>>>                 QualifierInfo encryptedQual =
>>>> aLinkObjs.get(i).getQualifier();
>>>>                 System.out.println(encryptedQual.toString() );
>>>>                 RelationalOperationInfo qualEnglish =
>>>> encryptedQual.getRelationalOperationInfo();
>>>>                 System.out.println("Qual : "+ qualEnglish.toString());
>>>>             } catch (Exception e){
>>>>                 System.out.println("no Qualification\n");
>>>>             }
>>>>
>>>>     if (aLinkObjs.get(i).toString().contentEquals("ASI:AWL:Close_100")
>>>> ) {
>>>>         x = i ;
>>>>        // System.out.println(x);
>>>>     }
>>>> }
>>>>
>>>> context.logout();
>>>>
>>>> }
>>>>
>>>>
>>>> I can get the names of the Active links associated with the named form
>>>> (in this example I used AST:WorkLog)
>>>>
>>>> But I cannot seem to decode the Qualifier. All I get from the output
>>>> is :-
>>>>                    1
>>>> SHR:SHR:Help_003_CheckOnlineHelpInstall_E
>>>>
>>>> [Operation=4,Operand Left=[Operation=2,Operand Left=[Operand
>>>> Type=[type=2],Operand=$LASTCOUNT$],Operand Right=[Operand
>>>> Type=[type=2],Operand=0]],Operand Right=<null>]
>>>>
>>>> Qual : [Operation=2,Operand Left=[Operand
>>>> Type=[type=2],Operand=$LASTCOUNT$],Operand Right=[Operand
>>>> Type=[type=2],Operand=0]]
>>>>
>>>> I just need some help in decoding the Qualifier. Anyone got any ideas?
>>>> Thanks in advance!!
>>>>
>>>> David Morgan
>>>>
>>>> Senior Technical Consultant
>>>>
>>>> Tiberone Technologies Limited
>>>> Golden Cross House
>>>> 8 Duncannon Street
>>>> London WC2N 4JF
>>>> Ph: +44 (0) 207 484 5069
>>>> Fax: +44 (0) 870 8310 381
>>>> Mob: +44 (0) 7876 450102
>>>>  <http://www.tiberone.com/> www.tiberone.com
>>
>> _______________________________________________________________________________
>> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
>> Platinum Sponsor:[email protected] ARSlist: "Where the Answers Are"
>>
>> --
>> This message was scanned by ESVA and is believed to be clean.
>>
>>
>
> _______________________________________________________________________________
> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
> Platinum Sponsor:[email protected] ARSlist: "Where the Answers Are"
>

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
Platinum Sponsor:[email protected] ARSlist: "Where the Answers Are"

Reply via email to