AQuAMan

Overview

As a Peer Reviewer I want to have a fast and predictable method of checking the quality of application patches so that I do not have to exert a lot of time and energy manually checking these against the application standards.

As a Lead Developer I want to define and manage the quality standards that comprise the 'Definition of Good' for my application so that they can be applied and reported on in a peer review against an application patch.

Key Features & Functionality

  • Automate 80% of the Peer Review checklist items
  • Register Appian applications and define common standards across that application
  • Run a suite of tests across an application patch
  • Report on failed tests
  • Copy tests between applications
  • Define new object/attribute tests (including database table and view objects) and apply within an application
  • Set the reported significance for a failed test (Fail/Warning/Information)
  • Report on unused variables in Expression Rules and Interfaces
  • Report on the complexity score for Expression Rules and Interfaces
  • Report on missing labels/accessibility text for Interface Object components

Anonymous
  • Hello Dimitark,

    I faced this too and found the the  Xpath function is using XPATH to OBJECT attribute from [AQA_OBJECT_ATTRIBUTE]  wrt to Object type ID.

    That attribute is corrupted when we are converting  mssql to Mysql to server.   

    First verify the Object type

    Verify the object attribute which is getting the call  when rule is failing and then try to pass that attribute.  Once you able to find out the attribute. Please compare it with  the one which is provided in package and see the difference.

    Also c heck case : "612282 - Please make an incident for Xpath broken"

    Thanks

  • Hi Team,
    For the first time we've tried deploying AQuAMan QA application (in Cloud) but we're seeing behavior which is almost identical to the issue posted by subhadeepr3242 6 months ago - where issue occurs only when evaluation some Process Models, but not others. Here's a stack trace of the error: - any ideas on what can be done?

    [1] object: pv!Object, attributeName: #"_a-0000e385-9976-8000-9bac-011c48011c48_3445850", objectAttributes: pv!objectAttributes ) =>(EXCEPTION) [2] 2024-04-15 06:48:58,298 [Appian Work Item - 194049 - WorkID 339 - execution02 - process 536878506 - model 1159 : ExpressionGroupRequest] DEBUG com.appiancorp.core.expr.tree.Variable - Variable local!xPathDocument => Context Reference local!xPathDocument Îåà 2024-04-15 06:48:58,298 [Appian Work Item - 194049 - WorkID 339 - execution02 - process 536878506 - model 1159 : ExpressionGroupRequest] DEBUG com.appiancorp.core.expr.tree.Variable - Variable local!xPathDocument => Context Reference local!xPathDocument Îåà 2024-04-15 06:48:58,299 [Appian Work Item - 194049 - WorkID 339 - execution02 - process 536878506 - model 1159 : ExpressionGroupRequest] DEBUG com.appiancorp.core.expr.Parse - =#"_a-0000e385-9976-8000-9bac-011c48011c48_3446005"( object: pv!Object, attributeName: #"_a-0000e385-9976-8000-9bac-011c48011c48_3445850", objectAttributes: pv!objectAttributes ) =>(EXCEPTION) 2024-04-15 06:48:58,299 [Appian Work Item - 194049 - WorkID 339 - execution02 - process 536878506 - model 1159 : ExpressionGroupRequest] DEBUG com.appiancorp.core.expr.Parse - Could not evaluate expression parse tree: =#"_a-0000e385-9976-8000-9bac-011c48011c48_3446005"( object: pv!Object, attributeName: #"_a-0000e385-9976-8000-9bac-011c48011c48_3445850", objectAttributes: pv!objectAttributes ) com.appiancorp.core.expr.exceptions.ExpressionRuntimeException$AppianExceptionProvider: Expression evaluation error in rule 'aqa_er_getobjectattributevaluebyattributename': Invalid index (1) for list: valid range is empty (APNX-1-4198-000) at <DESIGNER RULE>.(_a-0000e385-9976-8000-9bac-011c48011c48_3446005:1) at ______________________________SAIL_TO_JAVA_BOUNDARY______________________________.esId=BFH2LI9O(Unknown Source) at com.appiancorp.core.expr.exceptions.ExpressionRuntimeException.<init>(ExpressionRuntimeException.java:112) at com.appiancorp.core.expr.exceptions.AppianScriptException.<init>(AppianScriptException.java:28) at com.appiancorp.core.expr.exceptions.AppianScriptException.<init>(AppianScriptException.java:24) at com.appiancorp.core.expr.tree.Select.evalWrapped(Select.java:207) at com.appiancorp.core.expr.Tree.eval(Tree.java:448) at com.appiancorp.core.expr.Tree.eval0(Tree.java:438) at com.appiancorp.core.expr.Tree.eval(Tree.java:341) at com.appiancorp.core.expr.rule.Rule.evalBody(Rule.java:1569) at com.appiancorp.core.expr.rule.Rule.doEval(Rule.java:962) at com.appiancorp.core.expr.rule.Rule.eval(Rule.java:849) at com.appiancorp.core.expr.rule.Rule.evalAndCache(Rule.java:743) at com.appiancorp.core.expr.rule.Rule.eval(Rule.java:735) at com.appiancorp.core.expr.rule.Rule.evalWithMetrics(Rule.java:716) at com.appiancorp.core.expr.rule.Rule.eval(Rule.java:702) at com.appiancorp.core.expr.tree.FreeformRule.evalWrapped(FreeformRule.java:162) at com.appiancorp.core.expr.Tree.eval(Tree.java:448) at com.appiancorp.core.expr.tree.FreeformRule.eval0(FreeformRule.java:133) at com.appiancorp.core.expr.Tree.eval(Tree.java:341) at com.appiancorp.core.expr.Parse.evalInner(Parse.java:433) at com.appiancorp.core.expr.Parse.eval(Parse.java:383) at com.appiancorp.core.expr.Parse.eval(Parse.java:369) at com.appiancorp.core.expr.AppianScriptEngine.eval(AppianScriptEngine.java:79) at com.appiancorp.process.engine.ExpressionGroup.eval(ExpressionGroup.java:290) at com.appiancorp.process.engine.ExpressionGroup.eval(ExpressionGroup.java:354) at com.appiancorp.process.engine.ExpressionGroupRequest.execute0(ExpressionGroupRequest.java:106) at com.appiancorp.common.persistence.data.AppianDataUserContextProvider.executeWithConsistentDataReads(AppianDataUserContextProvider.java:143) at com.appiancorp.process.engine.ProcessContinuationRequest.executeOuter(ProcessContinuationRequest.java:68) at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:129) at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36) at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:110) at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:241) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) Caused by: java.lang.ArrayIndexOutOfBoundsException: Invalid index (1) for list: valid range is empty at com.appiancorp.core.expr.portable.storage.StorageArray.arrayIndexOutOfBoundsException(StorageArray.java:360) at com.appiancorp.core.expr.portable.storage.StorageArray.doSelect_integerScalarIndex(StorageArray.java:737) at com.appiancorp.core.expr.portable.storage.Storage.doSelect(Storage.java:735) at com.appiancorp.core.expr.portable.storage.Storage._select(Storage.java:693) at com.appiancorp.core.expr.portable.storage.Storage.select(Storage.java:673) at com.appiancorp.core.expr.portable.Value.select(Value.java:209) at com.appiancorp.core.Data.select(Data.java:124) at com.appiancorp.core.expr.tree.Select.eval(Select.java:223) -- 2024-04-15 06:48:58,300 [Appian Work Item - 194049 - WorkID 339 - execution02 - process 536878506 - model 1159 : ExpressionGroupRequest] ERROR com.appiancorp.process.engine.ExpressionGroup - An error occurred while evaluating expression: =rule!AQA_ER_getObjectAttributeValueByAttributeName( object: pv!Object, attributeName: cons!AQA_TEXT_OBJECT_ATTRIBUTE_NAME, objectAttributes: pv!objectAttributes ) (Expression evaluation error in rule 'aqa_er_getobjectattributevaluebyattributename': Invalid index (1) for list: valid range is empty) com.appiancorp.core.expr.exceptions.ExpressionRuntimeException$AppianExceptionProvider: Expression evaluation error in rule 'aqa_er_getobjectattributevaluebyattributename': Invalid index (1) for list: valid range is empty (APNX-1-4198-000) at <DESIGNER RULE>.(_a-0000e385-9976-8000-9bac-011c48011c48_3446005:1) at ______________________________SAIL_TO_JAVA_BOUNDARY______________________________.esId=BFH2LI9O(Unknown Source) at com.appiancorp.core.expr.exceptions.ExpressionRuntimeException.<init>(ExpressionRuntimeException.java:112) at com.appiancorp.core.expr.exceptions.AppianScriptException.<init>(AppianScriptException.java:28) at com.appiancorp.core.expr.exceptions.AppianScriptException.<init>(AppianScriptException.java:24) at com.appiancorp.core.expr.tree.Select.evalWrapped(Select.java:207) at com.appiancorp.core.expr.Tree.eval(Tree.java:448) ....

  • The last list item for Key Features and Functionality indicates a test is performed for missing accessibilityText parameter values. Note that no one should be relying on this test (the labels test is valid). Just because a component does not have accessibility text does not mean it fails any a11y requirement. In fact, accessibility text should not need to be used in most cases. It should only be used to provide additional information to non-sighted users. However, the need to do so is based on context. If you design your content correctly, accessibility text should never be needed. In cases where you may believe it IS needed, then you should consider redesigning your content so the information is available to all users, not just non-sighted users. The accessibilityText parameter is one of the most overused of Appian component parameters. In most cases where it is used, it either creates redundancy or confusion for users who rely on a screen reader. The parameter name is misleading because its use does not necessarily make content accessible or even "more accessible".

  • Hi, can you please adapt scripts from Maria DB to Oracle and/or other DBs as well? GPT isn't quite able to adapt it yet Slight smile

  • Just to clarify - the fix worked in the environment where an existing instance of AQuAMan was running so it's not an (AQuAMan) application issue.

    Regarding support for MSSQL - apologies, I do not have the scripts for any other DB other than MariaDB. 

  • Hello  ,

    Thanks for the update, recently we upgraded or local environment from 22.3 to 23.3 Appian Version. As checked with appian support team, they mention that the XPATH fix is part of the new version.

    However, I am still getting the issue. Raised a Appian Support case to look that is it platform issue or Application?

    Also, as I am installing Application in our local environment, and we have MSSQL DB. Can you please provide the scripts in MSSQL as well? 

    Thanks

  • Hi  

    Apologies for the delay in relying, I've been out of the office.

    I don't have a reference to the hotfix specifically but I do have a reference to a separate support case that you can mention: "612282 - Please make an incident for Xpath broken"

    This should provide enough context for your support engineer to apply the relevant fix.

    regards

    Stewart

  • Hello Team,

    Can you please share the  link to download  "Text File Utilities 2.0"?  I am little confuse between Text utilities and Text File  there are 2 different plugin in App Market? and both them are not in 2.0 version.

    Thanks

    SUshil Kapoor