Hmm. OK. My bad. I tried to find that once and couldn't find anything. I guess I didn't look hard enough. Thanks for pointing that out, Fred.
Lyle -----Original Message----- From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Grooms, Frederick W Sent: Monday, November 02, 2009 1:37 PM To: arslist@ARSLIST.ORG Subject: Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example) 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:arsl...@arslist.org] On Behalf Of Lyle Taylor Sent: Monday, November 02, 2009 2:12 PM To: arslist@ARSLIST.ORG 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:arsl...@arslist.org] On Behalf Of Rick Cook Sent: Monday, November 02, 2009 12:46 PM To: arslist@ARSLIST.ORG 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 <tayl...@ldschurch.org> Date: Mon, 2 Nov 2009 12:29:40 To: <arslist@ARSLIST.ORG> 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:arsl...@arslist.org] On Behalf Of Misi Mladoniczky Sent: Thursday, October 29, 2009 2:13 AM To: arslist@ARSLIST.ORG 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:arsl...@arslist.org] On Behalf Of Misi Mladoniczky > Sent: Wednesday, October 28, 2009 4:31 AM > To: arslist@ARSLIST.ORG > 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:arsl...@arslist.org] On Behalf Of David Morgan >> Sent: Tuesday, October 27, 2009 8:33 AM >> To: arslist@ARSLIST.ORG >> 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:rmisoluti...@verizon.net ARSlist: "Where the Answers Are" NOTICE: This email message is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. _______________________________________________________________________________ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: "Where the Answers Are"