OverviewAs 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
Report on missing labels/accessibility text for Interface Object components
Hi Swati Sharda
Try changing the end of the expression AQA_ER_getPatchMetadata to this:
local!appianVersion: filter( fn!regexmatch("Appian-Version",_), local!manifestContentItems ), local!createdOn: filter( fn!regexmatch("Created-On",_), local!manifestContentItems ), 'type!{urn:com:appian:types:AQA}AQA_PATCH_METADATA'( appianVersion: trim(split(local!appianVersion,"Appian-Version:"))[2], patchDateTime: rule!AQA_ER_getPatchDateTime(patchCreatedDate: trim(split(local!createdOn,"Created-On:"))[2]) )
Hi!
I am testing the Aquaman on version 24.2 and it seems that definition for Translation Strings are missing from AOA_OBJECT_TYPE, AOA_OBJECT_ATTRIBUTE tables.
Is there a patch existing or planned?
Thank you!
Hi @Stewart Burchell,
Aquaman is not working with latest Appian version 24.2 as we are getting error:
An error occurred while evaluating expression: patchMetaData:rule!AQA_ER_getPatchMetadata(patchContent: pv!patchContent) (Expression evaluation error in rule 'aqa_er_getpatchmetadata' at function 'type!{urn:com:appian:types:AQA}AQA_PATCH_METADATA' [line 26]: Invalid index (2) for list: valid range is 1..1) (Data Outputs)
it is due to change in the order of manifest file in new version:
the new version of manifest file:
Manifest-Version: 1.0Appian-Version: 24.2.295.0Created-On: 2024-07-04T12:09:28.760Z
older version:
Manifest-Version: 1.0Created-On: 2021-08-19T07:11:28.264ZAppian-Version: 21.2.335.0
I have changed the index in AQA_ER_getPatchMetadata from 3 to 2 but Aquaman result showing no analysis.
Can you please check that.
Hi JJ Cañas - whilst you cannot export the whole of an analysis in a WebAPI the WebAPIs you mention can be used as part of a CI/CD pipeline.:
Were you expecting/wanting a WebAPI to be able to do something else?
Hi Kurt Bunge - thanks for adding this clarification. I've tried to articulate in the documentation that AQuAMan simply presents some findings (always expressed as "risks") and that it's entirely up to the user to establish what the risks are and whether what - if anything - should be done to address them. And, of course, context is key in any such assessment.
In short: AQuAMan should not be used as a blunt tool where the findings are Boolean (good versus bad!) but as a source of insight from which actions may be taken.
Hi Team,
The client has asked us if it would be possible to export the Aquaman analyzes. I have seen that the application has this two web apis:
But it seems that none of them work for what the client is asking for.
Is there a way to expose these analyzes in a web api so that they are consumed by a CI/CD tool?
Thanks!
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