Search This Blog

SBL-BPR-00121: Error loading step definition '%1': Cannot parse expression '%2'.

Applies to:

Product Release: V7 (Enterprise)
Version: 7.5.3.2 [16168] Com/Med
Database: Oracle 9.2.0.4
Application Server OS: Microsoft Windows 2000 Advanced Server SP 4
Database Server OS: Sun Solaris 8

This document was previously published as Siebel SR 38-1550840218.

Symptoms

SBL-DAT-00501, SBL-BPR-00121

Hello,

We have a workflow designed, this workflow has a step that calls a business service, input to the Business Service is either a literal or a expression.

When defining the input like this:

“[Status]='Pending' AND [Planned]>='01/05/2004' AND ([Description] LIKE 'Block*' OR [Description] LIKE 'Deblock*' OR [Description] LIKE 'Hot*' OR [Description] LIKE 'De-Hot*')"

on an Expression Input (double quotes included) we expect the string to be a literal. But when simulating the WF in the Thin Client a error occurs on the Server. In the Fat Client we get a parser error. We are OK with the parser error - but puzzled why we do not get the same error when using the thin clinet - there we as I mention get an Application Error on the Siebel Server.

I've attached the Workflow to This SR. If you need a Repository + Database its currently abvailable on the FTP.

Regards

Solution

Message 1

For the benefit of other readers, the problem encountered is was related to the simulation of process with a string passed as Input Argument to any kind step, containing the special quote character copied/pasted from MS Words.

Within the process designer, the string looks like “test” (visually) but the simulation gives following behavior.

The simulation from the dedicated web client leads to error message below.
ObjMgrLog    Error    4    2004-10-27 16:35:41    (SBL-DAT-00501) Invalid search specification '“test'”'.
ObjMgrLog    Error    4    2004-10-27 16:35:41    (SBL-BPR-00121) Error loading step definition 'Query for error Blocks': Cannot parse expression '“test'”'.

(Notice the weird characters “ AND ”)

The simulation from the web client leads to a crash of the object manager with a stack as below.
sscfdm +0xa176c = GetToken() +0x5c
sscfdm +0xf0779 = yyparse() +0x149
sscfdm +0xa0cb3 = CSSQueryParser::Parse() +0x63
sscfdm +0x8d38d = CSSQuery::ParseQueryExpr() +0x5d
sscfdm +0x8d702 = CSSQuery::GetCachedQuery() +0x132
sscfdm +0x8d26f = CSSQuery::Parse() +0x8f
sscafwsv +0x11ec4 = CSSWfStep::ParseQuery() +0x144

This problem was reported in change request 12-G2L5OU and has been addressed in version 7.7.
Jérôme Patard, Siebel Technical Support.


Applies to:

Product Release: V7 (Enterprise)
Version: 7.5.3 [16157] Fin Svcs
Database: Microsoft SQL Server 2000 SP3
Application Server OS: Microsoft Windows 2000 Advanced Server SP 3
Database Server OS: Microsoft Windows 2000 Advanced Server SP 3

This document was previously published as Siebel SR 38-1604439502.

Symptoms

SBL-UIF-00401, SBL-DAT-00144, SBL-DAT-00283, SBL-DAT-00306, SBL-DAT-00315, SBL-DAT-00501, SBL-BPR-00121

Hello

We’re currently creating a workflow process that should start based on a number of conditions, namely – when the user navigates to a certain view, and if he is owner of the record used to navigate to this view.
We’ve encountered a number of dificulties, namelly:
1- When the “start” step has a condition based on an application-ViewActivated event we don’t get the ObjectId of the object being used for the drilldown. We understand that this is standard behavior, so what we have done is to modify the start condition to the Applet-DisplayApplet event. The next step in the workflow is to determine the view where the user is (Data Transfer Utilities-GetActiveViewProp). This is extremely inefficient, as the Applet is used in more views other than the one we want the workflow to be triggered. Is there a way of getting values from the Applet (or from the Business Component in which it is based) inside the workflow, when you don’t know “anything” about the call context?
2- The second condition used to trigger the workflow is to compare a value on the Business Component, with the LoginName of the user issuing the request. This was done previously in scripting, and in calculated fields. Reading the bookshelf, you get the impression you could use the same functions in workflow conditions, as the ones used in the calculated fields in Siebel Tools. If so, why doesn’t workflow work when we try to compare to LoginName() (Values -> LoginName()) ?
3- The third problem is on a Siebel Operation Step. We’ve the BC queried and ready to be updated. We want to update a field with a value given from an expression. The problem is that we want the expression to do a bitwise or on the fields. On scripting we do this by this.GetFieldValue("BCP Estado Act") | FLAG. When we try to do this in a Siebel Operation Step using an expression to update a field ([&BCP Estado Act WF] | 1) we get an error. Are there any bitwise operators available for expressions inside workflow?

Best reg...

Solution

Message 1

1/2

For the benefit of other readers,

Customer reported following issues:
1. A workflow process has been developed and should be triggered from the application runtime event “ViewActivated”. From here they would like to access the ObjectId of the object being used for the drilldown. As alternative solution Customer tried to use the Applet runtime event DisplayApplet. Also this alternative did not provide the expected results. So the question was whether there is a way of getting values from the Applet (or from the Business Component in which it is based) inside the workflow, when you don’t know “anything” about the call context?


For this point was advised to using Business Component (BC) runtime event, because you may retrieve the ObjectID of the related records.

2. In the same workflow process customer was trying to compare a Business Component field value with the LoginName of the user issuing the request without success.

Customer was advised to using an expression of the type “[Owned By] = LoginName ()”. This means the Workflow Process Manager should compare the Business Component Field value “Owned By” with the value returned by the function LoginName()

Contd...

Message 2

2/2

3. In a Siebel Operation Step Customer wanted to use a bitweise operator “|” in the search specification.

However such operator would not work for Workflow. One reason for this is that a search specification in the Siebel Operation step is similar to a where clause of a database query. The operator “|” cannot be executed by a Database Management System even though you are able to use it in a custom code. Customer was then suggested to review Siebel Developer’s Reference in the chapter Operators, Expressions, and Conditions where you will find all supported Operators and also detailed information on Search Specification.

Siebel Technical Support


No comments:

Post a Comment