Workflow Management with Espresso Workflow

  • View
    2.002

  • Download
    3

Embed Size (px)

Text of Workflow Management with Espresso Workflow

Startfolie mit Titel der Prsentation

Startfolie mit Titel der Prsentation

Vorname Nachname
-Business Titel-
Workflow Management with
PAVONE Espresso Workflow for Java EE

Dr. Rolf Kremer
- Director Product Development -

Agenda

Introduction

Components

Modeling and Form Design

Capabilities

Runtime Engine API

Questions

PAVONE Espresso Workflow

Part of the PAVONE Process Control Suite

Available on two platforms: IBM Lotus Notes/Domino, Java EE

History

1995: First release for IBM Lotus Notes/Domino (as PAVONE GroupFlow)

2006: First release for Java EE

Many users

Installed basis: > 85.000 users

Customer projects: > 880

See http://www.pavone.com/pages.nsf/goto/processmanagement_en

Focus: Team-oriented Processes

Transaction-oriented processes

Business integration and process automation

Examples: Invoice processing, Accounting, Logistics, Financial services

Strong structured and high number execution

Team-oriented processes ('Human Workflow Management')

Human interaction

Difficult to automate and weak structured

Forwarding of documengs and forms between different editors

Content could be changed in each task

Examples: Employee selection, Document release, Travelling expenses

accounting, Investment proposal, Claims settlement, Process changes

Components

From Model to Analysis

PAVONE ProcessModeler

PAVONE ProcessModeler

(PAVONE ProcessModeler),Application

PAVONE ProcessModeler

Modeling:
Modeling of Workflow controlled business processes, specification of control conditions

Animation:
Step by step execution of modeled processes

Simulation:
Comparison of alternative solutions under different conditions

Analysis:
Analyze existing process instances, graphical visualization, option to export data

First: Defining the Process Definition

PAVONE ProcessModeler

Second: Defining the Data Model

PAVONE ProcessModeler

Types of fields

Standard

Text

Date/Time

Number

Rich Text

Names, (Autors), (Readers)

Extended

Action: Call of an uri with parameters

Separator: Line break between fields

Section: Grouping of fields to a section

Tab: Grouping of fields/section in a tab

Widget: Thematically section or tab

Widget: Progress Display

Position of the current task in the process

Definition in the process definition

Definition per task

Take-over from other tasks possible

Widget: Project Start

Start of a project directly from a process form

Statement of

Project id

Manager

Start date of the project

Selection of a project template (if available)

Widget: File Attachment

Management of files of a process task

Actions

Add, Delete, Open

Download

Preview area

Several widgets available

System widgets

Progress display

Project start

File attachments

Bookmarks

Comment

Log

Acquisition of efforts

User defined widgets

Creation of own widget

Adding of JavaScript code

Example: Google Gadgets

Third: Designing the Forms

Options

Modifying of order of fields

Add separator

Grouping of fields (sections)

Grouping of fields/section in tabs

Read-only fields

Must fields

Hidden fields

Form Design: Read-only and Must fields

Read-only field: Modification of content is not possible

Must field: A value has to be entered

Hidden field: Field exists in html code, but is not visible

Form Design: Separator

Without separator ('Line break'):

With separator:

Form Design: Section

Grouping of fields to an unit

Form Design: Tab

Grouping of fields/widgets in a tab

Fourth: Initiate and Execute a Process

Administration area

Tasks area and Welcome Page

View for Business Data

For each process definition a view

Show field values in columns

View for Business Data (2)

Definition of names & columns

Capabilities

Process Hosting

SaaS-Lsung: PAVONElive

Install PAVONE ProcessModeler local

Suitable for small, simple processes

Suitable for prototypical implementation

See http://www.pavonelive.com

In-house solution

Easy installation of the PAVONE Pross Control Suite

Suitable for processes any complexity

Suitable for connections to third-party systems (Data exchange)

See http://www.pavone.com/pages.nsf/goto/pcs_en

In-house Solution: Installation

Installed software

Apache Derby Server 10.4.2

JBoss Application Server 4.2.3

Apache Jackrabbit 1.5.3 (Content Repository)

PAVONE PCS Java EE 2.2

Setup:

PCS databases with examples

Path to the JCR repository

Used Open Source Modules

Server: JBoss Application Server, (Apache Tomcat)

DBMS: Apache Derby, (MySQL Community Edition)

Frontend: Apache Struts, Dojo Toolkit, jQuery

Persistence: Hibernate

File management: Apache Jackrabbit

Operating system: Debian, Ubuntu

Other: Rhino, Apache Commons, Log4J, JibX, JavaDoc, InstallJammer, MPXJ, XPP3

Extensibility

Workflow ApplicationStandard ApplicationOther Application StandardFormsAddWidgetsOwn Forms &StandardBusinessObjectsOwn Forms &OwnBusinessObjectsExistingApplicationNewApplicationFrontendBackend WidgetDocumentationJava APIDocumentationJSON APIDocumentationWhite PaperDesigningWorkflowsProcessEngineInstallationProcessEngineInstallationStandard?Development Effort Java APIDocumentationJSON APIDocumentationYesNo

PAVONE Process Engine

PAVONE Process Engine

Part of PAVONE Espresso Workflow

Runtime Engine, responsible for the routing

Support activities, workflow tasks, project tasks

Extensive and easy-usable API (Application Programming Interface)

Multi-client capability

Integrated Event handling

Integrated Business data handling

Open for serveral Application Types

Databases

agappmanagerapppmodprocessenginesecurityOrganizationDirectoryProcessEngineApplicationAgentManagerSecurity

Deployment Options

Minimal installation

Direct jar import

UI independence

Service installation

Core object access via JNDI lookups

UI independence

Web application

Struts-based UI, JSPs, Javascript, etc.

Predefined, extensible UI

Reuseable elements

Multi-client Capability

Object types

Types

Project

Workflow

Simple (Activity)

All types share a largely common interface

Runtime & Definition Objects

Basic Types: Status & AccessLevel

Standard types:

enforce type safety

ease localization

make values independent of persistent representation

NameAssignment Class

Resolution types:

Fixed

Computed by property

Computed by script

Computed by field in business object

Automated (not yet available)

Computed by custom property (not yet available)

Type dynamic-by-field refers to default bizobject

Used by:

Process

Task

ProcessDefinition

TaskDefinition

Persistence API

Repository

Encapsulates persistent data store

Connection

Connection to data store

PCSEntity

Base class for all persistent objects

UuidGenerator

Interface allows for flexible creation of unique keys

Persistence API: Repository & Connection

Repository

Manage connections to a particular datastore

Connection

Manage objects in a data store

Purpose: Create a layer of abstraction around Hibernate

API Example: Creation of Session Object

import javax.naming.InitialContext;import com.pavone.base.util.config.PCS_config;import com.pavone.pcs.Session;

InitialContext ic = new InitialContext();SessionFactory pcsFactory = (SessionFactory) ic.lookup(PCS_config.get(PCS_config.PCSENGINE_JNDINAME));

Session pcsSession = pcsFactory.createSession(userName);

API Example: Repository and Connection

import com.pavone.pcs.Repository;import com.pavone.pcs.Connection;

Repository repository = pcsSession.getRepository();Connection connection = repository.createConnection();

API Example: Frame for Transaction Handling

try {connection.beginTransaction();

... Place your operations here ...connection.commitTransaction();}catch (PCSBusinessException pcse) {connection.rollbackTransaction();}catch (RuntimeException e) {connection.rollbackTransaction();e.printStackTrace();}finally {connection.close();}

API Example: Get Simple Task Objects

import com.pavone.pcs.TaskType,import com.pavone.pcs.ObjectType;

Set tasks = pcsSession.getTasksByUser ( "", ObjectType.SIMPLE, pcsSession.getUserName(),TaskStatus.IN_PROGRESS );

API Example: Loop to Access Simple Tasks

import com.pavone.pcs.SimpleTask;

Iterator iterator = tasks.iterator();while (iterator.hasNext()) {SimpleTask task =