Process management services
Process Management — KYC, AML, and other templates Configurable SmartForms, Approvals, and Workflows Supports extensive configuration of process definitions Intelligent branching and assignment for approvals Access all integrated customer information from CRM Process versioning Automated unit testing framework Mobile enabled and embeddable in client facing portals
- Developing Process Management forms — Questions and answers Is it possible to validate the mandatory fields in each save, instead of at the end of the form? Each field is validated immediately on edit. There is no need to validate again on Save. To validate all fields without any edits, click the Submit button. Is it possible to control the font sizes and colors in the form? We do not encourage changing font sizes as the controls are built to pixel perfect standards as specified by Google's Material Design guidelines. You can change colors by applying your own theme. For more information about themes, see UI themes and CSS. Is there a way to put debugger in the CPM form? For server-side CPM DSL configuration scripts, you can add (logger’info …) to the code and observe results in the Scheme console. For client-side code, debug using the Chrome debugger. Is it possible to refresh the form answer from the model? Make sure the question you want to sync with the class, has the bind property set. For example, on(bp:flow), set the bind property to the class. On the question, either rename the question or set the bind property to match the model the attribute name. How do I write a collection into an associated class? Example: A form associated with class class1, and with an associated attribute asc1 to class class2, and the collection in the form collection1 has five questions each for the five attributes of class2. Assuming asc1 is a collection association, try the following: SCHEME (bp:flow (bp:bind class1) (bp:section asc1 (bp:text class2_attr1 …) (bp:text class2_attr2 …) … ) ) Are there forms available to help us with our development? The following test forms are available in the CPM project: bpdatatestbind.scm bpdatatestquestions.scm How do I translate JavaScript to Scheme? The following code defines a function to translate JavaScript to Scheme: JavaScript to Scheme translator JS (define (translateJS jsText) (import 'nexj.core.util.TextPositionReader) (((((invocation-context)'metadata)'getLanguageType "js")'parser)'parse (nexj.core.util.TextPositionReader'new (open-input-string jsText) "url" ) (make-hashtable) ) ) To translate JavaScript expressions to Scheme expressions: Translate a JavaScript expression to Scheme expression JS (define jsText "bp.where(\"in?\", this.value, [\"a\", \"b\", \"c\"]);") (bp:js:translateJS jsText) // > (bp 'where "in?" (this 'value) (collection "a" "b" "c")) Note that escaped characters inside jsToScheme(...) must be escaped a second time. Translate jsToScheme() expressions JS //double quotes within jsToScheme must be escaped twice (define jsText "jsToScheme(\"(logger'info \\\"Some Text\\\"\")") (bp:js:translateJS jsText) // ((jsToScheme "(logger'info \"Some Text\"") How do I run JavaScript on the Scheme console? To run JavaScript code on the Scheme console, you must first switch the console to run JavaScript: Switch from Scheme to JavaSript console SCHEME (*repl*'language "js") To switch back to running Scheme: Switch from JavaScript to Scheme console SCHEME #"(*repl*'language \"scheme\")"; #"*repl*".language = "scheme";
- Form controls — Scheme SCHEME (bp:flow (bp:page p1 (bp:section s1 (bp:text q1) ) ) (: globals ,(message (: g1 "Global1") (: g2 "Global2")) ) ) JavaScript JS bp.flow( bp.page(p1, bp.section(s1, bp.text(q1) ) ), { globals: { g1: "Global1", g2: "Global2", } } )