Searching the Help
To search for information in the Help, type a word or phrase in the Search box. When you enter a group of words, OR is inferred. You can use Boolean operators to refine your search.
Results returned are case insensitive. However, results ranking takes case into account and assigns higher scores to case matches. Therefore, a search for "cats" followed by a search for "Cats" would return the same number of Help topics, but the order in which the topics are listed would be different.
Search for | Example | Results |
---|---|---|
A single word | cat
|
Topics that contain the word "cat". You will also find its grammatical variations, such as "cats". |
A phrase. You can specify that the search results contain a specific phrase. |
"cat food" (quotation marks) |
Topics that contain the literal phrase "cat food" and all its grammatical variations. Without the quotation marks, the query is equivalent to specifying an OR operator, which finds topics with one of the individual words instead of the phrase. |
Search for | Operator | Example |
---|---|---|
Two or more words in the same topic |
|
|
Either word in a topic |
|
|
Topics that do not contain a specific word or phrase |
|
|
Topics that contain one string and do not contain another | ^ (caret) |
cat ^ mouse
|
A combination of search types | ( ) parentheses |
|
Troubleshooting overview
To successfully troubleshoot the Document Engine you will need to gather the following information:
- What dbdict and Object is being used
- What State is the record in
- What is the Process being called
- Steps followed to reproduce (STR) the problem
Research application path through the Document Engine
In troubleshooting the Document Engine, as with troubleshooting any Service Manager application, enter RTM:3 and debugdbquery:999 in the Service Manager sm.ini file and then start a new client connection. Unless this user process is the very first to invoke the Document Engine processes to debug, it may not show the selection of the State or Process records in the sm.log file when doing this trace, but it will give helpful hints as to which Process was being invoked.
Find dbdict or Object used
To determine which dbdicts or Object is being used, search the log file.
Log sample:
1320 07/18/2006 11:00:36 RADTRACE 20 [ 1] se.get.object get.object select CPU( 0 1411 )
1320 07/18/2006 11:00:36 (0x0129AC08) DBACCESS - Cache Find against file Object found 1 record, query: file.name="pcsoftware"
1320 07/18/2006 11:00:36 RADTRACE 20 [ 1] se.get.object set.access process CPU( 0 1411 )
Find State for the records
The next question to look at is which State the record is in. To find that information, search for the following in the trace sm.log:
Log sample:
1320 07/18/2006 11:00:48 RADTRACE 10 [ 1] se.get.state select.state select CPU( 0 1491 )
1320 07/18/2006 11:00:48 (0x01292FB0) DBACCESS - Cache Find against file States found 1 record, query: state="pcs.list"
1320 07/18/2006 11:00:48 RADTRACE 10 [ 1] se.get.state exit.normal process CPU( 0 1491 )
Find the name of the Process
The name of the Process can be found as well, by searching in the sm.log containing the trace shown in the following example.
Log sample:
1320 07/18/2006 11:00:50 RADTRACE 20 [ 1] se.call.process select.process select CPU( 0 1542 )
1320 07/18/2006 11:00:50 (0x00B56810) DBACCESS - Cache Find against file Process found 1 record, query: process="upgrade.pcs"
1320 07/18/2006 11:00:50 RADTRACE 20 [ 1] se.call.process run.pre.exp process CPU( 0 1542 )
Research application errors
Processes call a number of RAD applications and execute a number of expressions, with a possibility of invoking more Processes afterwards. If any of the applications or expressions caused an error exit due to wrong syntax or wrong logic, this information can be found in the sm.log file.
Log sample:
Process panel run.pre.exp in RAD se.call.process encountered error in line 1 (se.call.process,run.pre.exp) Cannot evaluate expression (se.call.process,run.pre.exp) Cannot evaluate expression (se.call.process,run.pre.exp) Bad arg(2) oper = (se.call.process,run.pre.exp) Cannot evaluate expression (se.call.process,run.pre.exp) Cannot evaluate expression (se.call.process,run.pre.exp) Bad arg(2) oper = (se.call.process,run.pre.exp) Cannot evaluate expression (se.call.process,run.pre.exp) Bad arg(2) oper nullsub (se.call.process,run.pre.exp) Cannot evaluate expression (se.call.process,run.pre.exp) Bad arg(2) oper in (se.call.process,run.pre.exp) Cannot evaluate expression (se.call.process,run.pre.exp) Unrecoverable error in application: se.search.objects on panel call.list.engine Unrecoverable error in application: se.list.engine on panel call.process.1 Unrecoverable error in application: se.call.process on panel run.pre.exp
In this example (not out-of-box), the error occurred in se.call.process, run.pre.exp, or in other words, while evaluating the initial expressions of the Process. To find out which Process was causing the issue, go through the steps outlined above and note the process from the line:
DBACCESS - Cache Find against file Process found 1 record, query: process="upgrade.pcs"
Go to the Process record by the name of upgrade.pcs and check for any statements on the initial expressions tab. In this specific case, the expression will include the word nullsub. For example, the expression in question for this test may be
$L.icount=nullsub($L.icount, anynumberIwant)
The variable, anynumberIwant, is not a valid field, literal or variable, so it will have to be changed to prevent this issue.
Print values of variables or results of expressions
In the Document Engine, the path through a work flow is often determined by the value assign to a field or variable. To determine the value assigned to a field or variable that influences the work flow, use the JavaScript print() function or use the log rtecall
($L.void=rtecall(“log”, $L.rc, “message”
) in the RAD expressions. The message can be a concatenated string such as
$L.message="The value of $L.test is " + $L.test
where $L.test
is a variable that was assigned a character value.