Appian Interview Question and Answers
Appian Interview Question and Answers
Question: When can you go for Radio button, Checkbox field and Drop down field and Multiple drop down
field?
Answer: Radio Buttons allows the user selecting only one option among the list of options.
Check boxes allows the user selecting more than one option among the list of Options.
Drop down filed displays the values allowing the user to select one option from them.
Multiple Drop down filed displays the values allowing the user to select one option from them.
When we have very less values to display like 5 or 6 then we can go for Radio buttons and check box fields.
If we want to display more number of values then we can go for Drop down field and Multiple Drop down
fields so that the form space will be utilized effectively.
Question: What are different types of Link fields available in Appian?
Answer:
Authorization Link - Defines a link to authorize a user for a connected system that uses OAuth 2.0.
Document Download Link - Defines a link used to download a document.
Dynamic Link - Defines a link that triggers updates to one or more variables.
News Entry Link - Defines a link to news entries.
Process Task Link - Defines a link to a process task.
Record Link - Defines a link to a record view.
Report Link - Defines a link to a report.
Start Process Link - Defines a link to start a process and navigates the user through any initial chained forms.
Submit Link - Defines a link to trigger form submission.
User Record Link - Defines a link to a user record.
Web Link - Defines a link to an external web page.
Question: Can you explain few link fields?
Answer:
Web Link:
a!safeLink(
label: "Company web site",
uri: "http://www.appian.com"
)
Document Link:
a! documentDownloadLink(
label: "Image",
document: toDocument(2565)/*2565 is a document Id */
)
Submit Link:
a!submitLink(
label: "Delete Request",
confirmHeader: "Warning!",
confirmMessage: "This request will be permanently deleted. Do you want to
continue?",
confirmButtonLabel: "Delete Request",
confirmButtonStyle: "DESTRUCTIVE",
cancelButtonLabel: "Cancel"
)
APPIAN
Question: What is the difference between button widget and button widget submit?
Answer:
Button widget - Displays a button that can conditionally be used to submit a form. Buttons must be placed
inside a button layout.
Button widget Submit - Displays a button that submits a form. Buttons must be placed inside a button layout
Question: What are different types of Grids available in Appian and what is the difference between them?
Answer: There are two types of Grids available in Appian Paging Grid and Editable Grid.
Paging grid - displays the data in a tabular format with pagination at the bottom right corner of the grid and
all the fields are read only. Designer can configure selection on the pagination. Paging grid can be created by
a!gridField.
Editable grid – displays the data in a tabular format allowing the user to edit the field’s inline. It will not have a
pagination. Editable grid can be created by using a!gridLayout.
Question: What is the difference between load and with?
Answer:
Load variables will be initialized With variables will be recalculated each time
once the form is loaded and re- when the expression is re-evaluated.
evaluated each time with the
existing values.
We can use load variables in We can use load variables in SaveInto and
SaveInto and a!Save() a!Save()
We cannot use apply function We can use apply function when calling rule
when calling rule has load has With
Question: What are Data Stores and what is the purpose of Data Stores in Appian?
Answer: Data stores connect the appian to external relational database to Appian. We can connect to only
Secondary data bases and those are configured in JNDI Data source. The Data Stores should have proper
security configured else the writes and reads will throw error.
APPIAN
Question: What are the difference between Query Rule, Query Entity and Query Record.
Answer:
Query Rules a!queryEntity() queryrecord()
Performance Medium Fastest Slowest
Columns Retrieves all columns Retrieves only the Retrieves only the
specified columns specified columns
Aggregations None COUNT, SUM, AVG, MIN, COUNT, SUM, AVG, MIN,
MAX MAX
Can Retrieve Unique Values No Yes Yes
"Between","Not Includes", No Yes Yes
"Not Starts With","Not
Ends With","Is Null","Not
Null,OR, Nested Filters
Sorting on a list field Yes No No
Sorting on multiple fields Yes Yes No
Return Type an Array of CDTs or a DataSubset of DataSubset of Dictionaries
DataSubset of CDTs Dictionaries
Source Data Data Store Entity Data Store Entity Process-backed and
entity-backed records.
Any default filters for the
record type are applied.
Question: Will it be possible to get data from Database based on the grouping of a certain column?
Answer: Yes we can use isgrouping attribute in Query Aggregation column.
a!queryAggregationColumn(
field: "department",
isGrouping: true
)
apply() cannot be used with rules applycomponents() can be used with rules or
or functions that store local data, functions that store local data, including
including rules using load() rules using load()
The Function which was called by The Function which was called by
Apply should not contain SAIL applycomponents can contain SAIL
components components
Contains both Inputs and Outputs Only Input tab will be present so that the
so the parent process can take the parent process can send the data to the child
processed data from the child process.
process.
Question: What are different types of Events available in Appian and its purpose?
Answer:
Start Event node denotes the beginning of a process in a process model, and is used to configure how a
process is launched. The system only allows you to use one Start Event per process model. We can configure
Receive Message Event and Timer Event.
End Event (without a trigger) is used to denote the end of a process flow within a process model. The process
remains active until all active paths in the process arrive at an end event.A process model can have multiple
End Events.
Send Message In a process, a Send Message event can be used to generate a message that is made available
to all Receive Message events (which are actively listening for messages). Messages sent to events that are
not active (either paused, yet to be activated, passed in the process flow, or in an unpublished process model)
are discarded.
Receive Message In a process, a Java message or an email can be used to send information to your process
flow. The Receive Message event can consume an action, or it can be configured to act within a smart service
activity (to trigger an Exception Flow).
Timer events can either be added to the process flow by themselves, or they can be added within an Appian
Smart Service to trigger an Exception Flow or an Escalation. In the process flow, timer events can be used to
schedule a process activity, or to only continue the flow when certain conditions are met. (If the event is
configured in an escalation or an exception, the configuration settings list different wordings.)
The delay or schedule added to an activity or a process flow only begins once the node or event has been
activated.
The timer event must be active in order for the schedule to be triggered. If an End Event is configured to
terminate the process, the timer is also terminated
Rule Event At any time in a process model when there are certain conditions that need to be met before the
process flow proceeds, an intermediate rule event should be used. Once an intermediate rule event is
activated, it remains active until the rule evaluates to true.
Question: What is activity chaining?
Answer: Activity chaining is used when the same user wants to complete two user inputs task one after other
if we enable activity chaining between these two user input tasks then after submitting the form in first user
input task then immediately second form will be displayed to the same user, if we don’t enable the activity
chaining then after submitting the first form then the second task will appear in Tasks Tab.
APPIAN
Long activity chains - greater than 50 node instances OR 5 seconds between attended activities - are strongly
discouraged because they have both an adverse effect on the performance of the system at scale and the
experience of the user.
Question: What is the difference between End Event and Terminate Event?
Answer:
An End Event (without a trigger) is used to denote the end of a process flow within a process model.
The process remains active until all active paths in the process arrive at an end event. Until all the
active paths reaches the End event the process will still in Active state
A process can have multiple End Events. If so, the different branches of a process remain active until
each active path reaches one of the multiple End Event nodes. In such cases, a Terminate Process
event can be used to stop all branches of a process, even if one or more branches have not yet
reached an End Event node. If any of the active path reaches the Terminate Event then the Process
will be in completed state.
Question: What is the Use of Data Management Tab and Alerts tab?
Answer:
Data Management All Appian processes, including completed and cancelled processes, are retained in
memory until archived or deleted. The settings on the data management tab allow designers to specify a
policy for archiving or deleting completed and cancelled processes.
By default, the process is automatically archived after 7 days. Any changes made on this form are applied to
all completed instances of the Process Model. Sub-processes do not inherit this setting.
Alerts The alerts tab specifies the recipients of an alert if there is an error in the process. Generally we use to
configure Application Administrators Group in Alerts tab.
Question: What is Quick Task?
Answer: A Quick Task is any attended activity that is activated by itself and completed outside of fixed process
flow. They are initiated on an ad-hoc basis and a new instance of the task is automatically generated after one
is completed. All assignees can view and complete the Quick Task any number of times until the completion or
termination of the process.
Any attended process activity can be configured as a Quick Task. Such activities display the following marker.
Like other tasks, quick tasks are not required to have an incoming flow, but they must have an outgoing flow.
If a quick task does not have an incoming flow it is activated immediately upon startup of the process.
Question: Can you explain the Security in Appian.
Answer: Security plays a prominent role in Appian. All the application objects including Application can have
security. Thus End users can work properly limiting their access based on the groups they are part of. In
Appian always we need to set security based on Groups only.
Application security enables the users to restrict the access only to the applications that they are working on.
Within an Application based on security of the process models we can restrict the users to display Actions and
performing an Action only to the specific groups users part of.
Knowledge centre security allows the user to upload or download the documents .
Data Store security allows the user to persist the data in to the Database and Retrieve Data from the
Database.
Question: What is Process Start Form and how is it different from User Input task form?
Answer: Process start form allows the user to collect some data from the user to start the process. Untill the
user clicks on the submit button of a form or submit process link the Process will not be started. Where as in
User Input form the process started and been in an Intermediate state at User Input task until the User Clicks
on a button the Process will not continue with the next flow. To create an action in Sites the process model
should contain a process start from where as in Tempo this is not required.
APPIAN
Question: How many ways a process model can be triggered or started?
Answer:
From Application Action
From Record Related Action
From Submit Link or Button of a Process start form
From sub process (Synchronous/Asynchronous)
From Receive Message Event in Start Node
From Timer Event in Start Node.
Start process smart Service.
Start Process smart function
Start Process link
Servlet
Through External system (Exposing PM / Web Api)
Through End Event
Question: What is Web API?
Answer: Web APIs provide a way to expose Appian data and services to outside systems.
Web APIs are created much like expression rules, however there are two main differences between them.
First Web APIs also include an end point that can be called by other systems. Second, a designer doesn't
configure rule inputs for Web APIs, instead passing values to the Web API via query parameters, headers, a
body, or any combination of the three.
Hence External systems will call the corresponding URL for the Web API providing the inputs in the form of
JSON. Then the Web API will execute the rule and provide the output back to the System
All the Web APIs are exposed as Rest full Web service.
All Web APIs must return an HTTP response (a!httpResponse())
Errors related to execution of Web APIs are present in “logs/design_errors.csv”
a!httpResponse() parameters – statusCode, headers, body.
a!httpRequest() parameters – URL, pathSegments, queryParameters, headers, body
a!toJson(value)
We can expose Process models as Web Service. When we do so, the service is exposed as WSDL service.
Appian Functions
Array Functions
a!flatten() Coverts an array that contains nested arrays to a flat arrya
e.g. a!flatten(1)-1
a!flatten({1,2,3})-1,2,3
a!flatten(
{
1,2,3,
{4,5}
}
)--- 1,2,3,4,5
a!append() Appends a value or values to given array and returns resulting array.
a!append({1,2,3},{“chandra”,”sekhar”})—1,2,3,null,null
a!append({“ch”,”nd”},{1,2,3})- ch,nd,1,2,3
updateArray() Inserts new values or modifies existing values at the specified Index of a given array
and returns the resulting array
updatearray({“ch”,”se”},3,{1,2,3}) –ch,se,1,2,3
Index() returns array[Index], if it is valid else returns default value.
APPIAN
Index({10,20,30,40},{1,2},{})
with(
local!cdt:{
{name:"ABC",id:101,sal:3000},
{name:"DEF",id:102,sal:4000},
{name:"GHI",id:103,sal:5000}
},
index(local!cdt,"name",{})
)
“ABC”;”DEF”;”GHI”
Insert() Inserts a value at a given index and returns the resulting array.
Insert({10,20,30},200,2)—10,200,20,30
Insert({10,20,30},200,4)--- 10,20,30,200
Insert ({10,20,30},200,5)--- 10,20,30,200
Insert always inserts the given value at end of the array if the specified index is >= length of the
resulting array. Update array will inserts null values in between them. Append will always appends
the value at the end of the give array.
Joinarray()Concatenates the elements of an array together into one string and inserts a string
separator between each element.
Joinarray({10,20,30},”+”)—“10+20+30”
Length() returns the count of non null values
Length({10,20,30,null,40})—4
Count() returns the count of the elements in the array including null values
Count({10,20,30,null,40})—5
Length() throws error if the variable is null where as count() will not throw error.
Remove() Removest he value at given index from an array and returns the resulting array.
Remove({10,20,30},4)—10,20,30
Remove({10,20,30,40},{1,4})—20,30
Remove({10,20,30},5)—error invalid range.
Reverse() Reverses an array.
Reverse({10,20,30})—{30,20,10}
Where() Returns the indices where the values in the input array are true.
Where({true,false,true})—1,3
Wherecontains() Receives one or more values and returns an array of indices that indicate the
position of the values within the array.
Wherecontains(20,{10,20,30})—2
Set Functions
Contains() Checks whether an array contains the value.
contains({10, 20, 30}, 20)- true
Difference()Returns the values in array1 and not in array2.
difference({10, 20, 30, 40}, {30, 40})—10,20
intersection() Returns only those elements that appear in all of the given arrays.
intersection({10, 20, 30}, {20, 30, 40})—20,30
Uninon()Returns all unique elements from the given arrays.
APPIAN
union({10, 20, 30}, {20, 30, 40})—10,20,30,40
Conversion Functions
Displayvalue()Tries to match a value in a given array with a value at the same index in a replacement
array and returns either the value at the same index or a default value if the value is not found.
with(
local!weekDay:{"Sun","Mon","Tue","Wed","Thu","Fri","Sat"},
local!weekNo:{1,2,3,4,5,6,7},
displayvalue(4,local!weekNo,local!weekDay,"Not Found")
)
Returns “Wed”
ToString()Converts a value to Text. If an array is passed in, its values will be concatenated to form
one string. To preserve the original array structure, use touniformstring.
Tostring({1,2,3})--"1, 2, 3"
ToUniformString()Converts a value to Text, preserving the original scalar or array structure. To
concatenate the array into one string, see tostring.
touniformstring("John Doe 1060 West Addison Chicago", "IL",15)-- John Doe 1060 West Addison
Chicago; IL; 15