3. Frequently Asked Questions

3.1: General Questions

  • What is JOpera?

    JOpera is an autonomic process support system targeted for generic service composition.

  • What do I need to run JOpera?

    JOpera runs on Eclipse 3.3/3.4 with Java JDK 1.5) and requires the GEF plugin.

  • What is new in JOpera for Eclipse?

    A lot! See 1.2: What's new in JOpera for Eclipse? for more information on all the new features that have been added during the port.

  • Where can I download the source code of JOpera?

    Currently the source code of JOpera is not yet available to the general public. If you would be interested in contributing to the project, or you have any other specific reasons for needing the source code of JOpera, please let us know.

3.2: Questions about Developing Processes

  • What is a process template?

    A process template describes how the tasks, its components, are connected together. It contains a control flow graph, which specifies the partial order to follow when starting the tasks as well as the data flow graph, which defines how tasks exchange data. A process templates is stored in an OML file.

  • What is an instance?

    A process instance represents a running process template and contains the state of one execution, including all data that is produced and consumed by the tasks. Multiple instances of the same template can be active at the same time. You can use the Instance Navigator view in of the JOpera Monitor perspective to check what are the instances currently managed by the JOpera Kernel.

  • What is a task?

    A task is a basic process component. It can either be an activity or a subprocess.

  • What is an activity?

    An activity represents the invocation of an external program (or service) through a variety of protocols.

  • What is a program?

    A program is any software component or external system which can be accessed by JOpera using one of the following protocols:

    • UNIX pipes (stdin/stdout) - for standard UNIX applications
    • SOAP messages - for Web services
    • Java local method invocations - for Java classes and Java snippets
    • SSH - for remote UNIX command-line applications
    • JDBC - to send SQL queries to a database directly from a process
    You can download additional JOpera plugins to extend the set of supported service invocation mechanisms. You can even write your own adapters.

  • What is a subprocess?

    A subprocess is a task which represents a call to another process.

  • What is the JAVA.SNIPPET component type?

    This is how you can embed snippets of Java into a process. Any Java code that fits into a method will do..

  • What happened to the JAVASCRIPT component type?

    As this was a big source of confusion, we renamed it to JAVA.SNIPPET in JOpera for Eclipse.

  • How much work does it take to test a Web service with JOpera?

    After importing its WSDL, just 2 mouse clicks:


    Figure 3.1: Quickly write a client process to call a Web service operation

    1. Select the operation and click on Test
    2. A Test client process will be generated automatically, click on Start to run it and call the Web service operation
    .

  • How do I make a task start after another has finished?

    Go to the ControlFlow View of the process which contains the tasks and connect the tasks with an arrow.


    Figure 3.2: Add a control flow dependency

    Now, the Second task to which the arrow points to will be started after the First task from which the arrow begins has finished. .

  • How do I draw an arrow?

    No need for dragging. Instead, follow these steps:

    1. Make sure you have selected the Connection Tool in the toolbar


      Figure 3.3: The Connection Tool is the first one

    2. Click on the box you would like the arrow to start from. The box should now be selected
    3. Click on the other box, the one you would like to connect with the previous one. The arrow should be now there.
    If the arrow didn't appear, there may be a reason for that: make sure you are not drawing it against the direction of the data flow.

  • How do I run two tasks in parallel?

    Make sure there is no control flow arrow between them.

  • How do I create an exception handler?

    Connect the task handling the exception to the task causing it with a Control Flow arrow. Select the arrow and change its Dependency in the Properties View from Finished to Failed.


    Figure 3.4: A Control Flow Arrow represents different kinds of dependencies

3.3: Questions about Running Processes

  • How do I start a process?

    In general, processes are started with Eclipse launchers in the Run... menu by selecting the JOpera Process launch configuration type. However, a process can also be quickly started from the overview page of the editor, by clicking on the Start button.


    Figure 3.5: The quickest way to start a process is to click on the Start button

  • How do I set the input parameters of a process?

    This information is entered as part of the launch configuration in the Arguments tab. Thus, different configurations can be stored for the same process.


    Figure 3.6: Configure a new launch configuration for a JOpera Process

  • How do I modify a compiled process?

    It depends if you want to keep the old version. If so, you will need to rename the process and compile it with a new name. Otherwise just save the modified changes and the new version of the process should be deployed over the previous one..

  • How do I check whether a process has finished? How do I see the results?

    Go to the JOpera Monitor perspective, select the process instance in the Instance Navigator view and you should see its current state in the visual editor. Select the task boxes to see more information about them in the Properties view..

  • My process has finished, can I save it?

    All information about a process is preserved in the kernel's dataspace as long as the user doesn't delete it. If you have configured the kernel to use persistent storage, this information may even survive kernel crashes. Starting in JOpera 2.3.2, the freeze command, will save the state of the processes in a file.

  • Can I see the execution time of a process?

    Yes, make sure you are showing the advanced properties of the process (Figure 3.7).


    Figure 3.7: Logged execution times shown in the advanced properties view

3.4: Questions about Integrating Processes with other applications

  • Would it be possible to write a script in Perl or other scripting language to start a JOpera process?

    Yes, this can be done through the Web service interface. Processes are automatically published as Web services and the WSDL for each process is listed on http://localhost:8080/wsdl With this, you can write a client to start a process using any of the above languages.

  • What if I want to call a process from a Java application?

    It depends, you can also go through the previous solution if you want to keep a certain degree of separation between your Java client application and the JOpera process. Otherwise, especially if you are writing your Java application as an Eclipse plugin, tighter forms of integration are possible.

3.5: Running JOpera as a server

  • How do I start the JOpera server from the command line?

    No need to install any additional component. You just need to run a special "headless" Eclipse application called ch.ethz.jopera.kernel.KernelApplication and pre-configure the workspace where the OML files are pre-deployed. For example:

    ./eclipse -application ch.ethz.jopera.kernel.KernelApplication -data /home/jopera/workspace/ -nosplash
    
    will start the JOpera server using the workspace in /home/jopera/workspace .

  • How do I control a local JOpera server?

    You can access JOpera from the command line, just like you would using the Kernel Console view in the Eclipse user interface. Refer to the Section: "JOpera Kernel Command Line Reference" for more information on the available commands.

  • Can I access a JOpera server remotely?

    Of course, through its Web service interface. JOpera comes with two different interfaces:

    Note: These URLs are only activated if you install the Web Services plugins for JOpera.

  • Can I connect to a JOpera server with the Monitoring perspective?

    Yes, but only if the server runs on the same machine as the client. Remote monitoring is currently disabled by default, mainly for security reasons. Contact client@jopera.org if you are interested in remotely monitoring your JOpera server. You can also use the new Monitoring Widget (7.2: Adding a Monitoring Widget).

3.6: Other questions

  • How does JOpera relate to BPEL?

    JOpera and its visual composition language are a bit more general than BPEL, which focuses on orchestration of Web services only. More in detail, there are several important differences:

    • Even concerning Web services, most BPEL tools cannot call a service described by a pure WSDL 1.1 document, as this description needs to be augmented with additional metadata (i.e., the partner). In JOpera, you can import standard compliant WSDL documents and immediately invoke the Web service from a process without having to provide additional information
    • Control flow: BPEL has several redundant constructs, given its origin which mixes a hierarchical (nested block) process modeling approach, with a flow (graph-based) process modeling approach. And even with this richness in the syntax, it has been shown that it lacks expressivity regarding several important workflow patterns. JOpera has a much simpler, graph-based model that is even more expressive!
    • Data flow: BPEL uses a low-level (imperative) model based on assignements between variables, where each data transfer must be scheduled manually by the developer. JOpera uses a high-level declarative (or functional) approach, where it is enough to model a graph of data flow edges and the system takes care of copying the data at the right time
    • Nesting: Although BPEL supports nesting with scopes inside a process, every interaction between different processes is done through a Web service interface. Thus, it becomes difficult for a BPEL engine to know whether a process is calling another process on the same engine or it is invoking a remote Web service. Thanks to its sub-process construct, JOpera processes can efficiently call (or spawn) other processes without having to pay the overhead of the Web services stack
    • Syntax: BPEL is XML, and most visual BPEL editors sadly remind developers of this, as they provide an editing environment which is tightly coupled with the underlying XML syntax. JOpera keeps the XML under the hood and provides a true visual environment for Web service composition, where developers can concentrate on specifying the flow between tasks at a high level of abstraction without having to worry about the underlying XML syntax
    • Library: BPEL standardizes as language elements several activities that should really belong in a library (e.g., timeouts). JOpera provides a rich and extensible library of reusable services, which cover important functionality (e.g., timeouts, XML data transformation, cancellation patterns) without affecting the language
    • Snippets: BPEL lacks native support for embedding code snippets and BPELJ, a controversial extension to the standard, has been proposed to allow this. JOpera supports Java snippets natively and does not require any extension to the process modeling language in order to support other snippeting languages
    .

3.7: Troubleshooting

  • Why has my process failed?

    A process fails if at least one of its Tasks failed and there was no exception handler defined for it. An Activity fails if its Program returns with a non zero return code, or, in case of a Web service call, if a SOAP fault message is received. A Sub-Process fails if the process it called has failed.

  • After I save a process, its name doesn't appear in the Instance Navigator in the Monitor Perspective. Why?

    Make sure that the Project, Build Automatically is checked. Then modify the source OML file and re-save it. Otherwise try to do a clean build of the project with Project, Clean... Or maybe it is a good time to restart the entire workbench..


    Figure 3.8: Make sure that the projects are built automatically

  • How do I change the default port of the embedded application server?

    The port is defined as a java system property. You need to start eclipse with the following command line:

    ./eclipse -vmargs -Dch.ethz.jopera.common.jetty.port=8081
    

    Note: From Version 2.3.4 you can also use the Engine Threads preference page to configure the port and start and stop the embedded HTTP server.

  • I need to use a proxy to access a Web service. How do I configure JOpera?

    You need to configure the Eclipse JVM with the proxy address. There is a plugin on http://www.x-parrots.com/eclipse/ to help you with that. Otherwise you can start eclipse passing the following arguments:

    ./eclipse -vmargs -Dhttp.proxyHost=my.proxy.com -Dhttp.proxyPort=9999
    
    . (Thanks to Jason Madoerin)

  • How do I switch on log4j output?

    Look for the file:

    eclipse/plugin/ch.ethz.jopera.common/config/log4j.properties
    If it is not there, create it. You can also rename the sample file. To configure the level of detail of the traces, add the following line into the file:
    log4j.logger.ch.ethz.jopera=DEBUG
    where ch.ethz.jopera is the package for which you want to switch debugging output on. More information on how to configure log4j can be found in the readme.txt file.