I mentioned flat files for the following reason...  

I believe all flavors of a version of Remedy share a common code base. This is 
developed to use the common functions across the supported databases.
That's why in older versions of Remedy when you deleted a field on a form it 
would have to rename the table, create a new table, copy all the data from the 
old table to the new one, and then drop the renamed table (One of the databases 
supported at the time did not support the drop column).  

Some of the core routines probably have been reused from version to version.  
The routines to add parenthesis are old enough that they could go back to the 
time when the Remedy system supported using flat files as a database.

-----Original Message-----
From: Action Request System discussion list(ARSList) 
[mailto:arsl...@arslist.org] On Behalf Of Misi Mladoniczky
Sent: Thursday, November 19, 2009 1:18 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 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: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
>

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
Platinum Sponsor:rmisoluti...@verizon.net ARSlist: "Where the Answers Are"

Reply via email to