What is process Model?
Discussion posts and replies are publicly visible
A process model is the primary tool in Appian for describing a workflow. Developers graphically lay out the workflow, which may assign user tasks, manipulate data, post system events, or update other design objects. Process models are frequently used with record types to provide users with tools to act on the information shown by the record.
In single sentence its a executable workflow with different activities involved.
docs.appian.com/.../Process_Modeling_Tutorial.html
Different type of gateway in apian? and what are its uses?
docs.appian.com/.../Gateways.html
Process model best Practices?
There are various best practices for process modeling with respect to process model and process nodes. It also depends on the activity we are using like messaging. Following are a few basic best practices.
Process ModelsProcess model has labeled swim-lanes with default assignmentProcess model display name is set and is dynamic (e.g. “Started by pp!initiator”)All process flows have been tested and no errors occurredAll models have custom Alert settings configured using groupsProcesses that contain user input tasks or a significant portion of log: Archive after 3 days. Everything else: Delete after 0 days.Process models are split into sub-processes to compartmentalize sets of functionality and large cumbersome process models are avoidedModels contain no more than 30 nodesModels contain no more than 50 process variablesXOR gateways are used in front of MNI nodes to check for empty/null valuesProcess flow will always reach at least one terminating end eventProcess-to-process messages are targeted to a specific process instance using PIDAll complex logic is documented using annotations (anything that isn't obvious)All external integrations are contained in their own subprocesses to minimize the impacts of the external systems changing their interfaces. E.g. anything other than query rules and data stores should be encapsulated.If the external integration points are using CDTs to exchange data (such as integration with web services), use these CDTs locally within the integration process models or rules and create business CDTs to be used by the rest of the application. This prevents changes in external systems data structures from having widespread impacts in the application.Best practices for creating memory efficient models have been followedDesign short-lived processes to perform actions and maintain the data. Consider using process model based related actions instead of quick task related actions when possible.Ensure there is no way to unintentionally loop through a smart service node (db write, create document, etc)
Process NodesNodes are named with verb-noun formatTask display name is set and dynamicEvery SAIL form node has all inputs specified as process variables or activity class parametersAll XOR/OR gateways have a single incoming flowAll outgoing flows from a gateway are labeledXOR gateways are used instead of ORNode inputs do not make the same query call more than onceCDTs are not passed by reference between parent and sub-processLooping functions are used instead of Multiple Node Instances where possibleOn the Other Tab for Forms, check the "Delete previous instances" and do not check “Keep a record of the form”Use rules and constants instead of hard-coded values in the process nodes
Different between loads with evaluated?
load(): Lets you define local variables within an expression for an interface and evaluate the expression with the new variables, then re-evaluate the function with the local variables' values from the previous evaluation.
with(): Lets you define local variables within a function and evaluate the expression with the new variables. Note: In interfaces, this function differs from the load() function because it recalculates the local variable values after interactions. This recalculation always happens, even if the interaction's updates could not have impacted the variable's value. This means data queries and other slow operations in with() variables can have important performance impacts.
load()
with()
Have a look at the new evaluation function, a!localVariables(). It does everything load() does but with additional refresh options that may drastically simplify your design.
what is CDT?
Its one of the data objects.
As opposed to a primitive or system data type, a custom data type (CDT) is a developer-defined data structure. Data Types allow designers to create a logical grouping of related data that can then be used by other objects to share data. Data can be shared internally, for instance between an interface and process model, or a web service that uses a CDT.
Because a data type will always be used in context of another object, it does not have individual security settings.
Tq bro for your early response