今天用svn下载jbpm3的源码,无意中发现了xpdl的字样,奇怪了一下,因为jbpm支持的是JPDL的,看JBOSS的网站和相关wiki,都没有提到对XDPL的支持。等不得svn完成,到下载的目录中去查看一番,结果发现在:
jbpm/jbpm3/jbossbpm/spec/trunk/modules/dialects/
文件夹下,真的有一个xpdl121的文件夹
在这个文件夹下用tree命令的结果如下:
dialect]$ tree
.
`-- xpdl21
|-- DialectHandlerImpl.java
|-- ProcessUnmarshaller.java
|-- WorkflowProcessAdapter.java
`-- model
|-- ApplicationType.java
|-- ExpressionType.java
|-- MessageType.java
|-- ObjectFactory.java
|-- PackageType.java
|-- XPDLActivities.java
|-- XPDLActivity.java
|-- XPDLActivitySet.java
|-- XPDLActivitySets.java
|-- XPDLActualParameters.java
|-- XPDLApplication.java
|-- XPDLApplications.java
|-- XPDLArrayType.java
|-- XPDLArtifact.java
|-- XPDLArtifactInput.java
|-- XPDLArtifacts.java
|-- XPDLAssignment.java
|-- XPDLAssignments.java
|-- XPDLAssociation.java
|-- XPDLAssociations.java
|-- XPDLAuthor.java
|-- XPDLBasicType.java
|-- XPDLBlockActivity.java
|-- XPDLCategories.java
|-- XPDLCategory.java
|-- XPDLCodepage.java
|-- XPDLCondition.java
|-- XPDLConformanceClass.java
|-- XPDLConnectorGraphicsInfo.java
|-- XPDLConnectorGraphicsInfos.java
|-- XPDLCoordinates.java
|-- XPDLCost.java
|-- XPDLCostStructure.java
|-- XPDLCostUnit.java
|-- XPDLCountrykey.java
|-- XPDLCreated.java
|-- XPDLDataField.java
|-- XPDLDataFields.java
|-- XPDLDataMapping.java
|-- XPDLDataMappings.java
|-- XPDLDataObject.java
|-- XPDLDataType.java
|-- XPDLDeadline.java
|-- XPDLDeclaredType.java
|-- XPDLDescription.java
|-- XPDLDocumentation.java
|-- XPDLDuration.java
|-- XPDLEndEvent.java
|-- XPDLEndPoint.java
|-- XPDLEnumerationType.java
|-- XPDLEnumerationValue.java
|-- XPDLEvent.java
|-- XPDLExtendedAttribute.java
|-- XPDLExtendedAttributes.java
|-- XPDLExternalPackage.java
|-- XPDLExternalPackages.java
|-- XPDLExternalReference.java
|-- XPDLFormalParameter.java
|-- XPDLFormalParameters.java
|-- XPDLGroup.java
|-- XPDLIORules.java
|-- XPDLIcon.java
|-- XPDLImplementation.java
|-- XPDLInput.java
|-- XPDLInputSet.java
|-- XPDLInputSets.java
|-- XPDLIntermediateEvent.java
|-- XPDLJoin.java
|-- XPDLLane.java
|-- XPDLLanes.java
|-- XPDLLayoutInfo.java
|-- XPDLLength.java
|-- XPDLLimit.java
|-- XPDLListType.java
|-- XPDLLoop.java
|-- XPDLLoopMultiInstance.java
|-- XPDLLoopStandard.java
|-- XPDLMember.java
|-- XPDLMessageFlow.java
|-- XPDLMessageFlows.java
|-- XPDLModificationDate.java
|-- XPDLNo.java
|-- XPDLNodeGraphicsInfo.java
|-- XPDLNodeGraphicsInfos.java
|-- XPDLObject.java
|-- XPDLOutput.java
|-- XPDLOutputSet.java
|-- XPDLOutputSets.java
|-- XPDLPackageHeader.java
|-- XPDLPage.java
|-- XPDLPages.java
|-- XPDLParticipant.java
|-- XPDLParticipantType.java
|-- XPDLParticipants.java
|-- XPDLPartnerLink.java
|-- XPDLPartnerLinkType.java
|-- XPDLPartnerLinkTypes.java
|-- XPDLPartnerLinks.java
|-- XPDLPerformer.java
|-- XPDLPerformers.java
|-- XPDLPool.java
|-- XPDLPools.java
|-- XPDLPrecision.java
|-- XPDLPriority.java
|-- XPDLPriorityUnit.java
|-- XPDLProcessHeader.java
|-- XPDLPropertyInput.java
|-- XPDLRecordType.java
|-- XPDLRedefinableHeader.java
|-- XPDLReference.java
|-- XPDLResourceCosts.java
|-- XPDLResponsible.java
|-- XPDLResponsibles.java
|-- XPDLResultError.java
|-- XPDLResultMultiple.java
|-- XPDLRoute.java
|-- XPDLRule.java
|-- XPDLScale.java
|-- XPDLSchemaType.java
|-- XPDLScript.java
|-- XPDLSimulationInformation.java
|-- XPDLSplit.java
|-- XPDLStartEvent.java
|-- XPDLSubFlow.java
|-- XPDLTask.java
|-- XPDLTaskApplication.java
|-- XPDLTaskManual.java
|-- XPDLTaskReceive.java
|-- XPDLTaskReference.java
|-- XPDLTaskScript.java
|-- XPDLTaskSend.java
|-- XPDLTaskService.java
|-- XPDLTaskUser.java
|-- XPDLTimeEstimation.java
|-- XPDLTransaction.java
|-- XPDLTransition.java
|-- XPDLTransitionRef.java
|-- XPDLTransitionRefs.java
|-- XPDLTransitionRestriction.java
|-- XPDLTransitionRestrictions.java
|-- XPDLTransitions.java
|-- XPDLTriggerConditional.java
|-- XPDLTriggerIntermediateMultiple.java
|-- XPDLTriggerMultiple.java
|-- XPDLTriggerResultCompensation.java
|-- XPDLTriggerResultLink.java
|-- XPDLTriggerResultMessage.java
|-- XPDLTriggerResultSignal.java
|-- XPDLTriggerTimer.java
|-- XPDLTypeDeclaration.java
|-- XPDLTypeDeclarations.java
|-- XPDLUnionType.java
|-- XPDLValidFrom.java
|-- XPDLValidTo.java
|-- XPDLVendor.java
|-- XPDLVendorExtension.java
|-- XPDLVendorExtensions.java
|-- XPDLVersion.java
|-- XPDLWaitingTime.java
|-- XPDLWebServiceFaultCatch.java
|-- XPDLWebServiceOperation.java
|-- XPDLWorkflowProcess.java
|-- XPDLWorkflowProcesses.java
|-- XPDLWorkingTime.java
|-- XPDLXPDLVersion.java
`-- package-info.java
2 directories, 169 files
看来是有相关的class
于是,我用vim打开其中的一个文件:
#>vim WorkflowProcessAdapter.java
这个文件的源代码片断如下:
奇怪ing,研究一下相关的代码再作结论。。。。。。。。。。。
jbpm/jbpm3/jbossbpm/spec/trunk/modules/dialects/
文件夹下,真的有一个xpdl121的文件夹
在这个文件夹下用tree命令的结果如下:
dialect]$ tree
.
`-- xpdl21
|-- DialectHandlerImpl.java
|-- ProcessUnmarshaller.java
|-- WorkflowProcessAdapter.java
`-- model
|-- ApplicationType.java
|-- ExpressionType.java
|-- MessageType.java
|-- ObjectFactory.java
|-- PackageType.java
|-- XPDLActivities.java
|-- XPDLActivity.java
|-- XPDLActivitySet.java
|-- XPDLActivitySets.java
|-- XPDLActualParameters.java
|-- XPDLApplication.java
|-- XPDLApplications.java
|-- XPDLArrayType.java
|-- XPDLArtifact.java
|-- XPDLArtifactInput.java
|-- XPDLArtifacts.java
|-- XPDLAssignment.java
|-- XPDLAssignments.java
|-- XPDLAssociation.java
|-- XPDLAssociations.java
|-- XPDLAuthor.java
|-- XPDLBasicType.java
|-- XPDLBlockActivity.java
|-- XPDLCategories.java
|-- XPDLCategory.java
|-- XPDLCodepage.java
|-- XPDLCondition.java
|-- XPDLConformanceClass.java
|-- XPDLConnectorGraphicsInfo.java
|-- XPDLConnectorGraphicsInfos.java
|-- XPDLCoordinates.java
|-- XPDLCost.java
|-- XPDLCostStructure.java
|-- XPDLCostUnit.java
|-- XPDLCountrykey.java
|-- XPDLCreated.java
|-- XPDLDataField.java
|-- XPDLDataFields.java
|-- XPDLDataMapping.java
|-- XPDLDataMappings.java
|-- XPDLDataObject.java
|-- XPDLDataType.java
|-- XPDLDeadline.java
|-- XPDLDeclaredType.java
|-- XPDLDescription.java
|-- XPDLDocumentation.java
|-- XPDLDuration.java
|-- XPDLEndEvent.java
|-- XPDLEndPoint.java
|-- XPDLEnumerationType.java
|-- XPDLEnumerationValue.java
|-- XPDLEvent.java
|-- XPDLExtendedAttribute.java
|-- XPDLExtendedAttributes.java
|-- XPDLExternalPackage.java
|-- XPDLExternalPackages.java
|-- XPDLExternalReference.java
|-- XPDLFormalParameter.java
|-- XPDLFormalParameters.java
|-- XPDLGroup.java
|-- XPDLIORules.java
|-- XPDLIcon.java
|-- XPDLImplementation.java
|-- XPDLInput.java
|-- XPDLInputSet.java
|-- XPDLInputSets.java
|-- XPDLIntermediateEvent.java
|-- XPDLJoin.java
|-- XPDLLane.java
|-- XPDLLanes.java
|-- XPDLLayoutInfo.java
|-- XPDLLength.java
|-- XPDLLimit.java
|-- XPDLListType.java
|-- XPDLLoop.java
|-- XPDLLoopMultiInstance.java
|-- XPDLLoopStandard.java
|-- XPDLMember.java
|-- XPDLMessageFlow.java
|-- XPDLMessageFlows.java
|-- XPDLModificationDate.java
|-- XPDLNo.java
|-- XPDLNodeGraphicsInfo.java
|-- XPDLNodeGraphicsInfos.java
|-- XPDLObject.java
|-- XPDLOutput.java
|-- XPDLOutputSet.java
|-- XPDLOutputSets.java
|-- XPDLPackageHeader.java
|-- XPDLPage.java
|-- XPDLPages.java
|-- XPDLParticipant.java
|-- XPDLParticipantType.java
|-- XPDLParticipants.java
|-- XPDLPartnerLink.java
|-- XPDLPartnerLinkType.java
|-- XPDLPartnerLinkTypes.java
|-- XPDLPartnerLinks.java
|-- XPDLPerformer.java
|-- XPDLPerformers.java
|-- XPDLPool.java
|-- XPDLPools.java
|-- XPDLPrecision.java
|-- XPDLPriority.java
|-- XPDLPriorityUnit.java
|-- XPDLProcessHeader.java
|-- XPDLPropertyInput.java
|-- XPDLRecordType.java
|-- XPDLRedefinableHeader.java
|-- XPDLReference.java
|-- XPDLResourceCosts.java
|-- XPDLResponsible.java
|-- XPDLResponsibles.java
|-- XPDLResultError.java
|-- XPDLResultMultiple.java
|-- XPDLRoute.java
|-- XPDLRule.java
|-- XPDLScale.java
|-- XPDLSchemaType.java
|-- XPDLScript.java
|-- XPDLSimulationInformation.java
|-- XPDLSplit.java
|-- XPDLStartEvent.java
|-- XPDLSubFlow.java
|-- XPDLTask.java
|-- XPDLTaskApplication.java
|-- XPDLTaskManual.java
|-- XPDLTaskReceive.java
|-- XPDLTaskReference.java
|-- XPDLTaskScript.java
|-- XPDLTaskSend.java
|-- XPDLTaskService.java
|-- XPDLTaskUser.java
|-- XPDLTimeEstimation.java
|-- XPDLTransaction.java
|-- XPDLTransition.java
|-- XPDLTransitionRef.java
|-- XPDLTransitionRefs.java
|-- XPDLTransitionRestriction.java
|-- XPDLTransitionRestrictions.java
|-- XPDLTransitions.java
|-- XPDLTriggerConditional.java
|-- XPDLTriggerIntermediateMultiple.java
|-- XPDLTriggerMultiple.java
|-- XPDLTriggerResultCompensation.java
|-- XPDLTriggerResultLink.java
|-- XPDLTriggerResultMessage.java
|-- XPDLTriggerResultSignal.java
|-- XPDLTriggerTimer.java
|-- XPDLTypeDeclaration.java
|-- XPDLTypeDeclarations.java
|-- XPDLUnionType.java
|-- XPDLValidFrom.java
|-- XPDLValidTo.java
|-- XPDLVendor.java
|-- XPDLVendorExtension.java
|-- XPDLVendorExtensions.java
|-- XPDLVersion.java
|-- XPDLWaitingTime.java
|-- XPDLWebServiceFaultCatch.java
|-- XPDLWebServiceOperation.java
|-- XPDLWorkflowProcess.java
|-- XPDLWorkflowProcesses.java
|-- XPDLWorkingTime.java
|-- XPDLXPDLVersion.java
`-- package-info.java
2 directories, 169 files
看来是有相关的class
于是,我用vim打开其中的一个文件:
#>vim WorkflowProcessAdapter.java
这个文件的源代码片断如下:
- /*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
- package org.jboss.bpm.dialect.xpdl21;
- // $Id: WorkflowProcessAdapter.java 1864 2008-08-11 10:56:42Z thomas.diesler@jboss.com $
- import org.jboss.bpm.InvalidProcessException;
- import org.jboss.bpm.dialect.xpdl21.model.XPDLActivities;
- import org.jboss.bpm.dialect.xpdl21.model.XPDLActivity;
- import org.jboss.bpm.dialect.xpdl21.model.XPDLEvent;
- import org.jboss.bpm.dialect.xpdl21.model.XPDLWorkflowProcess;
- import org.jboss.bpm.model.Process;
- import org.jboss.bpm.model.ProcessBuilder;
- import org.jboss.bpm.model.ProcessBuilderFactory;
- /**
- * Adapt the jpdl-3.2 ProcessDefinition to the API Process
- *
- * @author thomas.diesler@jboss.com
- * @since 18-Jun-2008
- */
- public class WorkflowProcessAdapter
- {
- public Process adaptWorkflowProcess(XPDLWorkflowProcess xpdlProc)
- {
- ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- builder.addProcess(xpdlProc.getName());
- XPDLActivities xpdlActivities = xpdlProc.getActivities();
- for (XPDLActivity xpdlActivity : xpdlActivities.getActivity())
- {
- XPDLEvent xpdlEvent = xpdlActivity.getEvent();
- if (xpdlEvent != null)
- {
- if (xpdlEvent.getStartEvent() != null)
- {
- builder.addStartEvent("Start");
- }
- else if (xpdlEvent.getEndEvent() != null)
- {
- builder.addEndEvent(xpdlActivity.getName());
- }
- else
- {
- throw new InvalidProcessException("Unsupported type: " + xpdlEvent);
- }
- }
- else
- {
- throw new InvalidProcessException("Unsupported type: " + xpdlActivity);
- Process proc = builder.getProcess();
- return proc;
- }
- }
奇怪ing,研究一下相关的代码再作结论。。。。。。。。。。。