Workflow: First release, design summary

xiaoxiao2021-03-06  26

overall

Interface: message system, persistent system, etc., which are replaceable, backbone code for actual message system or persistent system, etc., is aware of component multiplexing: Visio object and Visio mold use current to see Good effect, greatly shorten the development cycle, enhance function, and automatically use the view to have a considerable degree of extent, and more than JAWE is more than the SOA: Platform All interfaces are provided through WebService, improved Recourse and cross-platform capabilities; in fact, the platform is .NET development, and currently supporting several applications are J2EE's service gateway / interface: platform core functions are provided in the form of class libraries, all exposed interfaces are Thin layer of WebService packaging (service interface); access to the interface is also available in the form of class library, hidden the WEBSERVICE call (service gateway) follow standard: Follow WFMC to make the development group have left a lot of detours Due to the standard, even if the standard is not the best solution, it has considerable guidance for the lack of business experts. And the open source software provides a reference implementation, and the interoperability of open source software verifies the correctness of the product. Sexuality

Module

General query interface: Decorate / Composite

Realize the approach, intention

///

/// General conditional interface, use the object type parameter, to kick the type security check to the subclass

///

Public interface icodition {

///

/// Return to the incoming object to meet this condition

///

/// Incoming Objects

/// Whether the incoming object meets this condition

Bool Calculate (Object Obj);

///

/// Return the string of this condition to the parameter transmission for WebService

///

/// This condition is characterized by

String getString ();

///

/// Restore the incoming string as condition object

///

/// The string of the original condition object is represented

Void setstring;

}

[Serializable]

Public Abstract Class Basecondition: icondition {

// Some default implementations define several template method

// ...

}

///

/// General all condition interface

///

[Serializable]

Public class allcondition: basecondition {

Public Override Bool Calculate (Object Obj) {

Return True;

}

}

///

/// General and conditional interface, return true when all conditions are TRUE

///

[Serializable]

Public class andcondition: basecondition {

Private ilist conditions; public andcondition (ilist condition) {

THIS.CONDITIONS = CONDitions;

}

Public andcondition () {

THIS.CONDITIONS = NULL;

}

Public Override Bool Calculate (Object Obj) {

Icondition Condition In Conditions {

IF (! Condition.calculate (OBJ)) {

Return False;

}

}

Return True;

}

}

///

/// General or conditional interface, return true when all conditions are TRUE

///

[Serializable]

Public class orcondition: basecondition {

Private ilist conditions;

Public Orcondition (ilist conditions) {

THIS.CONDITIONS = CONDitions;

}

Public Orcondition () {

THIS.CONDITIONS = NULL;

}

Public Override Bool Calculate (Object Obj) {

Icondition Condition In Conditions {

IF (Condition.calculate (OBJ)) {

Return True;

}

}

Return False;

}

}

///

/// General non-conditional interface, return the result opposite to the original conditions

///

Public class notcondition: basecondition {

PRIVATE ICONDITION CONDition;

Public Notcondition (iconder conput) {

THIS.CONDITION = CONDition;

}

Public notcondition () {

THIS.CONDITION = NULL;

}

Public Override Bool Calculate (Object Obj) {

Return! Condition.calculate (OBJ);

}

}

General Workflow Model: Abstract Factory

Although XPDL is standard, the extension attributes of each manufacturer are different. The process designers and engines need to be compatible with the models of various manufacturers. They need to produce their respective object systems with ABSTRACT FACTORY, and their factory. Of course, the interface is the same, process designer And the engine only operates on the interface

Public interface model {

Pdpackage createpage ();

PDPackageHeader CreatePackageHeader ();

PDProcesses CreateProcesses ();

PDExtendedAdAttributes createExtendedAttributes ();

Pdtransitions CreateTransitions ();

PDPROCESS CREATEPROCESS ();

PDACTIVITYSET CREATEACTIVITYSET ();

PDDatafield CreateDataField ();

// ......

// ...

}

Public Class JawemodelfActory: Modelfactory {

Public PdProcess CreateProcess () {Return New JawepdProcess (this)

}

// ......

// ...

}

Organization adapter: Adaptor

Process Designer and Engine and Process Monitoring Tools, just similar to the organizational model in which the system defined in the system, the external actual organizational model needs to be accessed into the platform in the form of separately writing adapters; as we developed Data is stored in an XML file, and several actual organization data stores in the company's database, we use two adapters to adapt the original model, and configure it when used:

Process Description and Process Definition: Item and Item Description

Process Designer and Process Monitoring Tools and applications are just the description of the process, and then get a real process definition after selecting a flow.

There are a lot of way to improve, preferred:

Microennuclear: Reconstructing the engine to a simple kernel and a set of adapters around the kernel to separate the scheduling system and information system: Query should not need the participation of the engine, the engine is responsible for process schedule, the information system should be stripped Come, improve the performance provider: Change the manual modification profile, the registered adapter's situation unified interface frame design: change the lack of interface specification or template, the interface style is not uniform, the code structure is not uniform, the code-dependent stripping is dependent on third-party commercial products: The view part of the designer adds an abstraction layer, isolating the Visio component, after all costs, do you want to be independent? Similar to the J2EE platform, Java and C # provide a number of temptations, a set of trunk code, two sets of platform adapters, and the company's current project is the need for J2EE workflow platform; There have been many successful projects, the problem is our resources, discuss it again.

Open the XPDL parser currently used, hoping to get feedback

http://cosoft.org.cn/projects/xpdlparser

转载请注明原文地址:https://www.9cbs.com/read-81964.html

New Post(0)