Reactor 5 Frequently Asked Questions

whooshribbitSoftware and s/w Development

Dec 2, 2013 (3 years and 4 months ago)


oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence

Reactor 5

Frequently Asked Questions


Which platforms do you support? Engine, client, database, …

The Reactor 5 Server runs on the following Application Servers:


JBoss 2.2.2 with Tomcat 3.2.2


BEA WebLogic 6.1


WebSphere 4.0.1


Oracle 9iAS Applic
ation Server


Orion Applicati
on Server

The following databases have been tested successfully:





SQL Server







Reactor 5 Studio runs on any client platform that supports JDK 1.3.

All other Reactor 5 clients are

completely browser
based, and will function with any HTML browser.


In what language is the engine implemented?

100% pure


Is t
he engine accessible through API

Reactor Server provides several interfaces:


EJB (using a stateless session bean)




SOAP/HTTP (uses XML over HTTP)




Java client API (which can use either EJB Session Bean or XML/HTTP)

The EJB interface offers the best performance. XML over HTTP can be used by languages other than Java,
and is the easiest to tun
nel through firewalls. The Java client API provides the most convenience to


Can processes be versioned? Do you have any kind of version control for processes? If so, how?

There is no explicit support for versioning processes in Reactor.



happens to existing instances of a workflow when a template is updated? Are they finished
using the old one, the new one or is the behaviour undefined?

oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence

Each time a process in instantiated, Reactor creates a complete copy of the process template for use b
y the
new instance. If the template is later modified, existing instances are unaffected. If the instance is modified,
the template and other existing instances are unaffected.


Is there a monitoring tool? If so, what features does it have?

Reactor 5 do
es not currently include a monitoring client.


Are statistics saved? Can statistics be viewed? If so, how?

Reactor 5 stores a complete trace of the execution of every process instance. Reactor does not pre
generate statistical summaries of this data, tho
ugh statistics can be generated using a suitable reporting or
OLAP tool. Reactor 5 does not include a statistics viewing client.


Can a workflow process be started by an external event? Such as a trigger in a database. Please
explain the products capabili
ties in this issue.

Yes. Reactor policies can bet set to listen for a variety of events and to perform arbitrary actions

creating a new process instance

when those events occur. One could also program a database trigger to
send a command t
o create a new instance via any of Reactor 5’s supported APIs.


Can an activity in a workflow process wait for an external event? Such as a trigger in a database.
Please explain the products capabilities in this issue.

Yes, using the same mechanisms desc
ribed in Q8 above.


Can external programs be executed/started from within a process? If so can they be executed/started
on both server and client? Please explain the products capabilities in this issue.

Yes, Reactor 5 policies can be set to execute extern
al programs when a process is started, stopped,
changes status, or when a timer expires. Starting external programs on a remote system is possible via
EJB, JMS, SOAP, or a custom call to some sort of agent on the remote system (e.g. ‘rsh’)


Do you support

the use of variables inside processes? If so, are they local or global variables, or

Reactor 5 supports “operands” function as variables within a workflow. They can be configured individually
to have local or global scope.


Are there workflow vari
ables? If so can these variables be set from both inside and outside the
engine? Please explain the products capabilities in this issue.

Reactor 5 “operands” can be set from inside the engine, or from outside the engine via API calls. Reactor 5
can also be configured to “fetch” their values from sources outside the engine at evaluation time.


Does the product support timed activities? Other than just notifying someone. If so, please explain
the products capabilities in this issue.

oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence

Yes, Reactor
5 timers may be set for any activity, along with a policy to be executed when the timer expires.
Policies may perform arbitrary action, such as escalation, reassignment, or reminder.


Does the product have an integrated calendar/business calendar in which

one could set users as
absent, etc.? If so, please explain the products capabilities in this issue.



Does the product support integration of an external calendar?

Reactor 5 policies could be used to check an external calendar service (such as MS Exc
hange) before
resolving a Participant
Title expression


Does the product support some kind of integration of users, groups and organisations? Like through
LDAP. If so, please explain the products capabilities in this issue.

Reactor 5 accesses user, tit
le, and group definitions through a JNDI interface, which can be configured to
resolve to any external source, including an LDAP server.


Do you support attachments to activities?



What functions do decisions support? (AND, OR, less than, greater th
an, equal, math, etc.)

Reactor’s process model does not include an explicit “decision” node. Instead, process activations are
determined by pre
conditions associated with each activity. Pre
conditions are defined in terms of Boolean
(AND/OR/NOT) combina
tions of system and external events and “outcomes” of other activities. Scalar
comparisons and other expressions must be carried out within the context of an activity and used to
determine the outcome of that activity.


Can roles as well as persons be ass
igned to a task? If so, please explain the products capabilities in
this issue.

Yes. Reactor 5 activity “participants” can be defined as literals or as “titles” that can be looked up from an
external source, such as LDAP.


Can tasks be routed when person
s/roles are unavailable? If so, please explain the products
capabilities in this issue.

Reactor does not have an intrinsic ability to determine when users/roles are available. However, a policy
associated with process activation could be used to consult
an external calendar, FreeBusy, or virtual In/Out
board to determine availability of individual users and select among eligible participants.


If tasks are delayed, can measurements automatically be taken (e.g. e
mail notification)? If so, please
explain t
he products capabilities in this issue.

oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence

Yes. Reactor supports timers which can trigger arbitrary actions upon timeout, such as notification.


How and when are new items in the worklist updated?

The Reactor 5 Portal Framework is a web
based worklist clie
nt. The work list is regenerated
from the
Reactor 5 database
each time the user opens or refreshes their worklist URL.

The Reactor 5 database is
updated with every transaction.

An HTTP Meta tag could be used to achieve periodic client
side refreshing.


Does the product have any kind of flow syntax checking? In order to avoid everlasting loops. If so,
please explain the products capabilities in this issue.



Does your worklist support filtering of tasks?

Not as built. Customization of the Reactor 5

Portal Framework can be done by modifying Java Server Pages


Which Java virtual machines are supported/required? If any.

A JVM with version 1.3 is required. Reactor has not been tested with version 1.4.


Does the workflow system have an open archi
tecture where any type of event can be polled by
creating plug
ins? If so, please explain the products capabilities in this issue.

Yes. The audit trail is implemented by monitoring workflow events. Other plug
ins could be developed using
the same approac


Is the API Java compatible?



Can XML be used for interfacing? If so, please explain the products capabilities in this issue.

Yes. Reactor Server provides an XML/HTTP interface, as well as SOAP/HTTP and WSDL interface. The
XML is described by bot
h a DTD and an XML Schema. The Reactor Server has an internal service which
can perform XSL translations on XML requests and responses.


Is the API well structured?



Is there security on modelling, monitoring, etc.? If so, to what level?

Requests to

the Reactor Server must include a valid authentication token, except for the login request which
is used to get a token. Each primary type in the process model has an associated access control list (ACL).

oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence

These ACLs are currently advisory. The original d
esign provides for an internal "Security Service" to enforce
authorization using these ACLs.


Is there security on create, update and delete respectively?

See question 30.


Does the engine support DBCS?

Reactor depends on the JVM, application server, and

database engine to provide transparent handling of
character sets. Reactor does not support or depend on any particular character set.


Does the engine support Unicode?

See question 3


Does the User interface support localization?

Yes. The studio use
s resource bundles, although there are some places where it should use them where it
doesn't. The portal can use resource bundles, since it uses the Apache Struts framework, but replacing each
entire JSP pages might also be an option.


Does the workflow en
gine support localization of internal strings (concepts)?

The workflow engine currently has strings embedded in the code. In general, the strings handled by the
workflow engine are only visible to the user if they are success or failure messages.


Does th
e workflow engine support localization of workflow data?



Can sub processes be created? If so, please explain the products capabilities in this issue.

Yes. Reactor processes may be nested to any depth.


What actions is there that can be associated w
ith tasks?

Any action that can be expressed in Java code can be associated with a task. In addition, any action that can
be expressed in a language supported by the BSF (Bean Scripting Framework) can be associated with a


Can actions be performed on

certain conditions? If so, please explain the products capabilities in
this issue.

Yes. Execution of "policy" scripts is triggered by one of the following events: process started, process
finished, status added, status removed, timer expired. Complex con
ditions can be checked by policy scripts
to see whether further actions should be performed.

oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence


How are prerequisites handled?

Not sure of the context that "prerequisites" is being used. If this refers to preconditions for starting processes,
then these are

checked for a process whenever any change occurs that could cause a precondition to
become true for that process.


Are there AND and OR nodes in the process diagram?



Is the modeller easy to use?



Can an external modeller be used easily? If so
, please explain the products capabilities in this issue.

The workflow engine provides an XML/HTTP interface, in addition to Java interfaces. External modellers
which can use this interface can be used to define processes. The workflow engine also has an
translation layer which can be configured to accept XML definitions other than Reactor XML.


Is WfMC’s standard followed?

The Reactor process model is influenced by WfMC, but it is not followed as a standard.


Do you have plans to support BTP? If not
, I assume it is possible to layer this in the XML protocol
stack in the form of a service and interact with the server?

One item on the "wish list" is to provide explicit facilities for the process designer to specify compensation for
activities. In some

cases, where transitions are clearly reversible, the design tool could even provide default
compensations. In any case, this compensation mechanism would fit in nicely with BTP.


Do you support two
phase transactions across components for an atomic set of

actions (not a long
running unit of work?)

The current level of transaction support is that each individual request has an internal two
phase transaction.
This transaction does not currently participate in the scope of a larger client transaction.


Any b
indings already done from BPSS/CPA, PN PIP's DTD's or Schemas to your internal XML
Schema flow language should we want to use this for collaboration?

No. While the theory is that the XSL translation layer would handle that, the only XML mapping that I've
practice is when we mapped requests and responses from older versions of Reactor.


How well does your proprietary XML schema align with BPML?

Fairly close as is, however Reactor 5 has an XSL translation layer that can be used to bring it into exact

oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence


You mention plans to possibly support BPML, any more thoughts on that in terms of a time frame?

No time frame. Could be done under contract.


Are you able to operate an a load balanced environment and still maintain proper state as events end
up on different servers in a cluster?



Do you interact with JMS, Connectors (that support XML), or other back
end systems via the process

Yes, though there is no specific GUI support (in Studio) for these.


Do you support nested activities?



Are you able to invoke user EJB's or other Java code?



You mention scripting language(s), but is the process itself declarative via the process definitions or
are scripts/code generated from the process definition?

The former

XML is generated

from the graphical process maps. These maps specify which activities are
included in a process, what outcomes there can be for each activity, and what pre
conditions must be
satisfied in order to activate each activity.

The scripts you're referencing ar
e primarily associated with individual activities. We refer to them as
"Policies", and they can be written in any language supported by BSF. An activity can have multiple Policies,
each triggered by a different event, e.g. Activity Start, Activity Update

Status, Timer Expired, etc.


When you say that BEA and IBM have products and that your product provides a low
cost, light
weight solution, what are the differences?

Well, it costs less, particularly now that we are offering royalty
free source code. BEA

Integration Business
Process Manager costs $57K per CPU. I don't know what IBM MQ Series Workflow costs but I've heard it’s
a lot.

weight" here refers to Reactor's footprint. Compared to IBM MQ Series Workflow and BEA Integration
Business Proces
s Manager, Reactor is lean and mean.

But the biggest difference is that Reactor works equally well on both BEA and IBM application servers, in
addition to Oracle and JBOSS.


How is the engine delivered, e.g., source, jars, etc.

At present, source, includ
ing all documentation, CVS repository, test scripts, ... our complete development

oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence


Why does Reactor5 require an app server? And how tight is the dependency or integration?

Reactor 5 Server uses a collection of EJB stateless session beans to i
mplement internal services. Removing
Reactor 5 Server from the J2EE application server would require replacing the code that does service lookup
and request/response handling. The architecture supports this, but Reactor 5 has been assuming a J2EE
for some time now, so the implementation may have that assumption in unexpected places by now.
Reactor 5 Server does not use container managed persistence, but does use the application server's data
sources for configuring and pooling connections.


5 Server uses servlets to provide XML/HTTP and SOAP interfaces to external clients. It provides an
EJB stateless session bean as another interface for external clients. The portal framework uses JSP and
servlets to build web
based workflow applications. T
imers are managed by a servlet which sends scheduled
event notifications.


What are the 3rd
party/open source software used in Reactor5?

Note that JBoss and Tomcat are not required, they are just one supported application server / servlet engine
on. The same for InstantDB. It's just a flat
file database that makes it more convenient for people to
download Reactor 5 and evaluate it without administering a database.

We use Apache SOAP for the SOAP interface, and Apache Struts with the portal framew
ork. We've also
used Apache libraries for XML parsing and XSL translation, though those could probably be replaced with
other products that implement the open standards.

It's correct that Flux is a commercial product. Very little of its functionality is r
equired, so it could be replaced.

Reactor 5 Studio uses the jKit/GO graphics library, which is a commercial product available for USD $1000,
including source.

Reactor 5 Portal supports file uploads with the com.oreilly.servlet library, with licensing ter
ms that are easy to
fulfill. It just requires buying a copy of the book that the library is included with, for each developer working on
that code.


In the Evaluator's guide, it stated that future version will expose individual workflow as web service
g WSFL (IBM's WebServices Workflow Language). How far did you guys go with this?

We didn't get past the conceptual stage.


What's your recommendation for Reactor5 customers who use Microsoft IIS and ASP pages. How to
get access to Reactor5 server? Via XML
/HTTP client interface?

I've been told that it's possible to use Java from ASP pages, though I have no direct experience with that.
XML/HTTP would be another option, but the Java API is definitely more convenient.


If there is any benchmarking / stress te
st developed for Reactor5? What are the performance
numbers if such tests exist?

No. Our only performance testing has been relative, to identify bottlenecks.


Is there an

API that I
use to monitor performance programmatically?

oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence

There is a Java API which
can use either EJB stateless session bean method calls or XML/HTTP. Using the
EJB calls from within the same application server generally does not incur any network traffic. These are
documented in the programmer's guide, and there is example code in the d


Is there an

API that I
use to l
istening to events from the engine for knowing what activities one has to

The Query request can do that. Getting a user's task list is generally done by including an ACL in the query


Is ther
e an

API that I
use to m
arking an activity as finished to move the execution of a workflow

An activity can be explicitly finished with the Stop request, or implicitly finished with an AddStatus request for
an activity that has a change condition t
o finish when a certain status is added.


Is there an

API that I
use to get notification that

a workflow execution has been completed?

Reactor 5 doesn't currently send notification messages, unless they are explicitly included in a policy. In this
you would add a policy triggered by the completion of a process. That policy would then need to
include code to send whatever notification is desired.


What is the database access protocol used in the EJBs and Studio (or maybe the Studio talks to the


Studio talks to Reactor 5 Server using XML over HTTP. The server uses JDBC and J2EE data sources to
talk to a database.


Where is the security information (ACL/UserID/Password) stored?

ACL information is stored in the database where Reactor 5
Server keeps all the other process data. The
UserID/Password are validated through a JAAS authentication module, so they may be stored in different
places for each module.


Does Reactor
managed transactions

or ex
plicit transaction demarcation

for the EJBs?

Currently by explicit demarcation. We had plans to use container
managed transactions, especially to be
able to participate in client transactions. However, we never made the changes necessary to implement that.


How does the Reactor engine

invocation of external activities that might be involved in
distributed enterprise to enterprise business processes, such as Web Services

Reactor 5 Server provides interfaces for EJB, XML/HTTP, and SOAP messages. A JMS interface would be
forward to add. There is a Java API that provides many convenience methods. This makes it easy to
talk to Reactor 5 Server from an external system. To talk to external systems from Reactor, executable
policies triggered by process events in the Reactor eng
ine can be written in Java and other languages. So, it
requires some glue code to be written, but it can potentially be handled with fairly simple glue code.


How hard would it be

to add

support for J2EE transactions and support for long
run business
ss transactional control to Reactor?

oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence

Adding J2EE transactions would require modifying some of the Reactor 5 Server code. The changes would
not be extensive, and would probably be localized within one or two packages. I may misunderstand what
you mean in p
articular by long
run business process transactional control, but I suspect that the problem
may be better addressed by adding explicit support for compensation spheres in the engine. This would
require more extensive changes to the engine, and the scope w
ould vary depending on what exactly you


Reactor does not support standards like WFSL, BPML.
How hard would it be

to fully support
standards like WFSL and BPML?

There's an internal services inside the engine that can perform XSL translation on incom
ing XML requests,
with corresponding translations on outgoing responses. It would be a matter of defining the translations
between the standard of choice and the Reactor XML representation of processes. The Reactor 5 process
model is deliberately general.
Keep in mind that the Studio only uses a subset of the capabilities of the
process model, so don't look there for limitations on the process model itself.


What third party s/w do you use/require? List w/ license restrictions please!

Studio uses JKit/GO,
a graphics toolkit from Instantiations. The development license was $999, with no
restrictions on binary redistribution.

Portal uses the com.oreilly.servlet package, which has a license requiring each developer to have a copy of
the O'Reilly servlet book

lso with no distribution restrictions.

We originally used Flux for scheduling, but I'm in the process of replacing that with custom code that will not
require a license.

All the other required third party software is open source with no restrictions.

Ant to build from source

Apache SOAP for web services

Apache Struts for JSP tags

Apache Xalan for XSL translation

Apache Xerces for XML parsing

BSF for scripting

InstantDB for bundled evaluation database

JBoss 2.2.2 and Tomcat 3.2.2 for bundled application


JDOM for XML representation

JUnit for unit testing


What is the Size of the reactor code? (breakdown
into Studio/Server/Portal)? * An
y non
script code? (native/C?)

Code is all pure Java, with simple launch scripts in sh and .BAT files. Wh
en I scan my current version (with
some development in progress), this is what I see:

Server: [433 files]

7671 lines with just a bracket (12.99%)

7135 lines with just whitespace (12.08%)

9181 lines with just comment text (15.54%)

077 lines with 'significant' code (59.39%)

oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence

59064 lines total

Studio: [72 files]

2296 lines with just a bracket (13.82%)

2215 lines with just whitespace (13.33%)

1389 lines with just comment text (8.36%)

10719 lines with 'sig
nificant' code (64.50%)

16619 lines total

Portal Framework: [31 files]

546 lines with just a bracket (14.99%)

537 lines with just whitespace (14.74%)

775 lines with just comment text (21.27%)

1785 lines with 'significant'
code (49.00%)

3643 lines total

Active Checklist: [11 files]

78 lines with just a bracket (8.70%)

127 lines with just whitespace (14.16%)

310 lines with just comment text (34.56%)

382 lines with 'significant' code (42.

897 lines total

There are also 12 JSP files with a total of 540 lines.


Examples of business processes "tested" with reactor? What "domains" did these processes come

R4 and earlier was developed for NASA, initially at JPL and then to supp
ort other NASA centers. R5 was
heavily influenced by Boeing and companies with a focus on supply chain.


What examples of integration with Web Services?

Using Apache SOAP, with the WSDL basically just wrapping the XML messages as strings.


What Servelet/J
SP versions are supported? Do you use Tomcat? (For jareva: Tomcat 3.2 is used;
and supports JSP 1.1 + Servelet 2.2)

We're using Tomcat 3.2.2, and whatever JSP/Servlet version that uses.

Reactor Specific Questions:


Design principles? Domain Specificity?

Specifically designed to be flexible and not domain

Architectural structure is internal services which are Stateless Session Beans, with "Front Desks" that
provide client interface. R5 service architecture heavily influenced by Jini.

oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence

se layers use J2EE where available, modular interfaces otherwise. (ex: portal has document
repository module)

Process model started with R4 and made more flexible, with lots of input from Boeing.

Adapted XP for development methodology, which influenced d


Process Maps are represented in XML. What about activity diagrams? How represented?

Reactor process maps are a hybrid including characteristics of activity diagrams and state diagrams. Server
has a latent XSL service which can be used to transform

to/from other XML representations, as long as they
contain enough information.

We h
ave looked at WfMC and BPMI models, no surprises expected there. XMI
influenced some later R5 development, but not explicitly.


For “Process” objects, w
hat determines choi
ce of process state? Can it be extended? How are
process preconditions specified? (used only to AUTO_START processes) Is there an "temporal"
ordered queue of processes? Rollback? Retry? Guaranteed Delivery? Error Handling?
Starvation/Deadlock conditions?

There's a key distinction between state and status in the R5 process model. The state of a process can be
unstarted, started, or finished. A process can have multiple associated statuses, and statuses can be defined
and reused. Preconditions are specified

in the process model as conditions which must go from false to

The two primitive conditions are "process P state equals S" and "process P has status S". These can be built
into expressions using arbitrary combinations and layers of NOT, AND, and O
R. Process instances can be
created with state of "started". (Or cloned from a definition, configured, and then started.) No rollback/retry
built in. No support for starvation/deadlock handling at either design time or execution time. We had plans to
add s
upport for compensation spheres, but nothing was implemented. Not sure what is meant by temporal
ordered queue of processes, unless that's related to rollback. Process timers provide some scheduling


For “
” objects, w
here are ACLs stored
? Database controlled authentication for login/pwd?
Any integration with LDAP/Directory based authentication? How is this done?

ACLs are stored in a database using JDBC. Note that they are currently advisory ACLs, so the client
software must be trustable.

Authentication uses JAAS modules. We provide an LDAP authentication module
and a trivial CSV file
based module.


For “Policy” objects, w
hat level of inte
gration is

provided for BSF (bean scripting framework) scripts:
have you tested vbscript scripting?

e've done most of our own BSF scripts in Java. I'm pretty sure we've done simple "hello world" scripts in
l and Python, but I don't know a
bout vbscript.


Is there an event log?

How represented?

There's an audit log in a SQL database, which can be confi
gured to store different types of events.


What services are supported? Do you support discovery/registration "services?

oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence

If you mean web services, we don't explicitly support that. It's possible that what you want would be handled
by reusable policies tha
t you would have to develop.


What is the legal syntax for LabelPaths? Is there any documentation on how and when to use them?

Appendix A of the Reactor 5.0.4 Programmer's Guide describes the syntax.


How d
pass operand values into classes de
ployed i
n the server at runtime?

Assuming the "classes deployed in the server at runtime" refers to policies, and the policies need to

operand values, then

they need to use a Navigator object to get the operand value using the label path
(which can be a re
lative path) to the operand.


Does the Operand class
accept only

String objects as values?

. Operands are intended to work in conjunction with other data storage systems (databases, document
repositories, etc.) and not necessarily replace them. That sa
id, objects can be represented as strings using
either XML representations or Java serialization.


The example for the BusinessRule code was inaccurate. The code had a call to the
addStatusToProcess method of the Navigator class return a boolean value, but

the method returns
null. Is this a known problem or did we do something wrong here?

The addStatusToProcess method used to return boolean, but then it was changed to throw an exception.
Apparently the BusinessRule code was not tested after that change.


he "Assigning Roles Dynamically" section of the tutorial did not work. Is there something that we

There are no known problems with assigning roles dynamically as described by the tutorial. I'd recommend
taking a close look at each step again, espe
cially the "visible in subtree" checkbox for the "To" operand.


How do I generate new license keys for Reactor 5?

To modify the license key that gets generated by the build script, edit this property file:


The class that genera
tes the actual license key is here, though it has help from other classes in the same


If you're interested in the code that checks the license, take a look here:


These are the specific functions in AdminServiceBean that check the license:



oak grove systems, incorporated
26500 w. agoura rd., calabasas, ca 91302

(818) 880

Declare Your Workflow Independence


Note that exceedsUserLimit() is stubbed out, always returning false. Th
e question of how to count users of a
workflow engine is sticky to answer for the general case, so we deferred enforcing it in the software.