In our previous topic, What is Workflow? , we discussed about Five Interfaces (components of workflow) provided by Workflow Reference Model. These interfaces include:
- Process Definition Tools (Interface 1)
- Workflow Client Application (Interface 2)
- Invoked Application (Interface 3)
- Workflow Interoperability (Interface 4)
- Administration & Monitoring Tools (Interface 5)
In this topic, we will discuss about two standards:
- XML Process Definition Language (XPDL), which is a Process Definition Tool under Interface 1
- Workflow XML (WF-XML), which is an XML based standard for runtime integration of workflow engines under Interface 4
XML Process Definition Language (XPDL)
According to its name, XPDL is a process definition language provided by WFMC. It allows workflow experts to define their processes in the form of XML based tags. XPDL is a language developed in XML and contains special set of tags defined by WFMC.
The huge benefit of XPDL is that it defines a Common Interchange Format, which makes it easier to transfer the workflow process definitions between different workflow products. Most of the workflow engines allow their users to import or export workflow definitions from XPDL.
XPDL contains many tags to store information about:
- Workflow Process Definitions
- Workflow Process Activities
- Transitions
- Workflow Participants Declarations
- Resource Repository
- Workflow Applications Declarations
- Workflow Relevant Data
- System and Environmental Data
- Data Types and Expressions
The workflow process definition of a Contract Preparation Process (for details refer to Workflow Example in topic What is Workflow? ) is provided in XPDL form for the demonstration purposes.
Example:
[XPDL]
<?xml version="1.0" encoding="UTF-8"?>
<Package Id="ContractPackage" Name="Contract Processing"
xmlns="http://www.wfmc.org/2002/XPDL1.0"
xmlns:xpdl="http://www.wfmc.org/2002/XPDL1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.wfmc.org/2002/XPDL1.0
http://wfmc.org/standards/docs/TC-1025_schema_10_xpdl.xsd">
<PackageHeader>
<XPDLVersion>1.0</XPDLVersion>
<Vendor>Together</Vendor>
<Created>2005-04-30 22:23:51</Created>
</PackageHeader>
<RedefinableHeader PublicationStatus="UNDER_TEST"/>
<ConformanceClass GraphConformance="NON_BLOCKED"/>
<WorkflowProcesses>
<WorkflowProcess AccessLevel="PUBLIC" Id="ContractModel" Name="Contract Model">
<ProcessHeader DurationUnit="D">
<Created>2005-04-30 22:24:35</Created>
</ProcessHeader>
<RedefinableHeader PublicationStatus="UNDER_TEST"/>
<DataFields>
<DataField Id="ContractId" IsArray="FALSE">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</DataField>
<DataField Id="Reviewer" IsArray="FALSE">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</DataField>
<DataField Id="Creator" IsArray="FALSE">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</DataField>
<DataField Id="IsRejected" IsArray="FALSE">
<DataType>
<BasicType Type="BOOLEAN"/>
</DataType>
</DataField>
<DataField Id="State" IsArray="FALSE">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</DataField>
<DataField Id="Consultant" IsArray="FALSE">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</DataField>
<DataField Id="Advice" IsArray="FALSE">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</DataField>
<DataField Id="Amount" IsArray="FALSE">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</DataField>
<DataField Id="InvoiceCreator" IsArray="FALSE">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</DataField>
</DataFields>
<Participants>
<Participant Id="Reviewer" Name="Contractor Reviewer">
<ParticipantType Type="ROLE"/>
</Participant>
<Participant Id="Consultant" Name="Contract Consultant">
<ParticipantType Type="ROLE"/>
</Participant>
<Participant Id="InvoiceCreator" Name="Invoice Creator">
<ParticipantType Type="ROLE"/>
</Participant>
</Participants>
<Applications>
<Application Id="ApproveContract">
<FormalParameters>
<FormalParameter Id="ContractId" Mode="IN">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</FormalParameter>
<FormalParameter Id="Reviewer" Mode="IN">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</FormalParameter>
<FormalParameter Id="IsRejected" Mode="IN">
<DataType>
<BasicType Type="BOOLEAN"/>
</DataType>
</FormalParameter>
<FormalParameter Id="State" Mode="INOUT">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</FormalParameter>
</FormalParameters>
</Application>
<Application Id="UpdateContractState">
<FormalParameters>
<FormalParameter Id="ContractId" Mode="IN">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</FormalParameter>
<FormalParameter Id="State" Mode="IN">
<DataType>
<BasicType Type="STRING"/>
</DataType>
</FormalParameter>
</FormalParameters>
</Application>
<Application Id="ConsultContract">
<FormalParameters>