This chapter describes known issues and known restrictions for the usage of Stardust.
A common problem in Eclipse environments is the running out of PermGenSpace. When using a Sun VM, you can increase the size of the permanent generation memory. The default maximum is 64 megabytes, but more may be needed depending on your plug-in configuration and use. The maximum permanent generation size is increased by using the -XX:MaxPermSize=<memory size> argument. Note that this argument may not be available for all VM versions and platforms, please consult your VM documentation for more details.
If an out of memory error occurs while running the modeler please increase the heap size available to Eclipse. To do this edit the eclipse.ini file, residing in your Eclipse folder.
Now set the minimal and maximal heap size, for example:
-vmargs -Xms128m -Xmx512m -XX:MaxPermSize=128m
Hereby the -Xms option specifies the stack space and -Xmx the maximum heap size. MaxPermSize specifies the maximum PermGen size. PermGen means "Permanent Generation" and it is a part of memory where all permanent objects are stored.
In case you got a PermGen space error while running a server, you have to assign more memory to the server itself. In the launch configuration of your server add the following VM arguments:
-Xms128m -Xmx512m -XX:MaxPermSize=128m
These are the minimum requirements, the values are increasable. Please test which value applies to your requirements.
To change the launch configuration accordingly perform the following steps:
Figure: Setting Server Arguments for
Tomcat
In case you run out of memory while you are working with an external server, the memory can be increased by adding some arguments in specific batch files or Java option environment variables. Please refer to the documentation of the server you are using for detailed information.
Jackrabbit WebDav servlets compromise security by allowing read access on the complete repository. They should be removed for productive environments!
In a productive environment, remove the following entries from your web.xml :
...
<servlet>
<display-name>Jackrabbit Repository Servlet (Simple Webdav)</display-name>
<servlet-name>jackrabbitSimpleWebdavServlet</servlet-name>
<servlet-class>org.apache.jackrabbit.j2ee.SimpleWebdavServlet</servlet-class>
<init-param>
<param-name>resource-path-prefix</param-name>
<param-value>/jackrabbit/repository</param-value>
</init-param>
<init-param>
<param-name>missing-auth-mapping</param-name>
<param-value>anonymous:anonymous</param-value>
</init-param>
<init-param>
<param-name>resource-config</param-name>
<param-value>/WEB-INF/jackrabbit/webdav-config.xml</param-value>
</init-param>
<load-on-startup>4</load-on-startup>
</servlet>
<servlet>
<display-name>Jackrabbit Repository Servlet (JCR over Webdav)</display-name>
<servlet-name>jackrabbitJcrWebdavServlet</servlet-name>
<servlet-class>org.apache.jackrabbit.j2ee.JCRWebdavServerServlet</servlet-class>
<init-param>
<param-name>resource-path-prefix</param-name>
<param-value>/jackrabbit/server</param-value>
</init-param>
<init-param>
<param-name>missing-auth-mapping</param-name>
<param-value>anonymous:anonymous</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
...
<servlet-mapping>
<servlet-name>jackrabbitSimpleWebdavServlet</servlet-name>
<url-pattern>/jackrabbit/repository/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jackrabbitJcrWebdavServlet</servlet-name>
<url-pattern>/jackrabbit/server/*</url-pattern>
</servlet-mapping>
...
Removal and subsequent re-adding of Stardust facets to dynamic Web projects within the Stardust Rapid Application Environment can result in duplicate entries in the web.xml file generated for the associated embedded Tomcat server. Removing these duplicate entries manually will restore integrity of the web.xml file.
During generation of project facets a duplicate entry is added in the web.xml file ( WebContent/WEB-INF ). This entry can easily be removed by deleting line 273: "<welcome-file>index.jsp</welcome-file>".
Sometimes it might happen that your database created in the Rapid Application environment is incomplete. In this case try one of the following or a combination:
In some cases, e.g. after a non graceful shutdwon, it might occur that your Jackrabbit repository content is corrupt. If it does not contain important content to be lost, remove the complete repository to make it created newly.
When implementing a process interface in a different model, make sure to import data that is used in the process interface into the new model per reference. Creating data with the same Id is not sufficient and data values passed by the process interface will not be passed into the implementing process. Only data referenced from the model defining the process interface can be accessed correctly. No modeling validation is displayed to warn of this behavior.
Overwriting models, where the ID of a model element having instances (i.e. an activity having activity instances) was changed may lead to corrupted (but recoverable) audit trails. Please avoid modification of element IDs in overwrite scenarios.
In case JMS response activities are not working, make sure that the property QueryService.Guarded = false is set in your carnot.properties file. Please refer to the section Service of the chapter Client Side Properties in the Operation Guide for detailed information on this property.
The shared session approach is a way to let an external JSP application interact with Stardust and the process data. This is no longer a recommended approach as several standard-compliant technology stacks are provided as outlined in the Process-based UI Mashups - External Web Applications chapter.
The usage of a shared session includes leveraging of object names which might not be stable and introduces common class-loading issues. The external JSP application must not request any object which relates (either due to inheritence or member attribute) to classes from the JEE Stack (Servlets, JSF-classes etc.), otherwise CallNotFoundExceptions will occur if the libraries from the external JSP application differ from those bundled with the Stardust Portal. For example the usage of an external JSP application powered by RichFaces is not possible in shared-session mode as those JSF library classes will clash with those provided by the Stardust Portal.
In case invocation of xsd attributes fails, you can change the behavior of the xpath validation. Per default, a strict xpath validation will be performed on XSD schemas. To provide a lenient validation, you can set the property XPath.StrictEvaluation in your carnot.properties file to false . Please refer to the section XSD Schema Validation of the chapter Structured Data Types for detailed information.
The structured type anonymous is currently not supported for structured data types.
In case of structured data type xsd:time, the date (not time) returned by engine is relative to the current date on server and not the date which is given as input to the structured data type. For example, for structured data type xsd:time, the date/time is specified as 01-July-2012:06:20:20. If you verify the same via out data path, 02-Aug-2012:06:20:20 is returned. Here it assumes that current date is 02-Aug-2012. Thus, all times returned by the engine are relative to the start of the server current day (midnight) adjusted for the server time zone and daylight saving time.
In case a language bundle defined in the modeler cannot be deleted, use the following workaround:
Pasting fully-qualified class names into text box for Serializable Data name is not possible in Message Transformation Application. It works when selecting the class via browsing.
In case a Generic DMS error is thrown during the first login to the Process Portal in a WebSphere 7 environment, the reason might be that outer transactions cannot be resumed. Set the server-side property Stardust.DocumentManagement.Resource.Create.inNestedTx in your carnot.properties file to true to create Documents or Folders in a new nested transaction.
Clicking the general Save Document button to save an edited Text or HTML document, does not send updated contents to the server. The Save icon provided in the text editing toolbar has to be used first to save to the server. Afterwards the general Save Document button will save the content correctly.
Using session-scoped managed beans for interactive JSF activities might lead to corrupt process data as it is possible to open several activities of the same kind at the same time. Use Spring-based beans declared with a portalTab scope instead. For details refer to chapter Integrating JSF Applications of the System Integration.
In case a session timeout occurs with principal login and you are using WebLogic as application server, deactivate the keep alive option for WebLogic as described in section Deactivating the KeepAlive option of chapter WebLogic.
Note that in case Stardust is configured to use the LDAP Login Provider and internal security, a user is allowed to login without providing a password. You can either modify the LDAP server to disallow empty passwords or use the following code snippet to avoid the LoginFailedException, if you are using the LDAP Login Provider example. Modify your LDAP Login Provider class with the following code snippet.
public class LDAPLoginProvider implements ExternalLoginProvider
{
public static final Logger trace = LogManager.getLogger(LDAPLoginProvider.class);
public ExternalLoginResult login(String id, String password, Map properties)
{
if(password == null || StringUtils.isEmpty(password))
{
throw new LoginFailedException(
BpmRuntimeError.LOGIN_LDAP_INVALID_USER_PASSWORD.raise(),
LoginFailedException.AUTHORIZATION_FAILURE);
}
return LDAPAdapter.instance().login(id, password, properties);
}
}
Performance issue and timeout may occur when searching for processes that include case process instances. It happens if the All Processes option is selected and the total count is not available in the summary of the search result table. This happens in two cases:
To avoid any issues, the summary displayed at the top of the table will change as described in section Issues with pagination and records displayed for process search results including cases of chapter The Process Search View in the End User Handbooks.
In case a specific process does not appear in your startable process list as expected, please check if a manual trigger is missing in this process to trigger the process.
If you are using Tomcat version above 6.0.18, you may encounter IllegalStateException on Stardust Portal logout. In this case perform the following settings:
Carnot.Portal.SessionInvalidate.Timeout = <numeric value>
-Dorg.apache.catalina.session.StandardSession.ACTIVITY_CHECK=true
Using session-scoped managed beans for interactive JSF activities might lead to corrupt process data as it is possible to open several activities of the same kind at the same time. Use Spring-based beans declared with a view scope instead. For details refer to chapter Integrating JSF Applications of the System Integration.
In case UseOuterJoins is to 'true' in the Parameters property page and processes exist having boolean data not yet initialized, the result view page displays for this data the value 'false' .
The bundled Birt version comes with some errors and warnings that can be disregarded.
In case you have deployed your report in an external environment, problems occur in accessing the reporting URL. The relative links to reports are not generated correctly by Birt when using standalone servers and thus cannot be found.
For example, the generated link
http://localhost:8080/carnot-reporting/run?__report=AnalysisOverview.rptdesign
misses the prefix reports/carnot/ . The correct link here should be:
http://localhost:8080/carnot-reporting/run?__report=reports/carnot/AnalysisOverview.rptdesign
To access the report link you can either:
<context-param> <param-name>WORKING_FOLDER_ACCESS_ONLY</param-name> <param-value>true</param-value> </context-param>to
<context-param> <param-name>WORKING_FOLDER_ACCESS_ONLY</param-name> <param-value>false</param-value> </context-param>
If you use Java Server Faces with a JBoss, a JSF implementation error will occur. In that case include the following context parameter to your web.xml files:
<context-param>
<param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
<param-value>true</param-value>
</context-param>
This will cause JBoss to ignore the built-in JSF implementation. Note that if you use classloader settings other than the default, the context parameter set in this workaround does not work.
In WebLogic version 10 an older version of the JavaScript library Rhino is integrated, which is not compatible with Stardust. An exception like the following occurs during model deployment resulting from this incompatibility:
java.lang.NoSuchMethodError: org.mozilla.javascript.Context.enter(Lorg/mozilla/javascript/Context;Lorg/mozilla/javascript/ContextFactory;)Lorg/mozilla/javascript/Context;
To avoid this exception perform the following steps:
set CLASSPATH=%CLASSPATH%;%MEDREC_WEBLOGIC_CLASSPATH%to
set CLASSPATH=C:\appserver\bea\user_projects\domains\mydomain\lib\js.jar;%CLASSPATH%;%MEDREC_WEBLOGIC_CLASSPATH%.
Now WebLogic is using the Rhino version required by Stardust.
If you like to connect to the engine in an EJB tunneling environment with WebLogic, use the TunnelingSessionFactory provided by Stardust to avoid connection issues. To use this session factory, set the following property in your client-side carnot.properties file:
Secure.Session.Factory = org.eclipse.stardust.engine.api.ejb2.TunnelingSessionFactory
During an EJB deployment, it will be searched for validation classes. If they will be detected, they will be used, otherwise a deployment warning will be generated, which can be ignored. This is different for interactive applications. No warning will be generated for them as it is assumed that they are unknown to the engine in any case. However a ClassNotFoundException will be logged, but these exceptions will not interrupt the deployment.
When deploying the model on Windows 7 via spring remoting, sometimes the localhost cannot be resolved correctly. In this case, replace the localhost from the file carnot-spring-client.properties by real host name. Also, turn-off automatic publishing of resources (ippConfigPublisher) to avoid the change overridden with each content published to the server. To do this, go to Server View > Publishing > Select Publishing Actions and clear IPPConfigPublisher checkbox.
For the time being, model names containing Japanese characters, are not supported. A deployment of such models results in an Exception. In that case rename the model file using UTF-8 encoding.
The BatchUpdateException occurs in case a system user is used to retrieve a Stardust service and this system user has not been excluded for session tracking. To avoid session tracking for system users, please provide the property Carnot.AuditTrail.Session.NoSessionTracking = motu within the carnot.properties file.
This exception occurs if WebLogic's JTA transaction timeout settings are greater than the timeouts for the XA data source. This leads to the database transaction timing out before the WebLogic transaction. To resolve this, check the application server's default transaction timeout settings and server-specific deployment descriptor timeout settings. Also the standard deployment descriptor shipped with Stardust contains the settings:
<trans-timeout-seconds>600</trans-timeout-seconds>
To avoid problems during the invocation of parallel activities in a process definition, especially after an AND-split, set the property AuditTrail.UseLockTables in your carnot.properties file to true . Please refer to the entry AuditTrail.UseLockTables in the chapter Client Side Properties, residing in the operation guide, for information on this property.
To avoid deadlock situations, set the property AuditTrail.InterceptJdbcCalls in your carnot.properties file to true . Please refer to the entry AuditTrail.InterceptJdbcCalls in the chapter Client Side Properties, residing in the operation guide, for information on this property.
MySQL does not consider (some) errors as errors, if they happen on the second or subsequent row of a multi-row insert. Only if it happens on the first row, it is an error. To change this behavior so that every error is really an error, set:
SET SQL_MODE='STRICT_ALL_TABLES'
Mapping types, which are different, but which are both represented as Number in JavaScript, can cause a hidden type mismatch. This can be avoided by using the expression toFixed(0) .
For example use the following expression, if you map a structured data element with type int to an element with the type double :
DemoStructType.DoubleTest = DemoStructType.IntegerTest.toFixed(0);
Please refer to the section Supported XSD Types for information on how specific XSD types are mapped to JavaScript types.
You may notice some performance issues while changing the properties of Message Transformation Application . This is due to the automatic validation process of JSF, JSP and JavaScript.
This issue is not related to Stardust, and it will persist even if you turn off Stardust validation. (Eclipse-> Window-> Preferences-> Stardust-> Enable auto validation). You may take following steps to resolve it:

Figure:
Setting properties of Message Transformation Application
Note that you may not get any warning or error message related to the syntax and the semantics of the model in the Problems view after disabling the Automatic validation. However, you can do a one time validation after completing the model by using following method:
Note that this solution applies to other cases also, where performance is affected by the automatic validation. (For example, in Message Parsing and Message serialization ).
The API for the following features is not yet available via WebServices API:
When trying to lock an element, it might happen that you get an exception indicating that the item is out of date, as in the following screenshot:
The lock file might be out of date, if another user just released a lock on this element and the refresh job is not running during your locking process. As a workaround, you can either:
However, after the lock folder is refreshed, locking is working without problems again.
You can avoid the exception using the IppJcrSessionFactory , which creates jcr-sessions using the Stardust user id in the WEB-INF/config/ipp/spring/jackrabbit-jcr-context.xml .
...
<bean lazy-init="true"
name="jcrSessionFactory" class="org.eclipse.stardust.engine.api.spring.IppJcrSessionFactory">
<property name="repository" ref="xaJcrConnectionFactory" />
</bean>
...
The default configuration uses default credentials which allows jcr sessions to be shared between users.
...
<bean lazy-init="true"
name="jcrSessionFactory" class="org.eclipse.stardust.vfs.jcr.jcr.spring.JcrSessionFactory">
<property name="repository" ref="xaJcrConnectionFactory" />
<property name="credentials">
<bean class="javax.jcr.SimpleCredentials">
<constructor-arg index="0" value="jcr-user" />
<constructor-arg index="1">
<bean factory-bean="jcrPassword" factory-method="toCharArray" />
</constructor-arg>
</bean>
</property>
</bean>
...
If you encounter a problem as described in ticket JCR-2712 please contact Stardust Support.
If you encounter a problem as described in ticket JCR-2554 please contact Stardust Support.
In case a project is selected for a Visual Rules application, this needs to be managed in the following way:
If this is done in another way than explicitly by the project context menu, a ProjectNotManagedException occurs.
For the time being, the project selected in a Visual Rules application should be the same project where the Stardust model resides, otherwise an unhandled event loop exception is thrown.
Note that the following archive Sysconsole commands with model deletion should only be performed in maintenance windows without workflow, otherwise this might lead to inconsistency in the audit trail:
For details on the Sysconsole archive command, refer to section Audit Trail Archive Administration of chapter The Sysconsole Command.
Switching the primary implementation for a running process has the following restrictions:
When deploying a model on JBoss using Stardust Web Services, XPaths of structured data do not get generated in the STRUCTURED_DATA table. Perform the following steps so that the XPath entries are created correctly:
Currently, asynchronous subprocesses are not supported for transient processing. Whenever the workflow of a transient or deferred process instance reaches a subprocess activity that invokes an asynchronous sub-process, the audit trail persistence is set to Immediate for both the parent as well as the sub-process.
As long as a process instance is executed transiently, pull events, i.e. events triggered by the event daemon, are not processed. Instead a warning is logged whenever a transient process instance having a pull trigger event bound is written to the in-memory storage. This can be the case for example if its transaction is committed. The according log message looks as follows:
Event binding 'Event binding [oid = 1, type = 2, model oid = 2, object oid = 1, handler oid = 2]' applies to a transient process instance and will therefore not be processed by the event daemon.
With the default configuration as shipped, the usage of JPA is supported only on JBoss.
Making the EntityManager and EntityManagerFactories available in the JNDI scope of the Stardust Process Engine for other application servers is not impossible but will impose some restrictions when packaging and configuring your enterprise application. Please contact the Stardust Support team if you have the need to integrate JPA on these application server platforms.
In JBoss, the EntityManager and EntityManagerFactories can be bound in the global JNDI by setting the following properties in the persistence.xml file:
<property name="jboss.entity.manager.jndi.name" value="java:/DemoProject_JPA" /> <property name="jboss.entity.manager.factory.jndi.name" value="java:/DemoProject_JPA_factory" />
The primitive data type Calendar is deprecated. Problems might occur when using this type in queries. Please use the primitive data type Timestamp instead.
Currently the following XSD types will be converted as in the following table for the usage in Message Transformation applications or transition conditions:
| XSD Type | Java type | JavaScript type |
|---|---|---|
| anySimpleType | java.lang.String | String |
| anyURI | java.lang.String | String |
| base64Binary | java.lang.String | String |
| boolean | java.lang.Long | Number |
| byte | java.lang.Byte | Number |
| date | java.lang.Long | Number |
| dateTime | java.lang.Long | Number |
| decimal | java.lang.String | String |
| double | java.lang.Double | Number |
| duration | org.eclipse.stardust.common.Period | String |
| ENTITIES | java.lang.String | String |
| ENTITY | java.lang.String | String |
| float | java.lang.Float | Number |
| gDay | java.lang.String | String |
| gMonth | java.lang.String | String |
| gMonthDay | java.lang.String | String |
| gYear | java.lang.String | String |
| gYearMonth | java.lang.String | String |
| hexBinary | java.lang.String | String |
| ID | java.lang.String | String |
| IDREF | java.lang.String | String |
| IDREFS | java.lang.String | String |
| int | java.lang.Integer | Number |
| integer | java.lang.Integer | Number |
| language | java.lang.String | String |
| long | java.lang.Long | Number |
| Name | java.lang.String | String |
| NCName | java.lang.String | String |
| negativeInteger | java.lang.Integer | Number |
| NMTOKEN | java.lang.String | String |
| NMTOKENS | java.lang.String | String |
| nonNegativeInteger | java.lang.Integer | Number |
| nonPositiveInteger | java.lang.Integer | Number |
| normalizedString | java.lang.String | String |
| NOTATION | java.lang.String | String |
| positiveInteger | java.lang.Integer | Number |
| QName | java.lang.String | String |
| short | java.lang.Short | Number |
| string | java.lang.String | String |
| time | java.lang.Long | Number |
| token | java.lang.String | String |
| unsignedByte | java.lang.Byte | Number |
| unsignedInt | java.lang.Integer | Number |
| unsignedLong | java.lang.Long | Number |
| unsignedShort | java.lang.Short | Number |
Please note that decimal xsd types are mapped as String values and thus are compared like Strings in transition conditions. To avoid this, use a Number typecast, e.g.:
Number(StructData1.decimal) > Number(StructData.decimal2)
Some identifiers, which can be used in structured data types, are not supported in JavaScript. The following identifiers are not supported:
whereby underscores, digits or dots not used as first character are supported (e.g. first_data, data1, data.dot).
In case you use identifiers containing hyphens or dots in JavaScript, like in message transformations or transition conditions, you can set the identifier in square brackets and quotation marks as a workaround. Refer to section Restrictions on identifiers of chapter Message Transformation Application Type and section Restrictions on identifiers of chapter Working with Transitions respectively for details.
In general models produced or modified by the Stardust modeler can be edited with other tools that supports XPDL 1.0 standard. However, the Stardust modeler is maintaining specific information for most of the model elements in an ExtendedAttribute with the name "CarnotExt" .
In certain cases, these elements may refer to standard identifiers. For example the diagram information is stored exclusively in the extended attribute, however it has references to workflow objects defined in the standard XPDL part.
A concrete example is the carnot:Symbol (Kind="ACTIVITY") . This symbol has a live reference to the actual activity, and namely the field ModelElement contains the Id of the activity that it refers to. Similarly affected are carnot:Connection (Kind="TRANSITION") that refers a transition as well as the carnot:Symbols with the kind "DATA", "ROLE", "APPLICATION" or "PROCESS".
When modifying the Id of a workflow element or deleting the element that is referenced by such a diagram symbol, please take care to synchronize the respective reference (attribute "ModelElement") in the carnot:Symbol or carnot:Connection . If such synchronization is not performed then dangling references may result or references can point to an element of a different type. In the latter case, the Stardust modeler will no longer be able to load the model due to ClassCastExceptions.
As MySQL/MSSQL always performs a case insensitive String comparison, the usage of the Boolean parameter caseSensitive in a DataFilter query will have no effect when using MySQL/MSSQL.
For the time being, to use a Structured Data Type as Document Type, you need to create a Structured Data Type as well as a data object for the Structured Data Type. For details refer to chapter Document Types in the Concepts section.
With the implementation of Document Type concept, the document properties map is described by a schema set as DocumentType. No automatic validation is provided of the map against the schema defined by DocumentType. Therefore, when validating the schema manually against the map of meta-data; collision may occur due to the properties set by the Stardust Portal. It is recommended to not to use them in order to avoid collision.
Following is the list of document properties that Stardust Portal attaches to a document.
Fulltext search for document meta-data properties is only possible if they are modeled as xsd:string .
The following restrictions apply to the relocation functionality:
Active activities are aborted and only one activity can be defined to be the starting activity for the new process instance.
The history of the original process instance is available and identifiable only indirectly via the link feature in the Stardust portal.