JOpera is an autonomic process support system targeted for generic service composition.
JOpera runs on Eclipse 3.3/3.4 with Java JDK 1.5) and requires the GEF plugin.
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.
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.
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.
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.
A task is a basic process component. It can either be an activity or a subprocess.
An activity represents the invocation of an external program (or service) through a variety of protocols.
A program is any software component or external system which can be accessed by JOpera using one of the following protocols:
A subprocess is a task which represents a call to another process.
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..
JAVASCRIPT component type?As this was a big source of confusion, we renamed it to JAVA.SNIPPET in JOpera for Eclipse.
After importing its WSDL, just 2 mouse clicks:

Figure 3.1: Quickly write a client process to call a Web service operation
Test
Start to run it and call the Web service operation
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
Second task to which the arrow points to will be started after the First task from which the arrow begins has finished.
.
No need for dragging. Instead, follow these steps:
Make sure there is no control flow arrow between them.
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
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
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
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..
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..
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.
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
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.
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.
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/ -nosplashwill start the JOpera server using the workspace in
/home/jopera/workspace
.
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.
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.
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).
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:
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.
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
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.
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)
log4j output?Look for the file:
eclipse/plugin/ch.ethz.jopera.common/config/log4j.propertiesIf 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=DEBUGwhere
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.