Re: Java API for Query based upon a composite qualification
Naveen, To the best of my knowledge, the API itself cannot do this, never really has been able to...but some versions ago (I think it was 7.6.04) BMC introduced 'Multi-Form Search', or MFSif you read the docs you can read up a bit about it, and once configured, the API would be able to utilize your MFS Form to do what you want, I think. https://docs.bmc.com/docs/display/public/ars81/Creating+a+form+and+workflow+to+search+across+multiple+forms On Thu, Oct 31, 2013 at 9:57 PM, Setya, Naveen nse...@columnit.com wrote: ** Greetings, ** ** Can someone please provide an example of java API that can be used to retrieve data from a form based upon a composite qualification? ** ** e.g. Form A and Form B ** ** Retrieve Data from Form A where FormA.Field1=FormB.Field2 ** ** ** ** Thanks in advance Naveen ** ** ** ** _ARSlist: Where the Answers Are and have been for 20 years_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API for Query based upon a composite qualification
Hi, There is indeed a new API-call introduced in verison 7.6.04, to allow BIRT to do ad-hoc joins. The C-API call is ARGetListEntryWithMultiSchemaFields(), and there should be a Java-API equivalent. Best Regards - Misi, RRR AB, http://www.rrr.se (ARSList MVP 2011) Ask the Remedy Licensing Experts (Best R.O.I. Award at WWRUG10/11/12/13): * RRR|License - Not enough Remedy licenses? Save money by optimizing. * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs. Find these products, and many free tools and utilities, at http://rrr.se. Naveen, To the best of my knowledge, the API itself cannot do this, never really has been able to...but some versions ago (I think it was 7.6.04) BMC introduced 'Multi-Form Search', or MFSif you read the docs you can read up a bit about it, and once configured, the API would be able to utilize your MFS Form to do what you want, I think. https://docs.bmc.com/docs/display/public/ars81/Creating+a+form+and+workflow+to+search+across+multiple+forms On Thu, Oct 31, 2013 at 9:57 PM, Setya, Naveen nse...@columnit.com wrote: ** Greetings, ** ** Can someone please provide an example of java API that can be used to retrieve data from a form based upon a composite qualification? ** ** e.g. Form A and Form B ** ** Retrieve Data from Form A where FormA.Field1=FormB.Field2 ** ** ** ** Thanks in advance Naveen ** ** ** ** _ARSlist: Where the Answers Are and have been for 20 years_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API for Query based upon a composite qualification
Thank you Misi, I think this is the method that is likely used getListEntryObjects public List http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html?is-external=trueQuerySourceValues file:///C:/Users/llongwing/Documents/ARJavaLib/ardoc81_build001/com/bmc/arsys/api/QuerySourceValues.html *getListEntryObjects*(RegularQuery file:///C:/Users/llongwing/Documents/ARJavaLib/ardoc81_build001/com/bmc/arsys/api/RegularQuery.html query, int firstRetrieve, int maxRetrieve, boolean useLocale, OutputInteger file:///C:/Users/llongwing/Documents/ARJavaLib/ardoc81_build001/com/bmc/arsys/api/OutputInteger.html nMatches) throws ARException file:///C:/Users/llongwing/Documents/ARJavaLib/ardoc81_build001/com/bmc/arsys/api/ARException.html Returns a list of QuerySourceValuesfile:///C:/Users/llongwing/Documents/ARJavaLib/ardoc81_build001/com/bmc/arsys/api/QuerySourceValues.html objects that match the provided criteria. Supports joins, subqueries and hierarchical queries constructs. *Parameters:*query - RegularQueryfile:///C:/Users/llongwing/Documents/ARJavaLib/ardoc81_build001/com/bmc/arsys/api/RegularQuery.html query that determines the set of entries to retrievefirstRetrieve - first entry to retrieve. A value of 0 represent the first entry.maxRetrieve - maximum number of entries to retrieveuseLocale - boolean flag that controls whether the result includes only entries based on locale (1 or TRUE) or all enties (0 or FALSE). The Localize Server option must be selected for the AR System server to return only localized entries. For information about the Localize Server option, see the *Configuring* guide.nMatches - returns the number of (accessible) entries that match the qualification criteria. Specify null for this parameter if you do not want to retrieve this count.*Returns:*list of QuerySourceValuesfile:///C:/Users/llongwing/Documents/ARJavaLib/ardoc81_build001/com/bmc/arsys/api/QuerySourceValues.html objects that match the provided criteria*Throws:*ARExceptionfile:///C:/Users/llongwing/Documents/ARJavaLib/ardoc81_build001/com/bmc/arsys/api/ARException.html - if list is not returned where 'RegularQuery' is defined as The RegularQuery class is used to define the properties of a dynamic query. So this definitely looks like the method used to query 'dynamic' forms :) On Fri, Nov 1, 2013 at 7:31 AM, Misi Mladoniczky m...@rrr.se wrote: Hi, There is indeed a new API-call introduced in verison 7.6.04, to allow BIRT to do ad-hoc joins. The C-API call is ARGetListEntryWithMultiSchemaFields(), and there should be a Java-API equivalent. Best Regards - Misi, RRR AB, http://www.rrr.se (ARSList MVP 2011) Ask the Remedy Licensing Experts (Best R.O.I. Award at WWRUG10/11/12/13): * RRR|License - Not enough Remedy licenses? Save money by optimizing. * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs. Find these products, and many free tools and utilities, at http://rrr.se. Naveen, To the best of my knowledge, the API itself cannot do this, never really has been able to...but some versions ago (I think it was 7.6.04) BMC introduced 'Multi-Form Search', or MFSif you read the docs you can read up a bit about it, and once configured, the API would be able to utilize your MFS Form to do what you want, I think. https://docs.bmc.com/docs/display/public/ars81/Creating+a+form+and+workflow+to+search+across+multiple+forms On Thu, Oct 31, 2013 at 9:57 PM, Setya, Naveen nse...@columnit.com wrote: ** Greetings, ** ** Can someone please provide an example of java API that can be used to retrieve data from a form based upon a composite qualification? ** ** e.g. Form A and Form B ** ** Retrieve Data from Form A where FormA.Field1=FormB.Field2 ** ** ** ** Thanks in advance Naveen ** ** ** ** _ARSlist: Where the Answers Are and have been for 20 years_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API for Query based upon a composite qualification
Naveen, You can find reference to retrieving entries from multiple forms in the 7.6.4 C API Reference document provided by BMC. There is a section specific to this along with example in C and Java api. Beyond simple joins, it also covers recursion, and other interesting things, if needed. Hopefully that helps. -Eric From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of LJ LongWing Sent: Friday, November 01, 2013 8:27 AM To: arslist@ARSLIST.ORG Subject: Re: Java API for Query based upon a composite qualification ** Naveen, To the best of my knowledge, the API itself cannot do this, never really has been able to...but some versions ago (I think it was 7.6.04) BMC introduced 'Multi-Form Search', or MFSif you read the docs you can read up a bit about it, and once configured, the API would be able to utilize your MFS Form to do what you want, I think. https://docs.bmc.com/docs/display/public/ars81/Creating+a+form+and+workflow+to+search+across+multiple+forms On Thu, Oct 31, 2013 at 9:57 PM, Setya, Naveen nse...@columnit.commailto:nse...@columnit.com wrote: ** Greetings, Can someone please provide an example of java API that can be used to retrieve data from a form based upon a composite qualification? e.g. Form A and Form B Retrieve Data from Form A where FormA.Field1=FormB.Field2 Thanks in advance Naveen _ARSlist: Where the Answers Are and have been for 20 years_ _ARSlist: Where the Answers Are and have been for 20 years_ CONFIDENTIALITY NOTICE: This email communication is intended only for the personal and confidential use of the recipient(s) designated above and may contain information which is subject to Federal and/or State privacy laws. In the event that you are not the intended recipient or the agent of the intended recipient, you are hereby notified that any review, disclosure, or use of the information contained herein is strictly prohibited. Do not copy or use the information contained within this communication, or allow it to be read, copied or utilized in any manner by any other person(s). If you have received this communication in error, please notify the sender immediately, either by response e-mail or by phone, and permanently delete the original e-mail, any attachment(s), and copies. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API
Hi firstly, It seems as if you are confusing Java and Javascript - i assume that you are talking pure Java, and Java Script is a Java Application - ie a java .class file run with java.exe Java is a requirement of the Remedy installation as far as I recall, so it is present on the server. with regards to the JDK, you have to check by opening a commandline and typing javac -version (no quotes) /Jonas On 04/10/2013 12:36 Neha Khandelwal jbpn...@gmail.com wrote: Hi List, Please help me with your expertise on below query. I am working on ITSM 7.6 version. I have requirement to create a Java script which should extract HPD:Help Desk form data through Java API. Now I need to check do I have everything already installed or configured to run Java script at Remedy side. As I looked into installation directory of ARSystem I found at following path .../ARSystem/api, have direcories for Javaplugins Javadriver include lib Is that mean Java is already installed Or I need to install it specifically. Can you please assist? Regards Neha Khandelwal __ _ UNSUBSCRIBE or access ARSlist Archives at http://www.arslist.org Where the Answers Are, and have been for 20 years ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API
Hi Jonas, Thanks for replying. Yes, I am not very much invloved into Java. After typing command suggested by you, I got javac version as 1.6.0_30, which means jdk is installed, right? Regards Neha Khandelwal ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API
Correct On 04/10/2013 13:02 Neha Khandelwal jbpn...@gmail.com wrote: Hi Jonas, Thanks for replying. Yes, I am not very much invloved into Java. After typing command suggested by you, I got javac version as 1.6.0_30, which means jdk is installed, right? Regards Neha Khandelwal __ _ UNSUBSCRIBE or access ARSlist Archives at http://www.arslist.org Where the Answers Are, and have been for 20 years ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API changes in ARS v8.1
Raj, It's in the JavaDocs for each release, on the index page, they give you a synopsis of things added, depreciated, etc in this releasewho knows how accurate it is, but it's there :) On Wed, Aug 28, 2013 at 7:42 AM, Raj ravi6...@gmail.com wrote: ** Hi All, I am looking for changes in Java API after ARS v7.5. Would it be in release notes or what's new docs, where I can find this information? Also, are there any considerable changes? Thank you, Raj _ARSlist: Where the Answers Are and have been for 20 years_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API changes in ARS v8.1
Thanks LJ. I am trying to browse through v8.1 docs. Could you please tell which JavaDocs you are referring to. Are those the one under - Developing an API programhttps://docs.bmc.com/docs/display/ars81/Developing+an+API+program BMC Remedy AR System Java API overviewhttps://docs.bmc.com/docs/display/ars81/BMC+Remedy+AR+System+Java+API+overview ? ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API changes in ARS v8.1
on the server, there is a file named ardocversion.jar If you unzip this file, those are the java docs for that version. On Wed, Aug 28, 2013 at 10:11 AM, Raj ravi6...@gmail.com wrote: ** Thanks LJ. I am trying to browse through v8.1 docs. Could you please tell which JavaDocs you are referring to. Are those the one under - Developing an API programhttps://docs.bmc.com/docs/display/ars81/Developing+an+API+program BMC Remedy AR System Java API overviewhttps://docs.bmc.com/docs/display/ars81/BMC+Remedy+AR+System+Java+API+overview ? _ARSlist: Where the Answers Are and have been for 20 years_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API changes in ARS v8.1
I do not have the ARS Installed, is there any way to retrieve that document? ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API changes in ARS v8.1
Well, you are looking for the changes in multiple versions 7.6.03 7.6.04 8.0 8.1 So, while I would have some of those...BMC is pretty stingy with people just sending things out in the past...I would contact BMC directly to get copies of the docs On Wed, Aug 28, 2013 at 12:43 PM, Raj ravi6...@gmail.com wrote: I do not have the ARS Installed, is there any way to retrieve that document? ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API changes in ARS v8.1
Thanks LJ for you help. I will initiate a ticket with BMC to get those. Would appreciate if you could send it across otherwise no problem at all. Forgot to mention earlier, we are on ARS upgrade path from v5.1.2 to v8.1. We have some customizations/code which is using Java API v7.5. Looking for Java API changes from ARS v7.5 onwards... since I will upgrading from ARS v7.6.04 to v8.1...do we need to make code changes at our end reviewing just ARS v7.6.04 ARS v8.1 JAVA API changes or all four different versions ARS v7.6.03, 7.6.04, 8.0 8.1. My understanding was reviewing just Java API changes of ARS v8.1 would suffice as it would be cumulative...but not sure? ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API and JSP
Yes..you can use use include directive as ARS is build on struts framework but include is used with tiles to include another jsp in one jsp bodyyou have given example is not for include directive but its a page directive used to import other java files or package to use defined function from that java file or package to jsp . Regards Jayesh On Jan 8, 2013 2:13 PM, John Baker jba...@javasystemsolutions.com wrote: Hello Does the JSP contain the include directive? %@ page import=com.bmc.arsys.api.ARServerUser % John ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API and JSP
Yes, ARS can be used inside include directive. The include tag lib directory is used to include other page into the current page. And the page directive is used to import java files, package and directive in to the page. Regards, Kanhu On Wed, Jan 9, 2013 at 10:27 AM, jayesh panchal jhpancha...@gmail.comwrote: ** Yes..you can use use include directive as ARS is build on struts framework but include is used with tiles to include another jsp in one jsp bodyyou have given example is not for include directive but its a page directive used to import other java files or package to use defined function from that java file or package to jsp . Regards Jayesh On Jan 8, 2013 2:13 PM, John Baker jba...@javasystemsolutions.com wrote: Hello Does the JSP contain the include directive? %@ page import=com.bmc.arsys.api.ARServerUser % John ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years _ARSlist: Where the Answers Are and have been for 20 years_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API and JSP
Ken, There is an interesting discussion that seems to have gotten it working on communities https://communities.bmc.com/communities/message/262335#262335 -Original Message- From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of Leihkauff, Kenneth G Sent: Monday, January 07, 2013 3:03 PM To: arslist@ARSLIST.ORG Subject: Java API and JSP ** Does anyone have experience using the BMC Java API in JSP web pages? I am able to successfully write java programs that connect to ARS and query, insert, update data in Remedy forms, etc. However, I am having a fundamental issue when trying to incorporate code within JSP pages. I am using Eclipse IDE with Java 6 on a Windows platform and Apache Tomcat for the jsp engine. You can see below the error ARServerUser cannot be resolved to a type when compiling. The CLASSPATH and PATH variables have been set and the Eclipse Project build path is shown below too. Thank you for your insight... Ken L., SAIC type Exception report message Unable to compile class for JSP: description The server encountered an internal error that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 20 in the jsp file: /NewFile.jsp ARServerUser cannot be resolved to a type 17: Date run: %= new java.util.Date() % 18: 19: % 20: ARServerUser connection1; 21: connection1 = new ARServerUser(); 22: % 23: In the Eclipse (screenshot), you can see where the BMC api jar file is referenced in the project and the package is referenced in the jsp code to the right. _ARSlist: Where the Answers Are and have been for 20 years_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Where the Answers Are, and have been for 20 years
Re: Java API connection pool question..
If the firewall is only closing the inactive connections, you might be able to persuade the mid tier to close them itself. Normally the mid tier keeps some unspecified number of idle connections in the pool for a certain time. In 7.6.4 there are options in the mid-tier config pages to set the number of idle connections that will remain in the pool and optionally the time they will remain there. I haven't tried them to see if they actually work in earlier versions and it's just the config pages that have changed, so YMMV, but the corresponding settings in config.properties for the number of idle connections is: arsystem.pooling_min_connections_per_server=0 And the time in minutes that an idle connection will remain in the pool: arsystem.proxy_idle_time_per_server=0 ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API connection pool question..
Thanks Mark, We are looking into both responses from you and Axton. Bmc eluded to connections to arserver are from the Java API connection pool, with 7.6.4 there's a new option called Lifespan, which if enabled, a connection will continue to talk to the same arserver it was linked to by the Loadbalancer in front of the ARServer group until the connection's lifespan expires, then the connection will be recycled. However, we don't have loadbalancer between ars and mt app server and not a 7.6.4. We plan on upgrading to that version in the near future (behind the firewall tier), so more funny times ahead. We are looking at KB and how changing the values to https://communities.bmc.com/communities/servlet/JiveServlet/previewBody/18162-102-3-39659/Mid-Tier_deployment_kb.pdf in the configbo.properites file # JavaAPI connection pooling parameters arsystem.pooling_max_connections_per_server=80 and look at these two command which I don't see in the configbo.properites or config.properites arsystem.pooling_min_connections_per_server=0 arsystem.proxy_idle_time_per_server=0 -- View this message in context: http://ars-action-request-system.1093659.n2.nabble.com/Java-API-connection-pool-question-tp7454090p7463929.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API connection pool question..
Axton, From our network admins, these points where made, in response to your post. The connections from the midtier (Websphere) server to the ARserver are persistent TCP connections. These connections are not stateless. Our firewall is doing stateful inspection on these connections. The firewall security policy allows all of these connections to be started. Connections are flushed from the firewall state tables after 1 hour of INACTIVITY. Not active connections are ever flushed. After an inactive connection has been flushed, any further packets (in either direction) are dropped by the firewall. No RST packets are sent to the session endpoints at the time of the flush or at the time of the packet drops. A firewall log entry is created for each of these out-of-state packet drops. After attempting to re-use one of the inactive/flushed connections, the application's session endpoint make take several minutes doing TCP retries of their dropped packets before they give up and start a new connection. We want to know how we can configure the AR product to either: 1) keep these connections active by implementing the keepalive protocol or 2) close the connections when the immediate unit of work is finished. -- View this message in context: http://ars-action-request-system.1093659.n2.nabble.com/Java-API-connection-pool-question-tp7454090p7459721.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API connection pool question..
TCP (layer 4) is stateful. RPC (layer 5) is not stateful. So long as the transport layer is ok (new session, old session, does not matter), then the session layer will be fine. As long as the firewall allows the creation of a new state when the Remedy API talks back (after a state entry has expired), it should create a new state in the firewall's state table. I do not know that it is possible to do either of the 2 things you are asking to do. You might be able to achieve point 2 if you disable the use of the session pool (see the end of the email). You might try setting connectionMaxRetries to 1 and the timeLagBetweenRetriesMillSec to 100. In the case of connectionMaxRetries, I don't know if 0 means do not retry or retry forever. One thing you could do is create a rule on the firewall to not use stateful tracking when packets originate from the MT machine and a destined to the ARServer on a defined destination port. These types of rules are taxing because they have to be evaluated for every packet that goes through the firewall, but it will allow the packets to flow as needed. You might also look at the firewall's policy on how it handles packets that it receives that do not match a state. Does it silently drop the packets or does it send a RST packet? If it is silently dropping the packets, I would expect the behavior you are seeing. If it sends an RST packet, it should tell the MT that the TCP session is not valid and it should create a new session (the Remedy API may not work in this way though, you will have to experiment to find out; I have not personally poked the API in this way to find out for sure and I don't have an environment readily available to test this scenario). (continued from above) arsys.xml let's you define some parameters on how the API operates: ?xml version=1.0 encoding=UTF-8? !-- This is a sample configuration file for AR System Java API. The values of the API configuration parameters in this sample are the default values. To override the default values, copy or rename this file to arsys_api.xml and change the configuration parameter values you want to override. You can remove or comment out the configuration parameters that you do not want to override and keep the default values. Configuration parameters: catalogFile: Base filename of XML message catalog. Do not include the file extension or the language code. Default value: arcatalog maxProxiesPerServer: Maximum number of proxy connections per server Valid values: 5, 10, 20 Default value: 10 connectionMaxRetries Valid values: 0, 1, 2 Default value: 0 timeLagBetweenRetriesMillSec Valid values: 1000, 2000 (in milliseconds) Default value: 1000 toStringStyle - any static ToStringStyle member of a custom class accessible to the current process. Valid values: org.apache.commons.lang.builder.ToStringStyle.DEFAULT_STYLE org.apache.commons.lang.builder.ToStringStyle.MULTI_LINE_STYLE org.apache.commons.lang.builder.ToStringStyle.NO_FIELD_NAMES_STYLE org.apache.commons.lang.builder.ToStringStyle.SHORT_PREFIX_STYLE org.apache.commons.lang.builder.ToStringStyle.SIMPLE_STYLE com.bmc.arsys.api.NoPrefixToStringStyle.NO_PREFIX_STYLE Default value: com.bmc.arsys.api.NoPrefixToStringStyle.NO_PREFIX_STYLE stringizeFieldAssignments - Controls whether the FieldAssignInfo class assignment members are stringized for easier access. Valid values: true, false Default value: false stringizeSetIfQualification - Controls whether the SetFieldsFromForm action set-if-qualification member is stringized for easier access. Valid values: true, false Default value: false apiRecording - Turns on the client side api logging and produces a command file(usernameservernameport_arapicmd.log) and a result output file(usernameservernameport_arapires.log). The value is a bit mask to allow for combination of features to be blended. e.g In order to have append mode for the log files and record only elapsed time and no result data, the value should be set to 2+8+32 = 42. Valid values: 0 No Logging 1 Logging ON 2 Record in append mode in the files. 4 Record start and finish Time 8 Record Elapsed Time in ms 16 Combine the command and result files into the result file 32 Do not record result data output 64 Buffer the file output Default value : 0 jniLoadMode - Parameter to control JNI library loading. Valid values: 0 JNI library will never be loaded 1 JNI library will
Re: Java API connection pool question..
Thanks Axton, I posed the question to your websphere admins, We use http server in this case is IBM HTTP Server - 6.1.0.25, j2ee server - IBM WebSphere Application Server - ND - 6.1.0.25. -- View this message in context: http://ars-action-request-system.1093659.n2.nabble.com/Java-API-connection-pool-question-tp7454090p7456744.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API connection pool question..
I don't know much about the IBM stack, but with Apache's AJP connector, you have the option to define keep alives (see socket_keepalive and ping_mode ): http://tomcat.apache.org/connectors-doc/reference/workers.html If the IBM HTTP server is talking HTTP to the WebSphere server, the firewall should not interfere with the communications since each HTTP request/response can negotiate the session information (it is basically stateless between request/response pairs). Since the firewall is interfering, I can only assume that some other protocol is in use. Axton Grams On Wed, Apr 11, 2012 at 12:04 PM, Dee ddus...@aim.com wrote: Thanks Axton, I posed the question to your websphere admins, We use http server in this case is IBM HTTP Server - 6.1.0.25, j2ee server - IBM WebSphere Application Server - ND - 6.1.0.25. -- View this message in context: http://ars-action-request-system.1093659.n2.nabble.com/Java-API-connection-pool-question-tp7454090p7456744.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API connection pool question..
Thanks Axton, We are exploring your suggestion. But in the interim we put a timer on firewall for ports to 2 hour, to be safe. Same question posed to BMC, the MT controls java connection pool and we can't. And set the Session timeout in the user preference/mt general setting to less than firewall. Which we have tested but still 'out of state session in the firewall login issues. To your point there maybe another protocol to look into. None of there additional responses, dove into the response you have provided. Axton Grams wrote: I don't know much about the IBM stack, but with Apache's AJP connector, you have the option to define keep alives (see socket_keepalive and ping_mode ): http://tomcat.apache.org/connectors-doc/reference/workers.html If the IBM HTTP server is talking HTTP to the WebSphere server, the firewall should not interfere with the communications since each HTTP request/response can negotiate the session information (it is basically stateless between request/response pairs). Since the firewall is interfering, I can only assume that some other protocol is in use. Axton Grams On Wed, Apr 11, 2012 at 12:04 PM, Dee ddus...@aim.com wrote: Thanks Axton, I posed the question to your websphere admins, We use http server in this case is IBM HTTP Server - 6.1.0.25, j2ee server - IBM WebSphere Application Server - ND - 6.1.0.25. -- View this message in context: http://ars-action-request-system.1093659.n2.nabble.com/Java-API-connection-pool-question-tp7454090p7456744.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are -- View this message in context: http://old.nabble.com/Java-API-connection-pool-question..-tp33663782p33672738.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API connection pool question..
In my previous replies I was under the impression that the firewall was between the web servers and the websphere server. Disregard my previous messages. This is a more common arrangement, and for whatever reason when I read your message, I saw what I wanted to see. You have to remember that connections to Remedy using the Remedy API are stateless. That is why you can open your user tool, log in to Remdy, unplug your machine from the network, plug in and get a different IP address and things just work. I assume the same is true of the connection pools since it is all built on the same stack. Each RPC datagram contains the authentication information, so if a connection is not already established, a new one is created when packets come from the client destined for the server. This is different from stateful protocols, like Oracle's OCI, SSH, etc. If your firewall is blocking the connections between the midtier server and the arserver, you need to look at the blocked packets and the firewall policy to find out why. Most firewalls are stateful for TCP connections, and attempt to be stateful for UDP connections (they typically look at the source IP/port and destination IP/port and create a state based on that information). They will generally accept SYN packets to add a new state to the state table, then use the return SYN/ACK packet to finalize the state. From that point forward, packets that match that entry in the state table are allowed to pass. An RST packet will typically terminate/expire a TCP state and UDP states just have to expire according to the threshold configured on the firewall. Check on the midtier server whether the connection is over UDP or TCP (use tcpdump on unix/linux and WireShark on Windows). If it is using UDP, check the number of states the firewall is capable of tracking. Make sure that limit on the number of UDP states is not breached, because the firewall will start expiring, throttling, or use some other means to stay under that limit. If it is using TCP, things are not so straight forward. What does your firewall say? Is it dropping packets or sending RST packets for packets that try to pass through that do not match the state table? Most firewalls keep track of the last packet for a given state and expire only sessions that have been inactive (no packets) for a given amount of time. In your original message you stated that the firewall flushes connections on each session every hour. If this in fact the case, it is a brain-dead expiration policy that is bound to cause problems. I don't know what kind of firewall you are using, but the person that manages your firewalls should be able to see what is being blocked and determine why those things are being blocked (if this in fact the cause of your problems). It could be something as simple as the firewall is under-powered for the task at hand and is dropping old states to keep up with the new states. On the other hand, your problem may not be your firewall. Axton Grams On Wed, Apr 11, 2012 at 9:03 PM, RemedyAdmin ddus...@aim.com wrote: Thanks Axton, We are exploring your suggestion. But in the interim we put a timer on firewall for ports to 2 hour, to be safe. Same question posed to BMC, the MT controls java connection pool and we can't. And set the Session timeout in the user preference/mt general setting to less than firewall. Which we have tested but still 'out of state session in the firewall login issues. To your point there maybe another protocol to look into. None of there additional responses, dove into the response you have provided. Axton Grams wrote: I don't know much about the IBM stack, but with Apache's AJP connector, you have the option to define keep alives (see socket_keepalive and ping_mode ): http://tomcat.apache.org/connectors-doc/reference/workers.html If the IBM HTTP server is talking HTTP to the WebSphere server, the firewall should not interfere with the communications since each HTTP request/response can negotiate the session information (it is basically stateless between request/response pairs). Since the firewall is interfering, I can only assume that some other protocol is in use. Axton Grams On Wed, Apr 11, 2012 at 12:04 PM, Dee ddus...@aim.com wrote: Thanks Axton, I posed the question to your websphere admins, We use http server in this case is IBM HTTP Server - 6.1.0.25, j2ee server - IBM WebSphere Application Server - ND - 6.1.0.25. -- View this message in context: http://ars-action-request-system.1093659.n2.nabble.com/Java-API-connection-pool-question-tp7454090p7456744.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API connection pool question..
Awesome explanation, Thank you Axton. The connection on the midtier is TCP, but will double for UDP. Question: our MT points to TCP, would it in parallel use UDP? Although, yesterday, I enabled portmapper for a local application to ARServer, so UDP 111 could be utilized. I will followup with the network admin on what is actually being blocked and let you know. To your point and even the n/w admins are saying the policy is as you put it brain dead, they don't make policy, only implement and there are no governors. This probably came from vender Checkpoint as a recommendation. Even with no policy owners, they are currently looking at increasing the 1hour to 2 hour on the firewall connection table, which I presume is the default. This is because all connections are logged; may be performance issue on the firewall for the 1hour limit on the connection table. Currently, the production is in a legacy environment, no firewalls, and portmapped. We don't encounter the issue. In the near future we will be moving to new server behind firewall. -- View this message in context: http://ars-action-request-system.1093659.n2.nabble.com/Java-API-connection-pool-question-tp7454090p7458264.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API connection pool question..
What do you use to connect the http server to the j2ee server? If using something like ajp, you can set up a keepalive. Axton Grams On Apr 10, 2012 2:22 PM, Dee ddus...@aim.com wrote: Hello List, Senario, Browser -- Loadbalancer -- 2 http server -- UNIX + Websphere App Server (MT) -- F/W-- ARSERVER UNIX + DB=Oracle 10g) This is the first time the ARS is behind firewall. The firewall flushes connection on each session every hour. Midtier configuration session timeout is set to 60 min. We see slow/long logins and 'out of state session in the firewall. So if the Connections to arserver are from the Java API connection pool, - How can the connection pool be managed? - If the keepalive protocol is enabled, will this keep session to database open? - If the connection pool is has stale connection, how can they flushed immediately such that less time to create new session? - if the unix default keepalive 2 hour variable is changed to 1hour, how does this impact the Java API connection pool. Basically, how can we either keep the session alive across a f/w that flushes sessions every hour? or Manage the pool to flush stale connections very quickly, such that establishing another session (login) is in seconds rather than minutes? -- View this message in context: http://ars-action-request-system.1093659.n2.nabble.com/Java-API-connection-pool-question-tp7454090p7454090.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API question - how to save a filter
(Found my own answer) -- actually - walked away from the computer -- did some dishes -- then thought uggg - the user needs to save it -- not the filter itself… Often the best way to solve a problem - is to walk away from the computer. My wife would say -- would be to do some dishes :) user.setFilter(f) UG -- sorry for the wasted post. -John On Sat, Apr 7, 2012 at 4:10 PM, John Sundberg john.sundb...@kineticdata.com wrote: Java ARS API 7.6 Any idea how to save a filter…. f = user.getFilter(SomeSampleFilter) f.setHelpText(John was here) f.save ??? f.commit ??? f. I looked through the docs -- couldn't find anything …. I may have totally missed it. ??? -John -- *John Sundberg* Kinetic Data, Inc. Your Business. Your Process. *WWRUG10 Best Customer Service/Support Award* *WWRUG09 Innovator of the Year Award* * * 651-556-0930 I john.sundb...@kineticdata.com www.kineticdata.com I community.kineticdata.com -- *John Sundberg* Kinetic Data, Inc. Your Business. Your Process. *WWRUG10 Best Customer Service/Support Award* *WWRUG09 Innovator of the Year Award* * * 651-556-0930 I john.sundb...@kineticdata.com www.kineticdata.com I community.kineticdata.com ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API: how to really log out ? (v7.1)
Hi Ben, Not being a Java guy, I hesitate to ask, but should you not logout first then clear the context? that wa a good suggestion :) I tried both orders but the leak still occurs. I'll see with a more recent version of ARS later on. thanks anyway! Thibaut -- http://www.logeek.fr ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API: how to really log out ? (v7.1)
Not being a Java guy, I hesitate to ask, but should you not logout first then clear the context? Ben From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of Thibaut Barrère Sent: January-24-12 08:59 To: arslist@ARSLIST.ORG Subject: Re: Java API: how to really log out ? (v7.1) ** Hi Leaks are almost always the apps fault and not the APIs fault. Well in this case, the repro was fairly simple. I used JRuby and the Java ARS API 5.1, basically the following code: require 'arapi51' include_class 'com.remedy.arsys.api.ARServerUser' while true context = ARServerUser.new(user,password,'', host) context.login sleep(5) context.clear context.logout end Following along with TaskInfo, the process leaks 3 connections at each login. I did not run this against ARS 7+ but will soon and will report back here (as my customer is planning to upgrade). -- Thibaut _attend WWRUG12 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API: how to really log out ? (v7.1)
Hi Ben, Are not MetaUpdate linked to the C-API? In the C-API, you have to issue an ARTermination() or each session you have created, which is typically one if you work against one server. In the Java-API, I would expect that this is handled automatically when your (single) server object is destroyed. It seems difficult to write a Java-API-program that leaks sessions, unless there is some problem with the Java-API itself. On the other hand, it seems unlikely that BMC has left such a bug in the Java-API. Have you tried running a newer version of the Java-API? Best Regards - Misi, RRR AB, http://www.rrr.se (ARSList MVP 2011) Products from RRR Scandinavia (Best R.O.I. Award at WWRUG10/11): * RRR|License - Not enough Remedy licenses? Save money by optimizing. * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs. Find these products, and many free tools and utilities, at http://rrr.se. I cannot comment on the logout leaking handles as Meta-Update issues logouts at end of job. Currently, a Meta-Update job is a single process that begins and ends. However, it can be very log lived and hammers on the API quite heavily. So, I can comment on leaks. Leaks are almost always the apps fault and not the APIs fault. You must call the APIs free() functions as required and your own as well. It is best to have a routine to dump allocated blocks at appropriate points and then go through them manually. This is part of a special version I build on Windows. gcc does not have equivalent functions without a special library. In this version, I replace the standard allocation functions with one that cuts a trace and calls the original functions. Then it is no problem to determine where the leaked memory was allocated (with the exception of API calls). The API is not completely documented on the subject of what arguments return allocated memory etc. I always have had grief with mixing memory allocation even for the same structure, so I have replicated the ARFree functions and use them for my own allocations and use the API for its allocations. There were some API leaks in older versions. I do not think 7.1 was one of them. There were patches applied. I think they were around the 5.2 area but have kept to formal logs on the subject. I know that huge jobs (50k records * 5 outputs etc) do not leak memory. Cheers Ben Chernys Senior Software Architect Description: logoSthInc-sm Canada / Deutschland / Germany Mobile: +49 171 380 2329GMT + 1 + [ DST ] Email: Ben.Chernys _AT_ softwaretoolhouse.com Web: http://www.softwaretoolhouse.com/ www.softwaretoolhouse.com Check out Software Tool House's free Diary Editor. Meta-Update, our premium ARS Data tool, lets you automate your imports, migrations, in no time at all, without programming, without staging forms, without merge workflow. http://www.softwaretoolhouse.com/ http://www.softwaretoolhouse.com/ From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of Thibaut Barrère Sent: January-22-12 12:30 To: arslist@ARSLIST.ORG Subject: Re: Java API: how to really log out ? (v7.1) ** Hi, On Tue, May 31, 2011 at 5:42 PM, Papolu, Appajee appajee_pap...@bmc.com wrote: AR API methoods in essense have a notion of establishing connection, authenticating, performing the eventual network api call to the Server and so on. That is why your subsequent ops after logout just work seamlessly. Of course all this noted additional work happens conditionally on as needed basis. So, be assured that -- if you do a login at first and logout at the very end, then expected logout semantics are upheld (i.e. this specific user's acquired license is released etc). Some extra feedback much later on, in case it helps someone (and I think we have some leaking somewhere). I must mention that earlier on, I faced the same situation with an ARS 5.1 installation. What I diagnosed in the end (using tools like TaskInfo) is that the process was leaking 3 handles per login, but logout (with or without clear in 5.1) did not release the connections (using ARServerUser to login/logout). I'm concerned that this may be happening as well with 7.1 (although I cannot test right now). This is a bit of a concern for long running processes, such as job processing workers. I'd love to hear from others, in case someone has experimented more leaks on long running processes! -- Thibaut _attend WWRUG12 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12
Re: Java API: how to really log out ? (v7.1)
Indeed. C-API As I stated. Indeed ARTermination. As I stated :). Meta-Update can have multiple sessions (and hence issue multiple ARTermination calls. Cheers Misi. Ben. -Original Message- From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of Misi Mladoniczky Sent: January-23-12 09:05 To: arslist@ARSLIST.ORG Subject: Re: Java API: how to really log out ? (v7.1) Hi Ben, Are not MetaUpdate linked to the C-API? In the C-API, you have to issue an ARTermination() or each session you have created, which is typically one if you work against one server. In the Java-API, I would expect that this is handled automatically when your (single) server object is destroyed. It seems difficult to write a Java-API-program that leaks sessions, unless there is some problem with the Java-API itself. On the other hand, it seems unlikely that BMC has left such a bug in the Java-API. Have you tried running a newer version of the Java-API? Best Regards - Misi, RRR AB, http://www.rrr.se (ARSList MVP 2011) Products from RRR Scandinavia (Best R.O.I. Award at WWRUG10/11): * RRR|License - Not enough Remedy licenses? Save money by optimizing. * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs. Find these products, and many free tools and utilities, at http://rrr.se. I cannot comment on the logout leaking handles as Meta-Update issues logouts at end of job. Currently, a Meta-Update job is a single process that begins and ends. However, it can be very log lived and hammers on the API quite heavily. So, I can comment on leaks. Leaks are almost always the app?s fault and not the API?s fault. You must call the API?s free() functions as required and your own as well. It is best to have a routine to dump allocated blocks at appropriate points and then go through them manually. This is part of a special version I build on Windows. gcc does not have equivalent functions without a special library. In this version, I replace the standard allocation functions with one that cuts a trace and calls the original functions. Then it is no problem to determine where the leaked memory was allocated (with the exception of API calls). The API is not completely documented on the subject of what arguments return allocated memory etc. I always have had grief with mixing memory allocation even for the same structure, so I have replicated the ARFree functions and use them for my own allocations and use the API for its allocations. There were some API leaks in older versions. I do not think 7.1 was one of them. There were patches applied. I think they were around the 5.2 area but have kept to formal logs on the subject. I know that huge jobs (50k records * 5 outputs etc) do not leak memory. Cheers Ben Chernys Senior Software Architect Description: logoSthInc-sm Canada / Deutschland / Germany Mobile: +49 171 380 2329GMT + 1 + [ DST ] Email: Ben.Chernys _AT_ softwaretoolhouse.com Web: http://www.softwaretoolhouse.com/ www.softwaretoolhouse.com Check out Software Tool House's free Diary Editor. Meta-Update, our premium ARS Data tool, lets you automate your imports, migrations, in no time at all, without programming, without staging forms, without merge workflow. http://www.softwaretoolhouse.com/ http://www.softwaretoolhouse.com/ From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of Thibaut Barr re Sent: January-22-12 12:30 To: arslist@ARSLIST.ORG Subject: Re: Java API: how to really log out ? (v7.1) ** Hi, On Tue, May 31, 2011 at 5:42 PM, Papolu, Appajee appajee_pap...@bmc.com wrote: AR API methoods in essense have a notion of establishing connection, authenticating, performing the eventual network api call to the Server and so on. That is why your subsequent ops after logout just work seamlessly. Of course all this noted additional work happens conditionally on as needed basis. So, be assured that -- if you do a login at first and logout at the very end, then expected logout semantics are upheld (i.e. this specific user's acquired license is released etc). Some extra feedback much later on, in case it helps someone (and I think we have some leaking somewhere). I must mention that earlier on, I faced the same situation with an ARS 5.1 installation. What I diagnosed in the end (using tools like TaskInfo) is that the process was leaking 3 handles per login, but logout (with or without clear in 5.1) did not release the connections (using ARServerUser to login/logout). I'm concerned that this may be happening as well with 7.1 (although I cannot test right now). This is a bit of a concern for long running processes, such as job processing workers. I'd love to hear from others, in case someone has experimented more leaks on long running
Re: Java API: how to really log out ? (v7.1)
Hi, Sorry, did not see that as I only read the last post that I replied to... Best Regards - Misi, RRR AB, http://www.rrr.se (ARSList MVP 2011) Products from RRR Scandinavia (Best R.O.I. Award at WWRUG10/11): * RRR|License - Not enough Remedy licenses? Save money by optimizing. * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs. Find these products, and many free tools and utilities, at http://rrr.se. Indeed. C-API As I stated. Indeed ARTermination. As I stated :). Meta-Update can have multiple sessions (and hence issue multiple ARTermination calls. Cheers Misi. Ben. -Original Message- From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of Misi Mladoniczky Sent: January-23-12 09:05 To: arslist@ARSLIST.ORG Subject: Re: Java API: how to really log out ? (v7.1) Hi Ben, Are not MetaUpdate linked to the C-API? In the C-API, you have to issue an ARTermination() or each session you have created, which is typically one if you work against one server. In the Java-API, I would expect that this is handled automatically when your (single) server object is destroyed. It seems difficult to write a Java-API-program that leaks sessions, unless there is some problem with the Java-API itself. On the other hand, it seems unlikely that BMC has left such a bug in the Java-API. Have you tried running a newer version of the Java-API? Best Regards - Misi, RRR AB, http://www.rrr.se (ARSList MVP 2011) Products from RRR Scandinavia (Best R.O.I. Award at WWRUG10/11): * RRR|License - Not enough Remedy licenses? Save money by optimizing. * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs. Find these products, and many free tools and utilities, at http://rrr.se. I cannot comment on the logout leaking handles as Meta-Update issues logouts at end of job. Currently, a Meta-Update job is a single process that begins and ends. However, it can be very log lived and hammers on the API quite heavily. So, I can comment on leaks. Leaks are almost always the app?s fault and not the API?s fault. You must call the API?s free() functions as required and your own as well. It is best to have a routine to dump allocated blocks at appropriate points and then go through them manually. This is part of a special version I build on Windows. gcc does not have equivalent functions without a special library. In this version, I replace the standard allocation functions with one that cuts a trace and calls the original functions. Then it is no problem to determine where the leaked memory was allocated (with the exception of API calls). The API is not completely documented on the subject of what arguments return allocated memory etc. I always have had grief with mixing memory allocation even for the same structure, so I have replicated the ARFree functions and use them for my own allocations and use the API for its allocations. There were some API leaks in older versions. I do not think 7.1 was one of them. There were patches applied. I think they were around the 5.2 area but have kept to formal logs on the subject. I know that huge jobs (50k records * 5 outputs etc) do not leak memory. Cheers Ben Chernys Senior Software Architect Description: logoSthInc-sm Canada / Deutschland / Germany Mobile: +49 171 380 2329GMT + 1 + [ DST ] Email: Ben.Chernys _AT_ softwaretoolhouse.com Web: http://www.softwaretoolhouse.com/ www.softwaretoolhouse.com Check out Software Tool House's free Diary Editor. Meta-Update, our premium ARS Data tool, lets you automate your imports, migrations, in no time at all, without programming, without staging forms, without merge workflow. http://www.softwaretoolhouse.com/ http://www.softwaretoolhouse.com/ From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of Thibaut Barr re Sent: January-22-12 12:30 To: arslist@ARSLIST.ORG Subject: Re: Java API: how to really log out ? (v7.1) ** Hi, On Tue, May 31, 2011 at 5:42 PM, Papolu, Appajee appajee_pap...@bmc.com wrote: AR API methoods in essense have a notion of establishing connection, authenticating, performing the eventual network api call to the Server and so on. That is why your subsequent ops after logout just work seamlessly. Of course all this noted additional work happens conditionally on as needed basis. So, be assured that -- if you do a login at first and logout at the very end, then expected logout semantics are upheld (i.e. this specific user's acquired license is released etc). Some extra feedback much later on, in case it helps someone (and I think we have some leaking somewhere). I must mention that earlier on, I faced the same situation with an ARS 5.1 installation. What I diagnosed in the end (using tools like TaskInfo) is that the process was leaking 3
Re: Java API: how to really log out ? (v7.1)
Hi Leaks are almost always the app’s fault and not the API’s fault. Well in this case, the repro was fairly simple. I used JRuby and the Java ARS API 5.1, basically the following code: require 'arapi51' include_class 'com.remedy.arsys.api.ARServerUser' while true context = ARServerUser.new(user,password,'', host) context.login sleep(5) context.clear context.logout end Following along with TaskInfo, the process leaks 3 connections at each login. I did not run this against ARS 7+ but will soon and will report back here (as my customer is planning to upgrade). -- Thibaut ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API: how to really log out ? (v7.1)
Hi, On Tue, May 31, 2011 at 5:42 PM, Papolu, Appajee appajee_pap...@bmc.comwrote: AR API methoods in essense have a notion of establishing connection, authenticating, performing the eventual network api call to the Server and so on. That is why your subsequent ops after logout just work seamlessly. Of course all this noted additional work happens conditionally on as needed basis. So, be assured that -- if you do a login at first and logout at the very end, then expected logout semantics are upheld (i.e. this specific user's acquired license is released etc). Some extra feedback much later on, in case it helps someone (and I think we have some leaking somewhere). I must mention that earlier on, I faced the same situation with an ARS 5.1 installation. What I diagnosed in the end (using tools like TaskInfo) is that the process was leaking 3 handles per login, but logout (with or without clear in 5.1) did not release the connections (using ARServerUser to login/logout). I'm concerned that this may be happening as well with 7.1 (although I cannot test right now). This is a bit of a concern for long running processes, such as job processing workers. I'd love to hear from others, in case someone has experimented more leaks on long running processes! -- Thibaut ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API: how to really log out ? (v7.1)
I cannot comment on the logout leaking handles as Meta-Update issues logouts at end of job. Currently, a Meta-Update job is a single process that begins and ends. However, it can be very log lived and hammers on the API quite heavily. So, I can comment on leaks. Leaks are almost always the apps fault and not the APIs fault. You must call the APIs free() functions as required and your own as well. It is best to have a routine to dump allocated blocks at appropriate points and then go through them manually. This is part of a special version I build on Windows. gcc does not have equivalent functions without a special library. In this version, I replace the standard allocation functions with one that cuts a trace and calls the original functions. Then it is no problem to determine where the leaked memory was allocated (with the exception of API calls). The API is not completely documented on the subject of what arguments return allocated memory etc. I always have had grief with mixing memory allocation even for the same structure, so I have replicated the ARFree functions and use them for my own allocations and use the API for its allocations. There were some API leaks in older versions. I do not think 7.1 was one of them. There were patches applied. I think they were around the 5.2 area but have kept to formal logs on the subject. I know that huge jobs (50k records * 5 outputs etc) do not leak memory. Cheers Ben Chernys Senior Software Architect Description: logoSthInc-sm Canada / Deutschland / Germany Mobile: +49 171 380 2329GMT + 1 + [ DST ] Email: Ben.Chernys _AT_ softwaretoolhouse.com Web: http://www.softwaretoolhouse.com/ www.softwaretoolhouse.com Check out Software Tool House's free Diary Editor. Meta-Update, our premium ARS Data tool, lets you automate your imports, migrations, in no time at all, without programming, without staging forms, without merge workflow. http://www.softwaretoolhouse.com/ http://www.softwaretoolhouse.com/ From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of Thibaut Barrère Sent: January-22-12 12:30 To: arslist@ARSLIST.ORG Subject: Re: Java API: how to really log out ? (v7.1) ** Hi, On Tue, May 31, 2011 at 5:42 PM, Papolu, Appajee appajee_pap...@bmc.com wrote: AR API methoods in essense have a notion of establishing connection, authenticating, performing the eventual network api call to the Server and so on. That is why your subsequent ops after logout just work seamlessly. Of course all this noted additional work happens conditionally on as needed basis. So, be assured that -- if you do a login at first and logout at the very end, then expected logout semantics are upheld (i.e. this specific user's acquired license is released etc). Some extra feedback much later on, in case it helps someone (and I think we have some leaking somewhere). I must mention that earlier on, I faced the same situation with an ARS 5.1 installation. What I diagnosed in the end (using tools like TaskInfo) is that the process was leaking 3 handles per login, but logout (with or without clear in 5.1) did not release the connections (using ARServerUser to login/logout). I'm concerned that this may be happening as well with 7.1 (although I cannot test right now). This is a bit of a concern for long running processes, such as job processing workers. I'd love to hear from others, in case someone has experimented more leaks on long running processes! -- Thibaut _attend WWRUG12 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are image003.jpg
Re: Java API Help - SelectionFieldLimit
John and I communicated offline on this process for several days. After explaining what I was trying to do (move a field from server A to Server B through static file), he suggested that I look into serializing the object http://java.sun.com/developer/technicalArticles/Programming/serialization/ not being a java developer that came by my knowledge from school, I'm not familiar with some of the nuances of Java that I maybe should have been familiar with. After reading up on serialization, it proved to be EXACTLY what I was looking for. John, Thank you for your time and considerable knowledge on this matter The rest of you, Hopefully you find this nugget of information useful in your travels. -Original Message- From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of John Baker Sent: Monday, December 12, 2011 8:09 AM To: arslist@ARSLIST.ORG Subject: Java API Help - SelectionFieldLimit LJ, If you looked up the meaning of snide, you'd find the following definition: Malicious, derogatory, counterfeit, sham. Clearly, stating it's not obvious - which it isn't, given you've asked the question and come to the same conclusion - is entirely reasonable. I made time to help you and avoid you wasting any more of your time. And I spent 20 minutes on Sunday looking at your previous question, too. John ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API Help - SelectionFieldLimit
The last line... really? -Original Message- From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of John Baker Sent: 12 December 2011 08:31 To: arslist@ARSLIST.ORG Subject: Java API Help - SelectionFieldLimit LJ, If you use the constructor or set method that takes an array of Strings, you get a regular list. If you use the constructor or set method that takes a list of EnumItems, you get a custom list. I'll leave it to you for feedback on how obvious this seems :-) John ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API Help - StructItemInfo
I find a good strategy sometimes is to locate the corresponding item in the C API as it's usually better documented. In this case, it seems these are used when you are importing or exporting VUIs (type = VUI) or mail templates (type = MAIL), and they allow you to specify the specific VUI or mail template you want to import/export for the schema named in the name field. So unless you are dealing with VUIs or mail templates you can probably ignore them. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API Help - SelectionFieldLimit
John, I then apologize...sarcasm is extremely difficult to pick up in this medium. Going back and re-reading your post, I can read it in a different frame of mind and see that were was no malicious or derogatory intent :) Thank you for the time you spent helping a fellow lister...it allows me to build my code to create 'regular' lists :) -Original Message- From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of John Baker Sent: Monday, December 12, 2011 8:09 AM To: arslist@ARSLIST.ORG Subject: Java API Help - SelectionFieldLimit LJ, If you looked up the meaning of snide, you'd find the following definition: Malicious, derogatory, counterfeit, sham. Clearly, stating it's not obvious - which it isn't, given you've asked the question and come to the same conclusion - is entirely reasonable. I made time to help you and avoid you wasting any more of your time. And I spent 20 minutes on Sunday looking at your previous question, too. John ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug12 www.wwrug12.com ARSList: Where the Answers Are
Re: Java API: how to really log out ? (v7.1)
Thibaut, Give this a try .turn on user logging log in, do your normal stuff, log out, and then perform your query .check to see if it does another login automatically .I think you will find that it does. In my mind I only do a log out when my program is terminating so Ive never tried to do anything after issuing the logout statement. If you are concerned about it I would set the ARServerUser object to null after logging out if you dont want it used again. From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of Thibaut Barrère Sent: Tuesday, May 31, 2011 9:04 AM To: arslist@ARSLIST.ORG Subject: Java API: how to really log out ? (v7.1) ** Hello, if I issue an ARServerUser.logout via the Java API (7.1), I can still connect to the server, retrieve entries etc. Is it a known issue ? Is there a work-around ? thanks! -- Thibaut _attend WWRUG11 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug11 www.wwrug.com ARSList: Where the Answers Are
Re: Java API: how to really log out ? (v7.1)
AR API methoods in essense have a notion of establishing connection, authenticating, performing the eventual network api call to the Server and so on. That is why your subsequent ops after logout just work seamlessly. Of course all this noted additional work happens conditionally on as needed basis. So, be assured that -- if you do a login at first and logout at the very end, then expected logout semantics are upheld (i.e. this specific user's acquired license is released etc). Appajee From: Action Request System discussion list(ARSList) [arslist@ARSLIST.ORG] On Behalf Of Thibaut Barrère [thibaut.barr...@gmail.com] Sent: Tuesday, May 31, 2011 8:03 AM To: arslist@ARSLIST.ORG Subject: Java API: how to really log out ? (v7.1) ** Hello, if I issue an ARServerUser.logout via the Java API (7.1), I can still connect to the server, retrieve entries etc. Is it a known issue ? Is there a work-around ? thanks! -- Thibaut _attend WWRUG11 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug11 www.wwrug.com ARSList: Where the Answers Are
Re: JAVA API in a x64 machine using x32 dlls
Many thanks Axton. --- En date de : Sam 5.2.11, Axton axton.gr...@gmail.com a écrit : De: Axton axton.gr...@gmail.com Objet: Re: JAVA API in a x64 machine using x32 dlls À: arslist@ARSLIST.ORG Date: Samedi 5 février 2011, 16h45 ** These are the option I see:- Use a 32-bit JVM and use the Remedy Java API - Use a 64-bit JVM and don't use the Remedy Java API I don't know if the JVM requirements have changed with the 7.6 versions. Maybe someone else can comment on that. Axton The opinions, statements, and/or suggested courses of action expressed in this E-mail do not necessarily reflect those of BMC Software, Inc. My voluntary participation in this forum is not intended to convey a role as a spokesperson, liaison or public relations representative for BMC Software, Inc. On Sat, Feb 5, 2011 at 6:52 AM, Frex Popo frexp...@yahoo.fr wrote: ** Many thanks for all our replies. So by Native Java API, you mean discard the remedy libraries and write your own like reinventing te wheel so to speak. Or Install a 32x JVM on a 64x OS and - assuming it will happily reside with a 64x JVM in the same machine - use the correct Java version when compiling and running the API? Am I right? Regards frex --- En date de : Ven 4.2.11, Axton axton.gr...@gmail.com a écrit : De: Axton axton.gr...@gmail.com Objet: Re: JAVA API in a x64 machine using x32 dlls À: arslist@ARSLIST.ORG Date: Vendredi 4 février 2011, 16h39 ** Hot deployments would sure make development and deployments a lot easier (and more productive - less development time and less downtime). Getting rid of the native library dependencies would make that possible. Axton Grams The opinions, statements, and/or suggested courses of action expressed in this E-mail do not necessarily reflect those of BMC Software, Inc. My voluntary participation in this forum is not intended to convey a role as a spokesperson, liaison or public relations representative for BMC Software, Inc. On Fri, Feb 4, 2011 at 9:24 AM, John Baker jba...@javasystemsolutions.com wrote: Axton is correct, however you almost certainly don't want to really use a 64bit VM, and if this isn't Midtier, you could probably use the native Java API. The Midtier, last time I checked, is 99.9% native library free. Curiously, the only part of the native library it still uses is checking the Midtier configuration password is valid. Perhaps someone at BMC could comment out the one or two lines of code, eject the API, allowing us to deploy much smaller WAR files without Tomcat (and other servlet engines) crashing when the Midtier is restarted (because the JVM can't share the native libraries between classloaders). -- Single Sign On for AR System http://www.javasystemsolutions.com/jss/ssplugin ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug11 www.wwrug.com ARSList: Where the Answers Are _attend WWRUG11 www.wwrug.com ARSlist: Where the Answers Are_ _attend WWRUG11 www.wwrug.com ARSlist: Where the Answers Are_ _attend WWRUG11 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug11 www.wwrug.com ARSList: Where the Answers Are
Re: JAVA API in a x64 machine using x32 dlls
Many thanks for all our replies. So by Native Java API, you mean discard the remedy libraries and write your own like reinventing te wheel so to speak. Or Install a 32x JVM on a 64x OS and - assuming it will happily reside with a 64x JVM in the same machine - use the correct Java version when compiling and running the API? Am I right? Regards frex --- En date de : Ven 4.2.11, Axton axton.gr...@gmail.com a écrit : De: Axton axton.gr...@gmail.com Objet: Re: JAVA API in a x64 machine using x32 dlls À: arslist@ARSLIST.ORG Date: Vendredi 4 février 2011, 16h39 ** Hot deployments would sure make development and deployments a lot easier (and more productive - less development time and less downtime). Getting rid of the native library dependencies would make that possible. Axton Grams The opinions, statements, and/or suggested courses of action expressed in this E-mail do not necessarily reflect those of BMC Software, Inc. My voluntary participation in this forum is not intended to convey a role as a spokesperson, liaison or public relations representative for BMC Software, Inc. On Fri, Feb 4, 2011 at 9:24 AM, John Baker jba...@javasystemsolutions.com wrote: Axton is correct, however you almost certainly don't want to really use a 64bit VM, and if this isn't Midtier, you could probably use the native Java API. The Midtier, last time I checked, is 99.9% native library free. Curiously, the only part of the native library it still uses is checking the Midtier configuration password is valid. Perhaps someone at BMC could comment out the one or two lines of code, eject the API, allowing us to deploy much smaller WAR files without Tomcat (and other servlet engines) crashing when the Midtier is restarted (because the JVM can't share the native libraries between classloaders). -- Single Sign On for AR System http://www.javasystemsolutions.com/jss/ssplugin ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug11 www.wwrug.com ARSList: Where the Answers Are _attend WWRUG11 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug11 www.wwrug.com ARSList: Where the Answers Are
Re: JAVA API in a x64 machine using x32 dlls
These are the option I see: - Use a 32-bit JVM and use the Remedy Java API - Use a 64-bit JVM and don't use the Remedy Java API I don't know if the JVM requirements have changed with the 7.6 versions. Maybe someone else can comment on that. Axton The opinions, statements, and/or suggested courses of action expressed in this E-mail do not necessarily reflect those of BMC Software, Inc. My voluntary participation in this forum is not intended to convey a role as a spokesperson, liaison or public relations representative for BMC Software, Inc. On Sat, Feb 5, 2011 at 6:52 AM, Frex Popo frexp...@yahoo.fr wrote: ** Many thanks for all our replies. So by Native Java API, you mean discard the remedy libraries and write your own like reinventing te wheel so to speak. Or Install a 32x JVM on a 64x OS and - assuming it will happily reside with a 64x JVM in the same machine - use the correct Java version when compiling and running the API? Am I right? Regards frex --- En date de : *Ven 4.2.11, Axton axton.gr...@gmail.com* a écrit : De: Axton axton.gr...@gmail.com Objet: Re: JAVA API in a x64 machine using x32 dlls À: arslist@ARSLIST.ORG Date: Vendredi 4 février 2011, 16h39 ** Hot deployments would sure make development and deployments a lot easier (and more productive - less development time and less downtime). Getting rid of the native library dependencies would make that possible. Axton Grams The opinions, statements, and/or suggested courses of action expressed in this E-mail do not necessarily reflect those of BMC Software, Inc. My voluntary participation in this forum is not intended to convey a role as a spokesperson, liaison or public relations representative for BMC Software, Inc. On Fri, Feb 4, 2011 at 9:24 AM, John Baker jba...@javasystemsolutions.comhttp://fr.mc265.mail.yahoo.com/mc/compose?to=jba...@javasystemsolutions.com wrote: Axton is correct, however you almost certainly don't want to really use a 64bit VM, and if this isn't Midtier, you could probably use the native Java API. The Midtier, last time I checked, is 99.9% native library free. Curiously, the only part of the native library it still uses is checking the Midtier configuration password is valid. Perhaps someone at BMC could comment out the one or two lines of code, eject the API, allowing us to deploy much smaller WAR files without Tomcat (and other servlet engines) crashing when the Midtier is restarted (because the JVM can't share the native libraries between classloaders). -- Single Sign On for AR System http://www.javasystemsolutions.com/jss/ssplugin ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug11 www.wwrug.com ARSList: Where the Answers Are _attend WWRUG11 www.wwrug.com ARSlist: Where the Answers Are_ _attend WWRUG11 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug11 www.wwrug.com ARSList: Where the Answers Are
Re: JAVA API in a x64 machine using x32 dlls
You can not classload a 32-bit native library (JNI) using a 64-bit JVM, and vice versa. You will be constrained to a 32-bit JVM as long as those 32-bit native libraries are required. Axton The opinions, statements, and/or suggested courses of action expressed in this E-mail do not necessarily reflect those of BMC Software, Inc. My voluntary participation in this forum is not intended to convey a role as a spokesperson, liaison or public relations representative for BMC Software, Inc. On Fri, Feb 4, 2011 at 8:27 AM, Frex Popo frexp...@yahoo.fr wrote: ** Dear listers, I am not a Java person and would need some pointers from those who wrote Java API in the past. The company integrated with some supplier's application using web services. They got into all kind of problems so they decided to go it the Java API route. Someone from the supplier's end wrote some Java program which connects to the remedy server and creates/updates some tickets etc.. He started with a stand alone server which he installed in his machine. He used all the dll. file listed in the API integration manual. He got his program working. He then deployed his program in a WAS61 (websphere web server) in a 32x machine. It worked just fine, or at least what I was told. He then did the same in one of our x64 but machine but it bails during deployment the application gives errors (please see below). They are all pointing to the fact that the dlls are x32 and not 64x. My question is if this is the case, why is it that we got a Mid-Tier which uses x32 libraries working fine in a WAS61 x64 machine? What's different? Where do I look to start with, in order to compare what's on both machines (x32 [where the API works] and x64 [where it does not]), simply because the two machines are different with different software/components/specs etc and not just the Remedy API libraries?? Also, could the Java driver or C driver be used as a test to prove that the API libraries are the culprit? Is there anyway you can emulate a x64 JVM to run the 32x API? Anyway pointers will be very much appreciated as we are quite stuck as to what do next!! Regards frex 3/02/11 9:30:07:663 CET] 006e DispatchActio E org.apache.struts.actions.DispatchAction dispatchMethod Dispatch[/editInspeccion] to method 'guardar' returned an exception java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:618) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170) at com.eptisa.pavimentos.control.action.GenericAction.execute(GenericAction.java:106) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1096) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:570) at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:748) at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:119) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387) at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102) at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) at
Re: JAVA API in a x64 machine using x32 dlls
Frex, I agree with Axton. Despite the fact that Remedy 32Bit apps will run on 64Bit machines, they must use the 32Bit JVM to do so..I don't have any experience in your problem, but if the Java program was written using the 32Bit API's, and needs them, then you must use the 32Bit JVM. From: Action Request System discussion list(ARSList) [mailto:arslist@ARSLIST.ORG] On Behalf Of Frex Popo Sent: Friday, February 04, 2011 7:28 AM To: arslist@ARSLIST.ORG Subject: JAVA API in a x64 machine using x32 dlls ** Dear listers, I am not a Java person and would need some pointers from those who wrote Java API in the past. The company integrated with some supplier's application using web services. They got into all kind of problems so they decided to go it the Java API route. Someone from the supplier's end wrote some Java program which connects to the remedy server and creates/updates some tickets etc.. He started with a stand alone server which he installed in his machine. He used all the dll. file listed in the API integration manual. He got his program working. He then deployed his program in a WAS61 (websphere web server) in a 32x machine. It worked just fine, or at least what I was told. He then did the same in one of our x64 but machine but it bails during deployment the application gives errors (please see below). They are all pointing to the fact that the dlls are x32 and not 64x. My question is if this is the case, why is it that we got a Mid-Tier which uses x32 libraries working fine in a WAS61 x64 machine? What's different? Where do I look to start with, in order to compare what's on both machines (x32 [where the API works] and x64 [where it does not]), simply because the two machines are different with different software/components/specs etc and not just the Remedy API libraries?? Also, could the Java driver or C driver be used as a test to prove that the API libraries are the culprit? Is there anyway you can emulate a x64 JVM to run the 32x API? Anyway pointers will be very much appreciated as we are quite stuck as to what do next!! Regards frex 3/02/11 9:30:07:663 CET] 006e DispatchActio E org.apache.struts.actions.DispatchAction dispatchMethod Dispatch[/editInspeccion] to method 'guardar' returned an exception java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79 ) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl .java:43) at java.lang.reflect.Method.invoke(Method.java:618) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java: 269) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170) at com.eptisa.pavimentos.control.action.GenericAction.execute(GenericAction.jav a:106) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProces sor.java:425) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1 096) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper. java:570) at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrappe r.java:478) at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServl etWrapper.java:90) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:748) at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:119) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(Ht tpInboundLink.java:458) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(Ht tpInboundLink.java:387) at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLRea dCallback.java:102) at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioRea dCompletionListener.java:165) at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java :217) at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture .java:161) at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
Re: JAVA API in a x64 machine using x32 dlls
Hot deployments would sure make development and deployments a lot easier (and more productive - less development time and less downtime). Getting rid of the native library dependencies would make that possible. Axton Grams The opinions, statements, and/or suggested courses of action expressed in this E-mail do not necessarily reflect those of BMC Software, Inc. My voluntary participation in this forum is not intended to convey a role as a spokesperson, liaison or public relations representative for BMC Software, Inc. On Fri, Feb 4, 2011 at 9:24 AM, John Baker jba...@javasystemsolutions.comwrote: Axton is correct, however you almost certainly don't want to really use a 64bit VM, and if this isn't Midtier, you could probably use the native Java API. The Midtier, last time I checked, is 99.9% native library free. Curiously, the only part of the native library it still uses is checking the Midtier configuration password is valid. Perhaps someone at BMC could comment out the one or two lines of code, eject the API, allowing us to deploy much smaller WAR files without Tomcat (and other servlet engines) crashing when the Midtier is restarted (because the JVM can't share the native libraries between classloaders). -- Single Sign On for AR System http://www.javasystemsolutions.com/jss/ssplugin ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug11 www.wwrug.com ARSList: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug11 www.wwrug.com ARSList: Where the Answers Are
Re: Java API Account Management
Rob, The Java API is just a client, as such it runs with whatever permissions the user that logs into it uses.it does not require Admin, unless the functions you have the api program doing are admin only stuff, but that is entirely up to you. Also remember, that the Java API client does not execute active links unless you program it to do so. What sort of actions is your program doing that you feel makes it need to be Admin? From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Robert Lardy Sent: Monday, October 04, 2010 8:22 AM To: arslist@ARSLIST.ORG Subject: Java API Account Management ** I want to manage and restrict the permissions Java API user, however I think we must assign the Java API the Remedy Administrator privileges. I can manage any User changes using a filter for the critical User tables, but I don't know how to restrict the changes of Remedy active links and filters through the Java API since it must have Remedy Administrator Priviledges. Any ideas on how to do this? I was hoping to keep this in Remedy, and not create a Java Adapter external to Remedy to restrict method calls, but this might be the only solution. Thank you. -- Rob Lardy _attend WWRUG10 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are
Re: Java API - Help
Hi LJ, Thanks for your information. Guess i need to increase my patience for going through the API doc..:) Regards, gopal LJ LongWing (Head) wrote: Gopal, Honestly I've never 'created' anything with the API...almost everything I write just reads thingsso I'm not really experienced in the creation of forms and suchbut from looking at the docs you simply find the type of field you want to create, look at its 'set' methods, set the attributes you want...once you have the object constructed you would look into the ARServerUser object and find the method that lets you add what you are looking forI'm not saying it's easy...but it is documented and as long as you are patient while looking through the docs you should be able to make steady progress. -Original Message- From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Gopal-srg Sent: Wednesday, August 04, 2010 1:44 AM To: arslist@ARSLIST.ORG Subject: Re: Java API - Help Hi LJ, Thanks a lot for the info.I was able to create a viewform with only keyfield. I tried adding other fields from the external table, but these fields needs to be initialized with empty field and i dont know how to go about it .. can you guide in this front also? It will be very helpful Regards, Gopal LJ LongWing (Head) wrote: Gopal, You would look at the constructor for the Class ViewForm, setting the appropriate values for setTableName and setKeyField, adding any fields as appropriate, then call the ARServerUser.createForm method with that form object. -Original Message- From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Gopal-srg Sent: Tuesday, August 03, 2010 6:11 AM To: arslist@ARSLIST.ORG Subject: Java API - Help Hi List, i want to create a remedy view form using Java API, Please guide me how to do this? regards, Gopal -- View this message in context: http://old.nabble.com/Java-API---Help-tp29334630p29334630.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are -- View this message in context: http://old.nabble.com/Java-API---Help-tp29334630p29342868.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are -- View this message in context: http://old.nabble.com/Java-API---Help-tp29334630p29355052.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are
Re: Java API - Help
Hi LJ, Thanks a lot for the info.I was able to create a viewform with only keyfield. I tried adding other fields from the external table, but these fields needs to be initialized with empty field and i dont know how to go about it .. can you guide in this front also? It will be very helpful Regards, Gopal LJ LongWing (Head) wrote: Gopal, You would look at the constructor for the Class ViewForm, setting the appropriate values for setTableName and setKeyField, adding any fields as appropriate, then call the ARServerUser.createForm method with that form object. -Original Message- From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Gopal-srg Sent: Tuesday, August 03, 2010 6:11 AM To: arslist@ARSLIST.ORG Subject: Java API - Help Hi List, i want to create a remedy view form using Java API, Please guide me how to do this? regards, Gopal -- View this message in context: http://old.nabble.com/Java-API---Help-tp29334630p29334630.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are -- View this message in context: http://old.nabble.com/Java-API---Help-tp29334630p29342868.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are
Re: Java API - Help
Gopal, Honestly I've never 'created' anything with the API...almost everything I write just reads thingsso I'm not really experienced in the creation of forms and suchbut from looking at the docs you simply find the type of field you want to create, look at its 'set' methods, set the attributes you want...once you have the object constructed you would look into the ARServerUser object and find the method that lets you add what you are looking forI'm not saying it's easy...but it is documented and as long as you are patient while looking through the docs you should be able to make steady progress. -Original Message- From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Gopal-srg Sent: Wednesday, August 04, 2010 1:44 AM To: arslist@ARSLIST.ORG Subject: Re: Java API - Help Hi LJ, Thanks a lot for the info.I was able to create a viewform with only keyfield. I tried adding other fields from the external table, but these fields needs to be initialized with empty field and i dont know how to go about it .. can you guide in this front also? It will be very helpful Regards, Gopal LJ LongWing (Head) wrote: Gopal, You would look at the constructor for the Class ViewForm, setting the appropriate values for setTableName and setKeyField, adding any fields as appropriate, then call the ARServerUser.createForm method with that form object. -Original Message- From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Gopal-srg Sent: Tuesday, August 03, 2010 6:11 AM To: arslist@ARSLIST.ORG Subject: Java API - Help Hi List, i want to create a remedy view form using Java API, Please guide me how to do this? regards, Gopal -- View this message in context: http://old.nabble.com/Java-API---Help-tp29334630p29334630.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are -- View this message in context: http://old.nabble.com/Java-API---Help-tp29334630p29342868.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are
Re: Java API - Help
Gopal, You would look at the constructor for the Class ViewForm, setting the appropriate values for setTableName and setKeyField, adding any fields as appropriate, then call the ARServerUser.createForm method with that form object. -Original Message- From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Gopal-srg Sent: Tuesday, August 03, 2010 6:11 AM To: arslist@ARSLIST.ORG Subject: Java API - Help Hi List, i want to create a remedy view form using Java API, Please guide me how to do this? regards, Gopal -- View this message in context: http://old.nabble.com/Java-API---Help-tp29334630p29334630.html Sent from the ARS (Action Request System) mailing list archive at Nabble.com. ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are
Re: JAVA API code - Figuring out what is in a Selection field
Check these out... http://communities.bmc.com/communities/message/80328?tstart=0 http://communities.bmc.com/communities/message/69002;jsessionid=6D5C8E6C4E2040625EA2A28E5108F74C //1. get the field defiintion to get at the limit definition SelectionFieldLimit limit = ((SelectionField)context.getField(form, 7)).getLimit(); // or some thing like that. // your code to get an entry ListEntry entries = context.getListEntryObjects(form, qualification, 0, 999, null, fieldIDsToRetrieve, false, matches); Entry entry = entries.get(0); int val = entry.get(7).getValue(); //Now match this int value to the enumeration using the 'limit' // doing this lookup in Java API is more type-safe, in .NET API isn't bad either // just look at the 'limit' object in your VS.NET debugger to get what you need! HTH appajee ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are
Re: JAVA API code - Figuring out what is in a Selection field
Yea, what ya need? From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Ibrahim Akar Sent: Friday, April 23, 2010 10:30 AM To: arslist@ARSLIST.ORG Subject: JAVA API code - Figuring out what is in a Selection field ** Has anyone written code in Java that can figure out the values/IDs in a selection field as long as the field ID is provided? Thanks, -- -Ibrahim Akar The foregoing e-mail communication (together with any attachments thereto) is intended for the designated recipient(s) only. Its terms are Confidential and may be protected by Attorney/Client, or other applicable, privilege. Unauthorized use, dissemination, distribution, or reproduction of this message is Strictly Prohibited. PLEASE CONSIDER THE ENVIRONMENT BEFORE PRINTING THIS EMAIL _attend WWRUG10 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are
Re: JAVA API code - Figuring out what is in a Selection field
Did you check this? I havent tried it...but it looks like this is what you are looking for? http://www.javasystemsolutions.com/documentation/thirdparty/arapiv75/com/bmc/arsys/api/SelectionField.html#SelectionField%28%29 Thnx Chintan. --- On Fri, 4/23/10, Ibrahim Akar i...@pyrasoft.com wrote: From: Ibrahim Akar i...@pyrasoft.com Subject: JAVA API code - Figuring out what is in a Selection field To: arslist@ARSLIST.ORG Date: Friday, April 23, 2010, 9:30 AM ** Has anyone written code in Java that can figure out the values/IDs in a selection field as long as the field ID is provided? Thanks, -- -Ibrahim Akar The foregoing e-mail communication (together with any attachments thereto) is intended for the designated recipient(s) only. Its terms are Confidential and may be protected by Attorney/Client, or other applicable, privilege. Unauthorized use, dissemination, distribution, or reproduction of this message is Strictly Prohibited. PLEASE CONSIDER THE ENVIRONMENT BEFORE PRINTING THIS EMAIL _attend WWRUG10 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are
Re: Java API Error - No suitable Log implementation
If you create a directory on your local hard disk drive with the following files: arapi75.jar log4j-1.2.15.jar Go.java (contents contained below) Then your Java API program should run. The following is the contents of the Go.java file. import com.bmc.arsys.api.ARServerUser; import com.bmc.arsys.api.ARException; public class Go { public static void main(String argv[]) { ARServerUser ctx=new ARServerUser(argv[0],[argv[1],null,argv[2]); try { ctx.login(); } catch (ARException ex) { ex.printStackTrace(System.err); } ctx.logout(); } } You can compile the program using the following command: javac -cp ./arapi75.jar Go.java You can run the program using the following command: java -classpath ./:./arapi75.jar:./log4j-1.2.15.jar Go MyUserName MyPassword MyARSystemServer Please note that you will have to specify values for the boldface parameters that are suitable for your environment. Derek On Apr 7, 2010, at 10:49 AM, Ibrahim Akar wrote: ** I can send this directly to Derek Berube but he has helped me a lot and he has a job to do. Thanks, D. I am trying to create a Java app .. API JAVA 7.5 Everything is fine right up to the point where the communication to the server gets invoked. The failure I am getting is with the logging that is embedded into the Remedy JAR: It cannot initialize its internal logger wrapper. I am getting an unfortunately rather general error message: No suitable Log implementation, with no more detail than that. (The API call is ARServerUser.createEntry(), to create/insert a record. Inside that call, the Remedy client tries to initialize its logging.) It appears that the log4j package (log4j.jar) is being used for logging, along with some classes re-packaged by BMC from apache (bmc.com.thirdparty.org.apache.logging.*). There are a number of things that could be going wrong, and at the moment I've explored them all to the limit of my knowledge. Any help will be greatly appreciated. -- -Ibrahim Akar PLEASE CONSIDER THE ENVIRONMENT BEFORE PRINTING THIS EMAIL _attend WWRUG10 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are
Re: Java API Error - No suitable Log implementation
Ibrahim, I work fairly heavily with the Java API. If you could provide maybe the complete message as it comes out...and depending on how that looks, maybe your path and your classpath, or if defining specifically at runtime, the jar files you are including. _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Ibrahim Akar Sent: Wednesday, April 07, 2010 8:50 AM To: arslist@ARSLIST.ORG Subject: Java API Error - No suitable Log implementation ** I can send this directly to Derek Berube but he has helped me a lot and he has a job to do. Thanks, D. I am trying to create a Java app .. API JAVA 7.5 Everything is fine right up to the point where the communication to the server gets invoked. The failure I am getting is with the logging that is embedded into the Remedy JAR: It cannot initialize its internal logger wrapper. I am getting an unfortunately rather general error message: No suitable Log implementation, with no more detail than that. (The API call is ARServerUser.createEntry(), to create/insert a record. Inside that call, the Remedy client tries to initialize its logging.) It appears that the log4j package (log4j.jar) is being used for logging, along with some classes re-packaged by BMC from apache (bmc.com.thirdparty.org.apache.logging.*). There are a number of things that could be going wrong, and at the moment I've explored them all to the limit of my knowledge. Any help will be greatly appreciated. -- -Ibrahim Akar PLEASE CONSIDER THE ENVIRONMENT BEFORE PRINTING THIS EMAIL _attend WWRUG10 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are
Re: Java API Error - No suitable Log implementation
Ibrahim, You're going to need the commons-logging.jar file in your classpath. That way, the Remedy API can use either the Log4j libraries or the java.util.logging APIs. Derek On Apr 7, 2010, at 12:04 PM, LJ Longwing wrote: ** Ibrahim, I work fairly heavily with the Java API. If you could provide maybe the complete message as it comes out...and depending on how that looks, maybe your path and your classpath, or if defining specifically at runtime, the jar files you are including. From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Ibrahim Akar Sent: Wednesday, April 07, 2010 8:50 AM To: arslist@ARSLIST.ORG Subject: Java API Error - No suitable Log implementation ** I can send this directly to Derek Berube but he has helped me a lot and he has a job to do. Thanks, D. I am trying to create a Java app .. API JAVA 7.5 Everything is fine right up to the point where the communication to the server gets invoked. The failure I am getting is with the logging that is embedded into the Remedy JAR: It cannot initialize its internal logger wrapper. I am getting an unfortunately rather general error message: No suitable Log implementation, with no more detail than that. (The API call is ARServerUser.createEntry(), to create/insert a record. Inside that call, the Remedy client tries to initialize its logging.) It appears that the log4j package (log4j.jar) is being used for logging, along with some classes re-packaged by BMC from apache (bmc.com.thirdparty.org.apache.logging.*). There are a number of things that could be going wrong, and at the moment I've explored them all to the limit of my knowledge. Any help will be greatly appreciated. -- -Ibrahim Akar PLEASE CONSIDER THE ENVIRONMENT BEFORE PRINTING THIS EMAIL _attend WWRUG10 www.wwrug.com ARSlist: Where the Answers Are_ _attend WWRUG10 www.wwrug.com ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org attend wwrug10 www.wwrug.com ARSlist: Where the Answers Are
Re: Java API - parseQualification Error - Part 2
Defect SW00351474 :-) From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Thursday, November 12, 2009 5:59 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** I would personally push them to admit and log a defect. Point being that if they say you can use an ARServerUser object as such parseQualification(String form, String qualification) Parses a given readable qualification string into internal structure. And they are going to put a qualification on that of oh, unless your qualification string is referencing an integer value that's negative, that's completely bogus. They need to make sure that their function is functioning properly, the fact that it works if you use an overloaded version of the function is irrelevant. They have a bug in that function. You can use the overloaded version as a workaround if you need to while they fix the bug, but they need to fix it. I have an open defect with BMC regarding the getListFilterObjects() return the detail of all (accessible) Filter objects Function, throws a null pointer error on my server. I have the workaround of using getListFilter() and looping through that list to get EVERY filter object, but it's not as efficientjust because there is a workaround doesn't mean there isn't a bug. From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Thursday, November 12, 2009 4:38 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** LJ, Field ID or Name is irrelevant. What is suggested is instead of writing: QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = -90); //works in 7.1 just fine also works just fine for qual not having negative sign the work-around is to add the following: List Field fields = ctl.getListFieldObjects(formName); // not required for non-negatives apparently then change qualifier inputs to use the 'fields' reference: QualifierInfo qual = ctl.parseQualification(qualStr, fields, null, Constants.AR_QUALCONTEXT_DEFAULT); So tell me... defect or no defect? I was told no defect by support, therefore no ETA on a fix. I suppose that's fine if you don't have a negative outlook on things ;-) Maybe that's a polite way of saying I have no idea what I'm doing. All I know is it worked and then it didn't but only for one minor situational change. -Eric From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Thursday, November 12, 2009 12:21 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** Eric, So they are saying the problem is looking up the field name, and if you use the Field ID it works just fine? From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Thursday, November 12, 2009 10:40 AM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** For anyone interested (part 2 of 2)... Secondary response from support (it doesn't error as before): Sample API program that works for me.. customer will need to change the details marked with a -- for his test.. import com.bmc.arsys.api.*; import java.util.*; public class JavaAPITest { private ARServerUser server; private String formName= Roles; -- public JavaAPITest() { server = new ARServerUser(); server.setServer(atlwin01);-- server.setPort(0); -- server.setUser(Demo); -- server.setPassword(); -- } public static void main(String[] args) { JavaAPITest test = new JavaAPITest(); test.connect(); test.queryEntrysByQual(( \'Create Date\' \1/1/2009\ )); test.queryEntrysByQual(( \'1702\' = -1210 )); -- test.cleanup(); } // // Connect the current user to the server. // void connect() { System.out.println(); System.out.println(Connecting to AR Server...); try { server.verifyUser(); } catch (ARException e) { // //This exception is triggered by a bad server, password or, //if guest access is turned off, by an unknown username. // ARExceptionHandler(e, Cannot verify user + server.getUser() + .); System.exit(1); } System.out.println(Connected to AR Server + server.getServer()); } // // Retrieve entries from the form using the given qualification. With // the returned entry set, print out the ID of each entry and the // contents in its shortDescription field. // void queryEntrysByQual(String qualStr) { System.out.println(); System.out.println
Re: Java API - parseQualification Error - Part 2
Sweet :) _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Monday, November 30, 2009 3:30 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** Defect SW00351474 :-) _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Thursday, November 12, 2009 5:59 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** I would personally push them to admit and log a defect. Point being that if they say you can use an ARServerUser object as such parseQualification(String form, String qualification) Parses a given readable qualification string into internal structure. And they are going to put a qualification on that of oh, unless your qualification string is referencing an integer value that's negative, that's completely bogus. They need to make sure that their function is functioning properly, the fact that it works if you use an overloaded version of the function is irrelevant. They have a bug in that function. You can use the overloaded version as a workaround if you need to while they fix the bug, but they need to fix it. I have an open defect with BMC regarding the getListFilterObjects() return the detail of all (accessible) Filter objects Function, throws a null pointer error on my server. I have the workaround of using getListFilter() and looping through that list to get EVERY filter object, but it's not as efficientjust because there is a workaround doesn't mean there isn't a bug. _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Thursday, November 12, 2009 4:38 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** LJ, Field ID or Name is irrelevant. What is suggested is instead of writing: QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = -90); //works in 7.1 just fine also works just fine for qual not having negative sign the work-around is to add the following: List Field fields = ctl.getListFieldObjects(formName); // not required for non-negatives apparently then change qualifier inputs to use the 'fields' reference: QualifierInfo qual = ctl.parseQualification(qualStr, fields, null, Constants.AR_QUALCONTEXT_DEFAULT); So tell me... defect or no defect? I was told no defect by support, therefore no ETA on a fix. I suppose that's fine if you don't have a negative outlook on things ;-) Maybe that's a polite way of saying I have no idea what I'm doing. All I know is it worked and then it didn't but only for one minor situational change. -Eric _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Thursday, November 12, 2009 12:21 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** Eric, So they are saying the problem is looking up the field name, and if you use the Field ID it works just fine? _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Thursday, November 12, 2009 10:40 AM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** For anyone interested (part 2 of 2)... Secondary response from support (it doesn't error as before): Sample API program that works for me.. customer will need to change the details marked with a -- for his test.. import com.bmc.arsys.api.*; import java.util.*; public class JavaAPITest { private ARServerUser server; private String formName= Roles; -- public JavaAPITest() { server = new ARServerUser(); server.setServer(atlwin01);-- server.setPort(0); -- server.setUser(Demo); -- server.setPassword(); -- } public static void main(String[] args) { JavaAPITest test = new JavaAPITest(); test.connect(); test.queryEntrysByQual(( \'Create Date\' \1/1/2009\ )); test.queryEntrysByQual(( \'1702\' = -1210 )); -- test.cleanup(); } // // Connect the current user to the server. // void connect() { System.out.println(); System.out.println(Connecting to AR Server...); try { server.verifyUser(); } catch (ARException e) { // //This exception is triggered by a bad server, password or, //if guest access is turned off, by an unknown username. // ARExceptionHandler(e, Cannot verify user + server.getUser() + .); System.exit(1); } System.out.println(Connected to AR Server + server.getServer()); } // // Retrieve entries from the form using the given qualification. With // the returned entry set, print out the ID
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
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 m...@rrr.se: 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
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
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
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
Re: Java API - parseQualification Error - Part 1
For anyone interested (part 1 of 2)... From support: We've tested this issue internally using both 7.1 and 7.5 API. It looks like there is a defect in the API on how it handles the negative value. Strangely enough the Mid Tier is able to process the request with no problems. However according to the arapi logging for the java test it shows that it never makes the call; seems internal processing of the qual rejects it. Connecting to AR Server... Connected to AR Server atlwin01 Retrieving entryies with qualification ( 'Create Date' 1/1/2009 ) Query returned 2 matches. Request Id Short Description 003 Demo 002 Demo Retrieving entryies with qualification ( 'Integer Field' = -9 ) Problem while querying by qualifier. Status List is empty. Stack Trace:ERROR (1587): Unknown field referenced in query line; at position 2 ( 'Integer Field' ) at com.bmc.arsys.qual.a.a.c.a(Unknown Source) at com.bmc.arsys.qual.a.a.b.int(Unknown Source) at com.bmc.arsys.qual.a.a.b.a(Unknown Source) at com.bmc.arsys.qual.a.a.b.if(Unknown Source) at com.bmc.arsys.qual.a.a.b.for(Unknown Source) at com.bmc.arsys.qual.n.a(Unknown Source) at com.bmc.arsys.api.ARServerUser.parseQualification(Unknown Source) at JavaAPITest.queryEntrysByQual(JavaAPITest.java:67) at JavaAPITest.main(JavaAPITest.java:22) Retrieving entryies with qualification ( 'Integer Field' = -(9) ) Problem while querying by qualifier. Status List is empty. Stack Trace:ERROR (1587): Unknown field referenced in query line; at position 2 ( 'Integer Field' ) at com.bmc.arsys.qual.a.a.c.a(Unknown Source) at com.bmc.arsys.qual.a.a.b.int(Unknown Source) at com.bmc.arsys.qual.a.a.b.a(Unknown Source) at com.bmc.arsys.qual.a.a.b.if(Unknown Source) at com.bmc.arsys.qual.a.a.b.for(Unknown Source) at com.bmc.arsys.qual.n.a(Unknown Source) at com.bmc.arsys.api.ARServerUser.parseQualification(Unknown Source) at JavaAPITest.queryEntrysByQual(JavaAPITest.java:67) at JavaAPITest.main(JavaAPITest.java:23) User logged out. So we will create a defect for the Java API and let you know once it's been accepted. From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, November 03, 2009 3:19 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** good luck, let us know how it goes...:) From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 2:13 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** Thanks, LJ. I'll try to uprev to patch 3 before dropping this in support's lap since I know that's always the first step in troubleshooting according to support ;-) -Eric From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, November 03, 2009 3:03 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** Well...using the 7.1P6 Java API the output of both are [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=3],Operand=[Operation=6,Operand Left=null,Operand Right=[Operand Type=[type=2],Operand=90,Operand Right=null] [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=2],Operand=90]],Operand Right=null] Obviously the two are different...the only difference between the two is that the top one has -90 and the bottom has 90...so I would say that we have an API bug...big surprise From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 12:37 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** LJ, This is the string output from the latter : [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=2],Operand=90]],Operand Right=null] // where 1702 is the db id for Role ID field and 90 is the value. -Eric From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, November 03, 2009 1:24 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** I would say you have likely found a bugbut if you use the second, and then output the .toString() of it, what does it give you? From: Action Request System discussion list(ARSList
Re: Java API - parseQualification Error - Part 2
For anyone interested (part 2 of 2)... Secondary response from support (it doesn't error as before): Sample API program that works for me.. customer will need to change the details marked with a -- for his test.. import com.bmc.arsys.api.*; import java.util.*; public class JavaAPITest { private ARServerUser server; private String formName= Roles; -- public JavaAPITest() { server = new ARServerUser(); server.setServer(atlwin01);-- server.setPort(0); -- server.setUser(Demo); -- server.setPassword(); -- } public static void main(String[] args) { JavaAPITest test = new JavaAPITest(); test.connect(); test.queryEntrysByQual(( \'Create Date\' \1/1/2009\ )); test.queryEntrysByQual(( \'1702\' = -1210 )); -- test.cleanup(); } // // Connect the current user to the server. // void connect() { System.out.println(); System.out.println(Connecting to AR Server...); try { server.verifyUser(); } catch (ARException e) { // //This exception is triggered by a bad server, password or, //if guest access is turned off, by an unknown username. // ARExceptionHandler(e, Cannot verify user + server.getUser() + .); System.exit(1); } System.out.println(Connected to AR Server + server.getServer()); } // // Retrieve entries from the form using the given qualification. With // the returned entry set, print out the ID of each entry and the // contents in its shortDescription field. // void queryEntrysByQual(String qualStr) { System.out.println(); System.out.println (Retrieving entryies with qualification + qualStr); try { // Retrieve the detail info of all fields from the form. List Field fields = server.getListFieldObjects(formName); // Create the search qualifier. QualifierInfo qual = server.parseQualification(qualStr, fields, null, Constants.AR_QUALCONTEXT_DEFAULT); int[] fieldIds = {2, 7, 8}; OutputInteger nMatches = new OutputInteger(); ListSortInfo sortOrder = new ArrayListSortInfo(); sortOrder.add(new SortInfo(2, Constants.AR_SORT_DESCENDING)); // Retrieve entries from the form using the given // qualification. ListEntry entryList = server.getListEntryObjects(formName, qual, 0, Constants.AR_NO_MAX_LIST_RETRIEVE, sortOrder, fieldIds, true, nMatches); System.out.println (Query returned + nMatches + matches.); if( nMatches.intValue() 0){ // Print out the matches. System.out.println(Request Id + Short Description ); for( int i = 0; i entryList.size(); i++ ){ System.out.println (entryList.get(i).getEntryId() + + entryList.get(i).get(Constants.AR_CORE_SHORT_DESCRIPTION)); } } } catch( ARException e ) { ARExceptionHandler(e, Problem while querying by qualifier. ); } } public void ARExceptionHandler(ARException e, String errMessage){ System.out.println(errMessage); printStatusList(server.getLastStatus()); System.out.print(Stack Trace:); e.printStackTrace(); } public void printStatusList(ListStatusInfo statusList) { if (statusList == null || statusList.size()==0) { System.out.println(Status List is empty.); return; } System.out.print(Message type: ); switch(statusList.get(0).getMessageType()) { case Constants.AR_RETURN_OK: System.out.println(Note); break; case Constants.AR_RETURN_WARNING: System.out.println(Warning); break; case Constants.AR_RETURN_ERROR: System.out.println(Error); break; case Constants.AR_RETURN_FATAL: System.out.println(Fatal Error); break; default: System.out.println(Unknown ( + statusList.get(0).getMessageType() + )); break; } System.out.println(Status List:); for (int i=0; i statusList.size(); i++) { System.out.println(statusList.get(i).getMessageText()); System.out.println(statusList.get(i).getAppendedText()); } } public void cleanup() { // Logout the user from the server. This releases the resource // allocated on the server for the user. server.logout(); System.out.println(); System.out.println(User logged out.); } } ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: Where the Answers Are
Re: Java API - parseQualification Error - Part 2
Eric, So they are saying the problem is looking up the field name, and if you use the Field ID it works just fine? _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Thursday, November 12, 2009 10:40 AM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** For anyone interested (part 2 of 2)... Secondary response from support (it doesn't error as before): Sample API program that works for me.. customer will need to change the details marked with a -- for his test.. import com.bmc.arsys.api.*; import java.util.*; public class JavaAPITest { private ARServerUser server; private String formName= Roles; -- public JavaAPITest() { server = new ARServerUser(); server.setServer(atlwin01);-- server.setPort(0); -- server.setUser(Demo); -- server.setPassword(); -- } public static void main(String[] args) { JavaAPITest test = new JavaAPITest(); test.connect(); test.queryEntrysByQual(( \'Create Date\' \1/1/2009\ )); test.queryEntrysByQual(( \'1702\' = -1210 )); -- test.cleanup(); } // // Connect the current user to the server. // void connect() { System.out.println(); System.out.println(Connecting to AR Server...); try { server.verifyUser(); } catch (ARException e) { // //This exception is triggered by a bad server, password or, //if guest access is turned off, by an unknown username. // ARExceptionHandler(e, Cannot verify user + server.getUser() + .); System.exit(1); } System.out.println(Connected to AR Server + server.getServer()); } // // Retrieve entries from the form using the given qualification. With // the returned entry set, print out the ID of each entry and the // contents in its shortDescription field. // void queryEntrysByQual(String qualStr) { System.out.println(); System.out.println (Retrieving entryies with qualification + qualStr); try { // Retrieve the detail info of all fields from the form. List Field fields = server.getListFieldObjects(formName); // Create the search qualifier. QualifierInfo qual = server.parseQualification(qualStr, fields, null, Constants.AR_QUALCONTEXT_DEFAULT); int[] fieldIds = {2, 7, 8}; OutputInteger nMatches = new OutputInteger(); ListSortInfo sortOrder = new ArrayListSortInfo(); sortOrder.add(new SortInfo(2, Constants.AR_SORT_DESCENDING)); // Retrieve entries from the form using the given // qualification. ListEntry entryList = server.getListEntryObjects(formName, qual, 0, Constants.AR_NO_MAX_LIST_RETRIEVE, sortOrder, fieldIds, true, nMatches); System.out.println (Query returned + nMatches + matches.); if( nMatches.intValue() 0){ // Print out the matches. System.out.println(Request Id + Short Description ); for( int i = 0; i entryList.size(); i++ ){ System.out.println (entryList.get(i).getEntryId() + + entryList.get(i).get(Constants.AR_CORE_SHORT_DESCRIPTION)); } } } catch( ARException e ) { ARExceptionHandler(e, Problem while querying by qualifier. ); } } public void ARExceptionHandler(ARException e, String errMessage){ System.out.println(errMessage); printStatusList(server.getLastStatus()); System.out.print(Stack Trace:); e.printStackTrace(); } public void printStatusList(ListStatusInfo statusList) { if (statusList == null || statusList.size()==0) { System.out.println(Status List is empty.); return; } System.out.print(Message type: ); switch(statusList.get(0).getMessageType()) { case Constants.AR_RETURN_OK: System.out.println(Note); break; case Constants.AR_RETURN_WARNING: System.out.println(Warning); break; case Constants.AR_RETURN_ERROR: System.out.println(Error); break; case Constants.AR_RETURN_FATAL: System.out.println(Fatal Error); break; default: System.out.println(Unknown ( + statusList.get(0).getMessageType() + )); break; } System.out.println(Status List:); for (int i=0; i statusList.size(); i++) { System.out.println(statusList.get(i).getMessageText()); System.out.println(statusList.get(i).getAppendedText()); } } public void cleanup() { // Logout the user from the server. This releases the resource // allocated on the server for the user. server.logout(); System.out.println(); System.out.println(User logged out.); } } _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: Where the Answers Are
Re: Java API - parseQualification Error - Part 2
LJ, Field ID or Name is irrelevant. What is suggested is instead of writing: QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = -90); //works in 7.1 just fine also works just fine for qual not having negative sign the work-around is to add the following: List Field fields = ctl.getListFieldObjects(formName); // not required for non-negatives apparently then change qualifier inputs to use the 'fields' reference: QualifierInfo qual = ctl.parseQualification(qualStr, fields, null, Constants.AR_QUALCONTEXT_DEFAULT); So tell me... defect or no defect? I was told no defect by support, therefore no ETA on a fix. I suppose that's fine if you don't have a negative outlook on things ;-) Maybe that's a polite way of saying I have no idea what I'm doing. All I know is it worked and then it didn't but only for one minor situational change. -Eric From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Thursday, November 12, 2009 12:21 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** Eric, So they are saying the problem is looking up the field name, and if you use the Field ID it works just fine? From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Thursday, November 12, 2009 10:40 AM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** For anyone interested (part 2 of 2)... Secondary response from support (it doesn't error as before): Sample API program that works for me.. customer will need to change the details marked with a -- for his test.. import com.bmc.arsys.api.*; import java.util.*; public class JavaAPITest { private ARServerUser server; private String formName= Roles; -- public JavaAPITest() { server = new ARServerUser(); server.setServer(atlwin01);-- server.setPort(0); -- server.setUser(Demo); -- server.setPassword(); -- } public static void main(String[] args) { JavaAPITest test = new JavaAPITest(); test.connect(); test.queryEntrysByQual(( \'Create Date\' \1/1/2009\ )); test.queryEntrysByQual(( \'1702\' = -1210 )); -- test.cleanup(); } // // Connect the current user to the server. // void connect() { System.out.println(); System.out.println(Connecting to AR Server...); try { server.verifyUser(); } catch (ARException e) { // //This exception is triggered by a bad server, password or, //if guest access is turned off, by an unknown username. // ARExceptionHandler(e, Cannot verify user + server.getUser() + .); System.exit(1); } System.out.println(Connected to AR Server + server.getServer()); } // // Retrieve entries from the form using the given qualification. With // the returned entry set, print out the ID of each entry and the // contents in its shortDescription field. // void queryEntrysByQual(String qualStr) { System.out.println(); System.out.println (Retrieving entryies with qualification + qualStr); try { // Retrieve the detail info of all fields from the form. List Field fields = server.getListFieldObjects(formName); // Create the search qualifier. QualifierInfo qual = server.parseQualification(qualStr, fields, null, Constants.AR_QUALCONTEXT_DEFAULT); int[] fieldIds = {2, 7, 8}; OutputInteger nMatches = new OutputInteger(); ListSortInfo sortOrder = new ArrayListSortInfo(); sortOrder.add(new SortInfo(2, Constants.AR_SORT_DESCENDING)); // Retrieve entries from the form using the given // qualification. ListEntry entryList = server.getListEntryObjects(formName, qual, 0, Constants.AR_NO_MAX_LIST_RETRIEVE, sortOrder, fieldIds, true, nMatches); System.out.println (Query returned + nMatches + matches.); if( nMatches.intValue() 0){ // Print out the matches. System.out.println(Request Id + Short Description ); for( int i = 0; i entryList.size(); i++ ){ System.out.println (entryList.get(i).getEntryId() + + entryList.get(i).get(Constants.AR_CORE_SHORT_DESCRIPTION)); } } } catch( ARException e ) { ARExceptionHandler(e, Problem while querying by qualifier. ); } } public void ARExceptionHandler(ARException e, String errMessage){ System.out.println(errMessage); printStatusList(server.getLastStatus()); System.out.print(Stack Trace:); e.printStackTrace(); } public void printStatusList(ListStatusInfo statusList) { if (statusList == null || statusList.size()==0) { System.out.println(Status List is empty.); return
Re: Java API - parseQualification Error - Part 2
I would personally push them to admit and log a defect. Point being that if they say you can use an ARServerUser object as such parseQualification(String form, String qualification) Parses a given readable qualification string into internal structure. And they are going to put a qualification on that of oh, unless your qualification string is referencing an integer value that's negative, that's completely bogus. They need to make sure that their function is functioning properly, the fact that it works if you use an overloaded version of the function is irrelevant. They have a bug in that function. You can use the overloaded version as a workaround if you need to while they fix the bug, but they need to fix it. I have an open defect with BMC regarding the getListFilterObjects() return the detail of all (accessible) Filter objects Function, throws a null pointer error on my server. I have the workaround of using getListFilter() and looping through that list to get EVERY filter object, but it's not as efficientjust because there is a workaround doesn't mean there isn't a bug. _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Thursday, November 12, 2009 4:38 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** LJ, Field ID or Name is irrelevant. What is suggested is instead of writing: QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = -90); //works in 7.1 just fine also works just fine for qual not having negative sign the work-around is to add the following: List Field fields = ctl.getListFieldObjects(formName); // not required for non-negatives apparently then change qualifier inputs to use the 'fields' reference: QualifierInfo qual = ctl.parseQualification(qualStr, fields, null, Constants.AR_QUALCONTEXT_DEFAULT); So tell me... defect or no defect? I was told no defect by support, therefore no ETA on a fix. I suppose that's fine if you don't have a negative outlook on things ;-) Maybe that's a polite way of saying I have no idea what I'm doing. All I know is it worked and then it didn't but only for one minor situational change. -Eric _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Thursday, November 12, 2009 12:21 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** Eric, So they are saying the problem is looking up the field name, and if you use the Field ID it works just fine? _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Thursday, November 12, 2009 10:40 AM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** For anyone interested (part 2 of 2)... Secondary response from support (it doesn't error as before): Sample API program that works for me.. customer will need to change the details marked with a -- for his test.. import com.bmc.arsys.api.*; import java.util.*; public class JavaAPITest { private ARServerUser server; private String formName= Roles; -- public JavaAPITest() { server = new ARServerUser(); server.setServer(atlwin01);-- server.setPort(0); -- server.setUser(Demo); -- server.setPassword(); -- } public static void main(String[] args) { JavaAPITest test = new JavaAPITest(); test.connect(); test.queryEntrysByQual(( \'Create Date\' \1/1/2009\ )); test.queryEntrysByQual(( \'1702\' = -1210 )); -- test.cleanup(); } // // Connect the current user to the server. // void connect() { System.out.println(); System.out.println(Connecting to AR Server...); try { server.verifyUser(); } catch (ARException e) { // //This exception is triggered by a bad server, password or, //if guest access is turned off, by an unknown username. // ARExceptionHandler(e, Cannot verify user + server.getUser() + .); System.exit(1); } System.out.println(Connected to AR Server + server.getServer()); } // // Retrieve entries from the form using the given qualification. With // the returned entry set, print out the ID of each entry and the // contents in its shortDescription field. // void queryEntrysByQual(String qualStr) { System.out.println(); System.out.println (Retrieving entryies with qualification + qualStr); try { // Retrieve the detail info of all fields from the form. List Field fields = server.getListFieldObjects(formName); // Create the search qualifier. QualifierInfo qual = server.parseQualification(qualStr, fields, null, Constants.AR_QUALCONTEXT_DEFAULT); int[] fieldIds
Re: Java API - parseQualification Error - Part 2
Thanks for the second opinion, LJ. I'll push and see where that goes. I'm not sure I've reached my bug submission quota for the year, yet, so maybe they'll let me slide this time. From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Thursday, November 12, 2009 5:59 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** I would personally push them to admit and log a defect. Point being that if they say you can use an ARServerUser object as such parseQualification(String form, String qualification) Parses a given readable qualification string into internal structure. And they are going to put a qualification on that of oh, unless your qualification string is referencing an integer value that's negative, that's completely bogus. They need to make sure that their function is functioning properly, the fact that it works if you use an overloaded version of the function is irrelevant. They have a bug in that function. You can use the overloaded version as a workaround if you need to while they fix the bug, but they need to fix it. I have an open defect with BMC regarding the getListFilterObjects() return the detail of all (accessible) Filter objects Function, throws a null pointer error on my server. I have the workaround of using getListFilter() and looping through that list to get EVERY filter object, but it's not as efficientjust because there is a workaround doesn't mean there isn't a bug. From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Thursday, November 12, 2009 4:38 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** LJ, Field ID or Name is irrelevant. What is suggested is instead of writing: QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = -90); //works in 7.1 just fine also works just fine for qual not having negative sign the work-around is to add the following: List Field fields = ctl.getListFieldObjects(formName); // not required for non-negatives apparently then change qualifier inputs to use the 'fields' reference: QualifierInfo qual = ctl.parseQualification(qualStr, fields, null, Constants.AR_QUALCONTEXT_DEFAULT); So tell me... defect or no defect? I was told no defect by support, therefore no ETA on a fix. I suppose that's fine if you don't have a negative outlook on things ;-) Maybe that's a polite way of saying I have no idea what I'm doing. All I know is it worked and then it didn't but only for one minor situational change. -Eric From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Thursday, November 12, 2009 12:21 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** Eric, So they are saying the problem is looking up the field name, and if you use the Field ID it works just fine? From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Thursday, November 12, 2009 10:40 AM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error - Part 2 ** For anyone interested (part 2 of 2)... Secondary response from support (it doesn't error as before): Sample API program that works for me.. customer will need to change the details marked with a -- for his test.. import com.bmc.arsys.api.*; import java.util.*; public class JavaAPITest { private ARServerUser server; private String formName= Roles; -- public JavaAPITest() { server = new ARServerUser(); server.setServer(atlwin01);-- server.setPort(0); -- server.setUser(Demo); -- server.setPassword(); -- } public static void main(String[] args) { JavaAPITest test = new JavaAPITest(); test.connect(); test.queryEntrysByQual(( \'Create Date\' \1/1/2009\ )); test.queryEntrysByQual(( \'1702\' = -1210 )); -- test.cleanup(); } // // Connect the current user to the server. // void connect() { System.out.println(); System.out.println(Connecting to AR Server...); try { server.verifyUser(); } catch (ARException e) { // //This exception is triggered by a bad server, password or, //if guest access is turned off, by an unknown username. // ARExceptionHandler(e, Cannot verify user + server.getUser() + .); System.exit(1); } System.out.println(Connected to AR Server + server.getServer()); } // // Retrieve entries from the form using the given qualification. With // the returned entry set, print out the ID of each
Re: Java API - parseQualification Error
Well...using the 7.1P6 Java API the output of both are [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=3],Operand=[Operation=6,Operand Left=null,Operand Right=[Operand Type=[type=2],Operand=90,Operand Right=null] [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=2],Operand=90]],Operand Right=null] Obviously the two are different...the only difference between the two is that the top one has -90 and the bottom has 90...so I would say that we have an API bug...big surprise _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 12:37 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** LJ, This is the string output from the latter : [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=2],Operand=90]],Operand Right=null] // where 1702 is the db id for Role ID field and 90 is the value. -Eric _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, November 03, 2009 1:24 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** I would say you have likely found a bugbut if you use the second, and then output the .toString() of it, what does it give you? _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 12:07 PM To: arslist@ARSLIST.ORG Subject: Java API - parseQualification Error ** I hope someone can provide some clarity to this or substantiate that this is a bug... ARS7.5 p1 (server/api) Win2003 Java 1.6 Using QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = -90); // has negative sign returns ERROR (0) : Message not in catalog; Message number = 0; Error while decoding. Using QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = 90); // no negative although invalid role id returns no error and also no matching results (as expected). So it appears the parseQualification is having some issues with - interpretation. Thoughts/suggestions? Kind Regards, Eric Roys Sr. Sales Engineer GSSI Verizon Business _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: Where the Answers Are
Re: Java API - parseQualification Error
LJ, This is the string output from the latter : [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=2],Operand=90]],Operand Right=null] // where 1702 is the db id for Role ID field and 90 is the value. -Eric From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, November 03, 2009 1:24 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** I would say you have likely found a bugbut if you use the second, and then output the .toString() of it, what does it give you? From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 12:07 PM To: arslist@ARSLIST.ORG Subject: Java API - parseQualification Error ** I hope someone can provide some clarity to this or substantiate that this is a bug... ARS7.5 p1 (server/api) Win2003 Java 1.6 Using QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = -90); // has negative sign returns ERROR (0) : Message not in catalog; Message number = 0; Error while decoding. Using QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = 90); // no negative although invalid role id returns no error and also no matching results (as expected). So it appears the parseQualification is having some issues with - interpretation. Thoughts/suggestions? Kind Regards, Eric Roys Sr. Sales Engineer GSSI Verizon Business _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: Where the Answers Are
Re: Java API - parseQualification Error
Thanks, LJ. I'll try to uprev to patch 3 before dropping this in support's lap since I know that's always the first step in troubleshooting according to support ;-) -Eric From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, November 03, 2009 3:03 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** Well...using the 7.1P6 Java API the output of both are [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=3],Operand=[Operation=6,Operand Left=null,Operand Right=[Operand Type=[type=2],Operand=90,Operand Right=null] [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=2],Operand=90]],Operand Right=null] Obviously the two are different...the only difference between the two is that the top one has -90 and the bottom has 90...so I would say that we have an API bug...big surprise From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 12:37 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** LJ, This is the string output from the latter : [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=2],Operand=90]],Operand Right=null] // where 1702 is the db id for Role ID field and 90 is the value. -Eric From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, November 03, 2009 1:24 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** I would say you have likely found a bugbut if you use the second, and then output the .toString() of it, what does it give you? From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 12:07 PM To: arslist@ARSLIST.ORG Subject: Java API - parseQualification Error ** I hope someone can provide some clarity to this or substantiate that this is a bug... ARS7.5 p1 (server/api) Win2003 Java 1.6 Using QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = -90); // has negative sign returns ERROR (0) : Message not in catalog; Message number = 0; Error while decoding. Using QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = 90); // no negative although invalid role id returns no error and also no matching results (as expected). So it appears the parseQualification is having some issues with - interpretation. Thoughts/suggestions? Kind Regards, Eric Roys Sr. Sales Engineer GSSI Verizon Business _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: Where the Answers Are
Re: Java API - parseQualification Error
I would say you have likely found a bugbut if you use the second, and then output the .toString() of it, what does it give you? _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 12:07 PM To: arslist@ARSLIST.ORG Subject: Java API - parseQualification Error ** I hope someone can provide some clarity to this or substantiate that this is a bug... ARS7.5 p1 (server/api) Win2003 Java 1.6 Using QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = -90); // has negative sign returns ERROR (0) : Message not in catalog; Message number = 0; Error while decoding. Using QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = 90); // no negative although invalid role id returns no error and also no matching results (as expected). So it appears the parseQualification is having some issues with - interpretation. Thoughts/suggestions? Kind Regards, Eric Roys Sr. Sales Engineer GSSI Verizon Business _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: Where the Answers Are
Re: Java API - parseQualification Error
good luck, let us know how it goes...:) _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 2:13 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** Thanks, LJ. I'll try to uprev to patch 3 before dropping this in support's lap since I know that's always the first step in troubleshooting according to support ;-) -Eric _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, November 03, 2009 3:03 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** Well...using the 7.1P6 Java API the output of both are [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=3],Operand=[Operation=6,Operand Left=null,Operand Right=[Operand Type=[type=2],Operand=90,Operand Right=null] [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=2],Operand=90]],Operand Right=null] Obviously the two are different...the only difference between the two is that the top one has -90 and the bottom has 90...so I would say that we have an API bug...big surprise _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 12:37 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** LJ, This is the string output from the latter : [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=2],Operand=90]],Operand Right=null] // where 1702 is the db id for Role ID field and 90 is the value. -Eric _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, November 03, 2009 1:24 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** I would say you have likely found a bugbut if you use the second, and then output the .toString() of it, what does it give you? _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 12:07 PM To: arslist@ARSLIST.ORG Subject: Java API - parseQualification Error ** I hope someone can provide some clarity to this or substantiate that this is a bug... ARS7.5 p1 (server/api) Win2003 Java 1.6 Using QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = -90); // has negative sign returns ERROR (0) : Message not in catalog; Message number = 0; Error while decoding. Using QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = 90); // no negative although invalid role id returns no error and also no matching results (as expected). So it appears the parseQualification is having some issues with - interpretation. Thoughts/suggestions? Kind Regards, Eric Roys Sr. Sales Engineer GSSI Verizon Business _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: Where the Answers Are
Re: Java API - parseQualification Error
Hi, I guess you can allways try a ('1702' = 0-90). This workaround for the bug should work even after it is fixed. Best Regards - Misi, RRR AB, http://rrr.se Thanks, LJ. I'll try to uprev to patch 3 before dropping this in support's lap since I know that's always the first step in troubleshooting according to support ;-) -Eric From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, November 03, 2009 3:03 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** Well...using the 7.1P6 Java API the output of both are [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=3],Operand=[Operation=6,Operand Left=null,Operand Right=[Operand Type=[type=2],Operand=90,Operand Right=null] [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=2],Operand=90]],Operand Right=null] Obviously the two are different...the only difference between the two is that the top one has -90 and the bottom has 90...so I would say that we have an API bug...big surprise From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 12:37 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** LJ, This is the string output from the latter : [Operation=4,Operand Left=[Operation=1,Operand Left=[Operand Type=[type=1],Operand=1702],Operand Right=[Operand Type=[type=2],Operand=90]],Operand Right=null] // where 1702 is the db id for Role ID field and 90 is the value. -Eric From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, November 03, 2009 1:24 PM To: arslist@ARSLIST.ORG Subject: Re: Java API - parseQualification Error ** I would say you have likely found a bugbut if you use the second, and then output the .toString() of it, what does it give you? From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Roys, Eric D Sent: Tuesday, November 03, 2009 12:07 PM To: arslist@ARSLIST.ORG Subject: Java API - parseQualification Error ** I hope someone can provide some clarity to this or substantiate that this is a bug... ARS7.5 p1 (server/api) Win2003 Java 1.6 Using QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = -90); // has negative sign returns ERROR (0) : Message not in catalog; Message number = 0; Error while decoding. Using QualifierInfo qual = ctl.parseQualification(Roles, 'Role ID' = 90); // no negative although invalid role id returns no error and also no matching results (as expected). So it appears the parseQualification is having some issues with - interpretation. Thoughts/suggestions? Kind Regards, Eric Roys Sr. Sales Engineer GSSI Verizon Business _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net 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:rmisoluti...@verizon.net ARSlist: Where the Answers Are
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 toI 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 oneoktook me FOREVER to figure out Qualifiersbut 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 anyit'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; } ListActiveLink 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
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 toI 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 oneoktook me FOREVER to figure out Qualifiersbut 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 anyit'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
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 toI 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 oneoktook me FOREVER to figure out Qualifiersbut 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
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 toI 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
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
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
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 toI 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 oneoktook me FOREVER to figure out Qualifiersbut 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 anyit'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; } ListActiveLink 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
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
Hi Misi, The structs involved in values are similar in that they are a binary tree. There are no parentheses. The function that creates strings from them (there wasn't one when I wrote my f()) may be faulty. In particular, I would consider your example of the missing parenthesis a serious flaw. You could look in the native representation of the assignment on the server (using an sql query) and then interpret it manually to verify that the fault is only on the new admin tool's representation of the (hopefully) correct internal representation. I'll have somewhat of a look when I run my schema dump program on a 7.5 ITSM as I still use my old f() to transform these structs into human readable strings. This won't happen too soon though. In any event, dropping the parentheses in your expression and then saving your workflow again will cause a problem and is a serious bug. Good luck in Vegas Cheers Ben -Original Message- From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Misi Mladoniczky Sent: October 29, 2009 9: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 toI 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 oneoktook me FOREVER to figure out Qualifiersbut 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 anyit'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
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
Many thanks Calman - I think that was the one I was looking for !! :-) Regards Dave Morgan -Original Message- From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Calman Steynberg Sent: 27 October 2009 19:27 To: arslist@ARSLIST.ORG Subject: Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example) --0016e646114252fd510476efa83e Content-Type: text/plain; charset=ISO-8859-1 To get a human readable string for a QualifierInfo object use ARServerUser.formatQualification(); From the JavaDocs for the method: Stringeclipse-javadoc:%E2%98%82=api/src%3Ccom.bmc.arsys.api%7BARServerU ser.java%E2%98%83ARServerUser%7EformatQualification%7EQString;%7EQObject ;%E2%98%82Stringcom.bmc.arsys.api. ARServerUsereclipse-javadoc:%E2%98%82=api/src%3Ccom.bmc.arsys.api%7BARS erverUser.java%E2%98%83ARServerUser .formatQualification(Stringeclipse-javadoc:%E2%98%82=api/src%3Ccom.bmc. arsys.api%7BARServerUser.java%E2%98%83ARServerUser%7EformatQualification %7EQString;%7EQObject;%E2%98%82Stringform, Objecteclipse-javadoc:%E2%98%82=api/src%3Ccom.bmc.arsys.api%7BARServerU ser.java%E2%98%83ARServerUser%7EformatQualification%7EQString;%7EQObject ;%E2%98%82Objectqualification) throws ARExceptioneclipse-javadoc:%E2%98%82=api/src%3Ccom.bmc.arsys.api%7BARSe rverUser.java%E2%98%83ARServerUser%7EformatQualification%7EQString;%7EQO bject;%E2%98%82ARException Formats an internal representation of a qualifier to a readable String Parameters: *form* Form against which this qualification is defined * qualification* given qualification - it can be an encoded qualification representation (String) or a QualifierInfo object Returns: Readable qualification string Throws: ARExceptioneclipse-javadoc:%E2%98%82=api/src%3Ccom.bmc.arsys.api%7BARSe rverUser.java%E2%98%83ARServerUser%7EformatQualification%7EQString;%7EQO bject;%E2%98%82ARException- in case of formatting errors In your code below, you can do it by using the following line: System.out.println(context.formatQualification(aLinkObjs.get(i).getPrima ryForm(), aLinkObjs.get(i).getQualifier()) ); Hope that helps. Calman On Tue, Oct 27, 2009 at 8:14 AM, LJ Longwing lj.longw...@gmail.com wrote: ** Wow...ask a tough oneoktook me FOREVER to figure out Qualifiersbut 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 anyit'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; } ListActiveLink 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
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
Okso your complaint is not at all about ARInside, which is what I thought you were talking about...:)I would say that in your situation regarding the arithmetic, I would open a defect with BMC...because what you entered is most definitely not what comes back when you re-open it...9 vs. 7 -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 toI 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 oneoktook me FOREVER to figure out Qualifiersbut 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 anyit'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; } ListActiveLink 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
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 oneoktook me FOREVER to figure out Qualifiersbut 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 anyit'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; } ListActiveLink 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 _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net 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:rmisoluti...@verizon.net ARSlist: Where the Answers Are
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
I presume you mean recursive rather than iterative. All recursion can be expressed as iteration but sometimes (and this is an example) it is simpler to be recursive. I forward an email on the subject originally in reply to LJ Longwing. Note that this code is NOT java! From: Action Request System discussion list(ARSList) [mailto: mailto:arslist@ARSLIST.ORG arsl...@arslist.org] On Behalf Of Ben Chernys Sent: Friday, January 25, 2008 1:38 PM To: mailto:arslist@ARSLIST.ORG arslist@ARSLIST.ORG Subject: Re: Java 7.1 API Assistance This is non-trivial. I have described my function on the list in the past but cannot find that post (perhaps in an archive?). I use it in a binary that dumps an ARS server's workflow and table structures into an ASCII file that I can then search in an editor. From the function pre-amble: // builds a text string from an AR Qualifier Struct ArdUtErr ArdQualDecode ( // decodes a qualifier structure ArdSch * pS, // a loaded schema ArdSch * pSc, // the current schema ARQualifierStruct * pQ, // returned string must be freed char * * vTgt // by caller and can be used ) // in ARLoadARQualifierStruct() // this is pretty recursive. // first, the structure of pQ: //op // left, right (two new, same structs) // not (one more same struct) // relopstruct (a simpler field / value struct) // so how do we do it? // we will always produce a string something like // ( ?? AND ?? ) or // ( ?? OR ?? ) or // ( NOT ?? ) or // ( A = B ) // the ?? is returned by a recursive call to this routine The gist of the main switch in the function ... switch (pQ-operation) { case AR_COND_OP_AND: case AR_COND_OP_OR: ArdQualDecode(pS, pSc, pQ-u.andor.operandLeft, wP1); ArdQualDecode(pS, pSc, pQ-u.andor.operandRight, wP2); // combine ( wP1 and/or wP2 ) case AR_COND_OP_NOT: ArdQualDecode(pS, pSc, pQ-u.not, wP1); // combine ( not wP1 ) case AR_COND_OP_REL_OP: // make ( a relop b ) } ... _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: October 27, 2009 4:15 PM To: arslist@ARSLIST.ORG Subject: Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example) ** Wow...ask a tough oneoktook me FOREVER to figure out Qualifiersbut 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 anyit'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; } ListActiveLink 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
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
Misi, There was a fix put in toI 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 oneoktook me FOREVER to figure out Qualifiersbut 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 anyit'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; } ListActiveLink 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 _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ __ _ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
Hmm, that's only half the story... Think about this ... 'Create Date' ($TIMESTAMP$ - (7 * 24 * 60 * 60)) AND whatever LJ Longwing quoted below i.e. qualifiers that involve arithmetic operations as well. The recursiveness/complexity grows even more... :) Unless you're really trying to emulate the qualification evaluation (like AR workflow runtimes such as Server/Midtier/UserTool typically do), I suggest not to go deal with all this complexity yourself. Rather see, if your utility can get by, simply by offering a string representation of the qualifier. To do these, you can surely use ARServerUser.formatQualification/parseQualification etc routines within Java API to convert AR given qualifier object to a readable string format or the reverse. However, if your requirement is to really build the qualifier tree object and process it some how - then make sure that your logic indeed covers logical operators (Longwing quoted these below), as well as arithmetic operations and finally deal with field/keyword references appropriately. HTH Appajee From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, October 27, 2009 8:15 AM To: arslist@ARSLIST.ORG Subject: Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example) Wow...ask a tough oneoktook me FOREVER to figure out Qualifiersbut 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 anyit's still a bit fuzzy in my head, but I understand it well enough as it is to do what I need to do. _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: Where the Answers Are
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
The first time I needed to parse a qualifier was when I was writing a program that would identify all workflow that set a particular selection field to a particular valuetons of fun _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of Papolu, Appajee Sent: Wednesday, October 28, 2009 4:43 PM To: arslist@ARSLIST.ORG Subject: Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example) ** Hmm, that's only half the story. Think about this . 'Create Date' ($TIMESTAMP$ - (7 * 24 * 60 * 60)) AND whatever LJ Longwing quoted below i.e. qualifiers that involve arithmetic operations as well. The recursiveness/complexity grows even more. :-) Unless you're really trying to emulate the qualification evaluation (like AR workflow runtimes such as Server/Midtier/UserTool typically do), I suggest not to go deal with all this complexity yourself. Rather see, if your utility can get by, simply by offering a string representation of the qualifier. To do these, you can surely use ARServerUser.formatQualification/parseQualification etc routines within Java API to convert AR given qualifier object to a readable string format or the reverse. However, if your requirement is to really build the qualifier tree object and process it some how - then make sure that your logic indeed covers logical operators (Longwing quoted these below), as well as arithmetic operations and finally deal with field/keyword references appropriately. HTH Appajee _ From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, October 27, 2009 8:15 AM To: arslist@ARSLIST.ORG Subject: Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example) Wow...ask a tough oneoktook me FOREVER to figure out Qualifiersbut 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 anyit's still a bit fuzzy in my head, but I understand it well enough as it is to do what I need to do. _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are__Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: Where the Answers Are
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
Hmm, that's only half the story... Think about this ... 'Create Date' ($TIMESTAMP$ - (7 * 24 * 60 * 60)) AND whatever LJ Longwing quoted below i.e. qualifiers that involve arithmetic operations as well. The recursiveness/complexity grows even more... :) Unless you're really trying to emulate the qualification evaluation (like AR workflow runtimes such as Server/Midtier/UserTool typically do), I suggest not to go deal with all this complexity yourself. Rather see, if your utility can get by, simply by offering a string representation of the qualifier. To do these, you can surely use ARServerUser.formatQualification/parseQualification etc routines within Java API to convert AR given qualifier object to a readable string format or the reverse. However, if your requirement is to really build the qualifier tree object and process it some how - then make sure that your logic indeed covers logical operators (Longwing quoted these below), as well as arithmetic operations and finally deal with field/keyword references appropriately. HTH Appajee From: Action Request System discussion list(ARSList) [mailto:arsl...@arslist.org] On Behalf Of LJ Longwing Sent: Tuesday, October 27, 2009 8:15 AM To: arslist@ARSLIST.ORG Subject: Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example) Wow...ask a tough oneoktook me FOREVER to figure out Qualifiersbut 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 anyit'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; } ListActiveLink 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 www.tiberone.comhttp://www.tiberone.com/ _Platinum
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
To get a human readable string for a QualifierInfo object use ARServerUser.formatQualification(); From the JavaDocs for the method: Stringeclipse-javadoc:%E2%98%82=api/src%3Ccom.bmc.arsys.api%7BARServerUser.java%E2%98%83ARServerUser%7EformatQualification%7EQString;%7EQObject;%E2%98%82Stringcom.bmc.arsys.api. ARServerUsereclipse-javadoc:%E2%98%82=api/src%3Ccom.bmc.arsys.api%7BARServerUser.java%E2%98%83ARServerUser .formatQualification(Stringeclipse-javadoc:%E2%98%82=api/src%3Ccom.bmc.arsys.api%7BARServerUser.java%E2%98%83ARServerUser%7EformatQualification%7EQString;%7EQObject;%E2%98%82Stringform, Objecteclipse-javadoc:%E2%98%82=api/src%3Ccom.bmc.arsys.api%7BARServerUser.java%E2%98%83ARServerUser%7EformatQualification%7EQString;%7EQObject;%E2%98%82Objectqualification) throws ARExceptioneclipse-javadoc:%E2%98%82=api/src%3Ccom.bmc.arsys.api%7BARServerUser.java%E2%98%83ARServerUser%7EformatQualification%7EQString;%7EQObject;%E2%98%82ARException Formats an internal representation of a qualifier to a readable String Parameters: *form* Form against which this qualification is defined * qualification* given qualification - it can be an encoded qualification representation (String) or a QualifierInfo object Returns: Readable qualification string Throws: ARExceptioneclipse-javadoc:%E2%98%82=api/src%3Ccom.bmc.arsys.api%7BARServerUser.java%E2%98%83ARServerUser%7EformatQualification%7EQString;%7EQObject;%E2%98%82ARException- in case of formatting errors In your code below, you can do it by using the following line: System.out.println(context.formatQualification(aLinkObjs.get(i).getPrimaryForm(), aLinkObjs.get(i).getQualifier()) ); Hope that helps. Calman On Tue, Oct 27, 2009 at 8:14 AM, LJ Longwing lj.longw...@gmail.com wrote: ** Wow...ask a tough oneoktook me FOREVER to figure out Qualifiersbut 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 anyit'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; } ListActiveLink 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
Re: Java API for ARS - How to obtain a Run-If line from an Active Link (for example)
Wow...ask a tough oneoktook me FOREVER to figure out Qualifiersbut 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 anyit'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; } ListActiveLink 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 _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: Where the Answers Are
Re: Java API for Attachment Pool
** Senthil,You can use the getEntryBlob(formName, entryId, fieldId) method of the ARServerUser class to retrieve attachment data. The method returns a byte[] array.I've attached some source code to this message - have a look at the BaseARSDAO.getAttachmentContent() method. Depending on how large the content is, you may want to write the data out to disk and store it in a temporary file._Platinum Sponsor: rmisoluti...@verizon.net ARSlist: "Where the Answers Are"_ RemedyAPI.jar Description: application/java-archive ** DerekOn Sep 16, 2009, at 8:55 AM, senthil kumar wrote:** Hi,I am new to Java API but I need to fetch the attachemt files fromattachment pool by using Java API. I dont know which method i need to callto get attachement files.Could you please suggest how to proceed on this.Remedy Version : 7.1Os: LinuxThanks. _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: "Where the Answers Are"_ _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: "Where the Answers Are"_
Re: Java API for Attachment Pool
Found this file on my laptop, it may give you a start. -- Jarl 2009/9/16 senthil kumar msenthil...@gmail.com: ** Hi, I am new to Java API but I need to fetch the attachemt files from attachment pool by using Java API. I dont know which method i need to call to get attachement files. Could you please suggest how to proceed on this. Remedy Version : 7.1 Os: Linux Thanks. _Platinum Sponsor: rmisoluti...@verizon.net ARSlist: Where the Answers Are_ ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor:rmisoluti...@verizon.net ARSlist: Where the Answers Are import com.remedy.arsys.api.*; public class getAttach { public static void main(String args[]) { // Username to login to ARServer String uname = Demo; // Password for the User String pword = ; // Language String lang = ; // ARServer String serv = ; // Create ARServerUser object with supporting information. ARServerUser context = new ARServerUser(uname, pword, lang, serv); // Create NameID object adding the form name you wish to retrieve the attachment from in the constructor. NameID schemaID = new NameID(RESOURCE_Downloads); // Create EntryID object adding the EntryID of the record you wish to retrieve the attachment from in the constructor EntryID entryID = new EntryID(007); // Create FieldID object adding the fieldID of the attachment field in the constructor long fid = 536880912; FieldID fieldID = new FieldID(fid); // Need to have the Util.ARGetEntryBlob() method in a try block to catch ARException try { // Set a string variable for the name of the attachment String aname = ConvertQual.def; // Set a string variable for the full path of where you wish to copy the attachment to. String filePath = C:\\ConvertQual.def; // Create AttachmentInfo object with supporting information AttachmentInfo attach = new AttachmentInfo(aname, 0, 0, ); // Call the setValue() method of the AttachmentInfo object passing in the full path string variable. attach.setValue(filePath); // Call ARGetEntryBlob with supporting information Util.ARGetEntryBlob(context, schemaID, entryID, fieldID, attach); } catch (ARException e) { System.out.println(Exception: + e.toString()); } } }
Re: Java API/ARS 7.1 question [Resolved]
The API's are mostly proprietary and owned by BMC. There are also dll's for Unicode, XML and XSLT (ICU, Xerces and Xalan) included in the API which fall under a different license. This is all explained here: http://arswiki.org/wiki/Remedy_API_Downloads So the API is not open source, but parts of it are. Axton received an OK from Doug Mueller, CTO of BMC Software, to host them on ARSwiki though. I'm not a lawyer, but if you are using 7.1 server and have a support contract, I guess you will be allowed to use the 7.5 java libraries if you'd want to do API programming. API docs are part of the 7.5 java distribution. HTH, -- Michiel Beijen Software Consultant +31 6 - 457 42 418 Bee Free IT + http://beefreeit.nl On Thu, Mar 26, 2009 at 08:59, Krombholz, Robert, VF-Group robert.krombh...@vodafone.com wrote: What about the license of the ARS APIs? Are they OpenSource? Or am I only allowed to use the 7.5 libaries if I pay for a 7.5 server? (because we still use 7.1) If it is legal it would be very nice if you could send me the 7.5 Java libs. Is there an API documentation included? Thanks ahead Robert -Ursprüngliche Nachricht- Von: Action Request System discussion list(ARSList) [mailto: arsl...@arslist.org] Im Auftrag von James Pifer Gesendet: Mittwoch, 25. März 2009 18:44 An: arslist@ARSLIST.ORG Betreff: Re: Java API/ARS 7.1 question [Resolved] I was able to get my hands on 7.5 api. 100% java is VERY nice, works great. Also works on 64bit. James ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: RMI Solutions ARSlist: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: RMI Solutions ARSlist: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: RMI Solutions ARSlist: Where the Answers Are
Re: Java API/ARS 7.1 question [Resolved]
This is a statement I received from Doug Mueller a few years back on the subject: http://arswiki.org/dist/docs/RE_Open_Source_Initiative.pdf To my knowledge this has not changed. Axton Grams The opinions, statements, and/or suggested courses of action expressed in this E-mail do not necessarily reflect those of BMC Software, Inc. My voluntary participation in this forum is not intended to convey a role as a spokesperson, liaison or public relations representative for BMC Software, Inc. On Thu, Mar 26, 2009 at 2:59 AM, Krombholz, Robert, VF-Group robert.krombh...@vodafone.com wrote: What about the license of the ARS APIs? Are they OpenSource? Or am I only allowed to use the 7.5 libaries if I pay for a 7.5 server? (because we still use 7.1) If it is legal it would be very nice if you could send me the 7.5 Java libs. Is there an API documentation included? Thanks ahead Robert -Ursprüngliche Nachricht- Von: Action Request System discussion list(ARSList) [mailto: arsl...@arslist.org] Im Auftrag von James Pifer Gesendet: Mittwoch, 25. März 2009 18:44 An: arslist@ARSLIST.ORG Betreff: Re: Java API/ARS 7.1 question [Resolved] I was able to get my hands on 7.5 api. 100% java is VERY nice, works great. Also works on 64bit. James ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: RMI Solutions ARSlist: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: RMI Solutions ARSlist: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: RMI Solutions ARSlist: Where the Answers Are
Re: Java API/ARS 7.1 question
Well, obviously they are in the 'api' subdirectory from a 7.5 server... The APIs used to be hosted as a separate download from http://arswiki.org - Axton put them there. But since there was little user contribution to the wiki (and axton is a busy guy) the last api's you'll find there are v7.1. You can probably extract them easiest from the tarballs on the patch download site of BMC. Kind regards, -- Michiel Beijen Software Consultant +31 6 - 457 42 418 Bee Free IT + http://beefreeit.nl On Tue, Mar 24, 2009 at 16:00, James Pifer j...@obrien-pifer.com wrote: On Mon, 2009-03-23 at 16:26 +0100, Michiel Beijen wrote: ** James, I saw a reference to 'lib64' in your error message. Please make sure that you use a 32-bit version of Java - the 7.1 API libs contain JNI and are not 100% 'pure' java. You could also use the 7.5 api libs, which are 100% java (assuming that your server is running 7.0.1 or newer). Where can I get 7.5 api libs? James ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: RMI Solutions ARSlist: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: RMI Solutions ARSlist: Where the Answers Are
Re: Java API/ARS 7.1 question
Yes, a rather painful way to get them out. The new installers pack everything in a file that I do not know how to unpack, so an install of the server is required to get the api's. I will not be able to accomodate this for HPUX or AIX since I do not have machines on those platforms. Axton Grams On Wed, Mar 25, 2009 at 8:55 AM, Grooms, Frederick W frederick.w.gro...@xo.com wrote: It used to be that the server install asked if you wanted to install the API (so you could choose No to the Server question and Yes to the API question and just install the API). Now with 7.5 you no longer get that option and to get the API you just have to install the server and copy the API folder. *From:* Action Request System discussion list(ARSList) [mailto: arsl...@arslist.org] *On Behalf Of *Michiel Beijen *Sent:* Wednesday, March 25, 2009 3:07 AM *To:* arslist@ARSLIST.ORG *Subject:* Re: Java API/ARS 7.1 question ** Well, obviously they are in the 'api' subdirectory from a 7.5 server... The APIs used to be hosted as a separate download from http://arswiki.org- Axton put them there. But since there was little user contribution to the wiki (and axton is a busy guy) the last api's you'll find there are v7.1. You can probably extract them easiest from the tarballs on the patch download site of BMC. Kind regards, -- Michiel Beijen Software Consultant +31 6 - 457 42 418 Bee Free IT + http://beefreeit.nl On Tue, Mar 24, 2009 at 16:00, James Pifer j...@obrien-pifer.com wrote: On Mon, 2009-03-23 at 16:26 +0100, Michiel Beijen wrote: ** James, I saw a reference to 'lib64' in your error message. Please make sure that you use a 32-bit version of Java - the 7.1 API libs contain JNI and are not 100% 'pure' java. You could also use the 7.5 api libs, which are 100% java (assuming that your server is running 7.0.1 or newer). Where can I get 7.5 api libs? James ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: RMI Solutions ARSlist: Where the Answers Are
Re: Java API/ARS 7.1 question
On Wed, 2009-03-25 at 09:51 -0500, Axton wrote: ** Yes, a rather painful way to get them out. The new installers pack everything in a file that I do not know how to unpack, so an install of the server is required to get the api's. I will not be able to accomodate this for HPUX or AIX since I do not have machines on those platforms. Axton Grams Yeah, I downloaded the installer and tried as well, but couldn't find it the way they have it packaged. I could throw a VM together to do the install, but then I also have to install oracle, etc etc etc. Major pain, but may come to that. If anyone has a linux machine running ARS 7.5, would you be willing to zip up the api dir and send it to me? Thanks, James ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: RMI Solutions ARSlist: Where the Answers Are
Re: Java API/ARS 7.1 question
You can probably get all API related stuff (libraries and Jars) it from midtier installation. I think midtier installation should be faster than arserver. I havent done any 7.5 midtier installations however, with 7.1 its just deploying WAR file and i got all required files from the below path . PATH- webapps/arsys/WEB-INF/lib Hope it helps. Thanks Chintan --- On Wed, 3/25/09, James Pifer j...@obrien-pifer.com wrote: From: James Pifer j...@obrien-pifer.com Subject: Re: Java API/ARS 7.1 question To: arslist@ARSLIST.ORG Date: Wednesday, March 25, 2009, 8:55 AM On Wed, 2009-03-25 at 09:51 -0500, Axton wrote: ** Yes, a rather painful way to get them out. The new installers pack everything in a file that I do not know how to unpack, so an install of the server is required to get the api's. I will not be able to accomodate this for HPUX or AIX since I do not have machines on those platforms. Axton Grams Yeah, I downloaded the installer and tried as well, but couldn't find it the way they have it packaged. I could throw a VM together to do the install, but then I also have to install oracle, etc etc etc. Major pain, but may come to that. If anyone has a linux machine running ARS 7.5, would you be willing to zip up the api dir and send it to me? Thanks, James ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: RMI Solutions ARSlist: Where the Answers Are ___ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org Platinum Sponsor: RMI Solutions ARSlist: Where the Answers Are