<st1:chsdate isrocdate="False" month="12" day="30" islunardate="False" w:st="on" year="1899"></st1:chsdate>
<st1:chsdate isrocdate="False" month="12" day="30" islunardate="False" w:st="on" year="1899">1.1.1</st1:chsdate> wsdl扩展实现结构
我们知道,在WSDL的标准namespace(xmlns=http://schemas.xmlsoap.org/wsdl/)中,有types,message和portType等标签。但在BPEL标准的wsdl部分,还有一个很重要的标签,那就是partnerLinkType。partnerLinkType是wsdl本身不包括的扩展部分,那这些扩展部分在jBPM BPEL中是怎么样来实现的呢?我们先来看看下面的jBPM BPEL的WSDL实现层次结构图:(这个内容是HongSoft本人正在写的一本工作流书中的一小块的草稿。图这里发不了,sorry。这里写的不太容易懂,和和,其他部分比较容易懂)
<v:group coordsize="7200,4212" id="_x0000_s1026" coordorigin="2362,7008" editas="canvas" style="width: 414pt; height: 241.8pt;"><o:lock v:ext="edit" aspectratio="t"></o:lock><v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id="_x0000_s1027" type="#_x0000_t75" o:preferrelative="f" style="left: 2362px; width: 7200px; position: absolute; top: 7008px; height: 4212px;"><v:fill o:detectmouseclick="t"></v:fill><v:path o:extrusionok="t" o:connecttype="none"></v:path><o:lock text="t" v:ext="edit"></o:lock></v:shape><v:rect id="_x0000_s1028" style="left: 4240px; width: 2818px; position: absolute; top: 7144px; height: 1087px;"><v:textbox>
</v:textbox></v:rect></v:group>
javax.wsdl.*
(Sun主导制定的规范接口)
|
<v:rect id="_x0000_s1029" style="left: 4240px; width: 2818px; position: absolute; top: 8231px; height: 1087px;"><v:textbox>
</v:textbox></v:rect>
com.ibm.wsdl.*
(IBM的wsdl标准实现)
|
<v:rect id="_x0000_s1030" style="left: 4240px; width: 2818px; position: absolute; top: 9318px; height: 1087px;"><v:textbox>
</v:textbox></v:rect>
org.jbpm.bpel.wsdl.*
(jBPM bpel对wsdl的扩展)
|
<w:wrap type="none"></w:wrap><w:anchorlock></w:anchorlock>
最顶层是javax.wsdl.*,是在JSR中制定的WSDL规范的接口表达,在jBPM BPEL代码中对应于wsdl4j.jar。第二层是com.ibm.wsdl.*,是IBM公司对wsdl标准的一个实现,基本上没有加入自己的任何扩展,在jBPM BPEL代码中对应于wsdl4j.jar。最底层是jBPM对BPEL中WSDL部分的扩展实现,它使用了wsdl4j.jar,然后加入了特殊部分的解析。
<st1:chsdate isrocdate="False" month="12" day="30" islunardate="False" w:st="on" year="1899">1.1.2</st1:chsdate>扩展点注册器
扩展点注册器(ExtensionRegistry)是WSDL本身的概念,WSDL使用它来注册新的扩展点。在wsdl4j.jar的WSDLFactoryImpl.java中,实现了ExtensionRegistry功能,而jBPM就是使用IBM的这个注册器实现加入了三个扩展点,wsdl4j.jar的实现结构如下::(这个内容是HongSoft本人正在写的一本工作流书中的一小块的草稿。图这里发不了,sorry。这里写的不太容易懂,和和,其他部分比较容易懂)
<v:shape id="_x0000_i1026" type="#_x0000_t75" style="width: 408pt; height: 114pt;"><v:imagedata src="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_image002.png" o:title=""></v:imagedata></v:shape>
<st1:chsdate isrocdate="False" month="12" day="30" islunardate="False" w:st="on" year="1899">1.1.3</st1:chsdate> 扩展点
一个扩展点注册器可以注册多个扩展点。扩展点的意思是需要新加入的WSDL标准中没有规定的新的标签,比如BPEL的partnerLinkType就是一个扩展点。
每注册一个扩展点需要确定三个方面的内容:
1)在本流程中,需要能够把一个partnerLinkType对象序列化为对应的XML文件,这个XML文件用来在网络中传送,然后到对方流程中反序列化。比如对于partnerLinkType扩展点的实现为registry.registerSerializer(Definition.class, WsdlConstants.Q_PARTNER_LINK_TYPE, plinkTypeSerializer);这里的plinkTypeSerializer是一个扩展了ExtensionSerializer接口的类。而ExtensionSerializer接口要求必须实现marshall()方法的。
2)如前面所述,对方流程需要能够把XML文件反序列化为partnerLinkType对象。比如对于partnerLinkType扩展点的实现为registry.registerDeserializer(Definition.class, WsdlConstants.Q_PARTNER_LINK_TYPE, plinkTypeSerializer); 这里的plinkTypeSerializer是一个扩展了ExtensionDeserializer接口的类。而ExtensionDeserializer接口要求必须实现unmarshall ()方法的。
3) 序列化和反序列化的方法中,都只需要给出对应的partnerLinkType对象的接口就可以了,而真正的使用是需要具体类的。BPEL的WSDL扩展实现了QName和具体类的映射关系如下:registry.mapExtensionTypes(Definition.class, WsdlConstants.Q_PARTNER_LINK_TYPE, PartnerLinkTypeImpl.class);这里的PartnerLinkTypeImpl是实现了PartnerLinkType接口的具体类。而PartnerLinkType接口是在marshall()方法和unmarshall ()方法中需要使用的。
<st1:chsdate isrocdate="False" month="12" day="30" islunardate="False" w:st="on" year="1899">1.1.4</st1:chsdate> BPEL的WSDL扩展点
jBPM对WSDL加了三个扩展点,分别用来实现PartnerLinkType功能,Property功能和PropertyAlias功能。具体如下图表所示:
QName
|
序列化
|
反序列化
|
映射类
|
WsdlConstants.
Q_PARTNER_LINK_TYPE
|
PartnerLinkType
Serializer
|
PartnerLinkType
Serializer
|
PartnerLinkTypeImpl
|
WsdlConstants.
Q_PROPERTY
|
Property
Serializer
|
Property
Serializer
|
PropertyImpl
|
WsdlConstants.
Q_PROPERTY_ALIAS
|
PropertyAlias
Serializer
|
PropertyAlias
Serializer
|
PropertyAliasImpl
|
QName表示“qualified name”,它由两部分组成:1)name所在的name space;2)name在XML中的元素(element)名称。一个QName对应一个扩展点,而扩展点注册器(ExtensionRegistry)用QName作为key值的map来保存全部的扩展点。
jBPM中的序列化和反序列化组件都是同时实现了ExtensionDeserializer,ExtensionSerializer, Serializable这三个接口,分开实现其实也是可以的。
映射类用来做到接口与实现的分离,每个映射类都对应了一个接口,这个接口才是jBPM的其他部分所大量使用的。
分享到:
相关推荐
通过BPEL,可以轻松实现对内部或外部服务的调用,无论是本地服务还是远程服务,都能无缝集成到业务流程中,增强系统的灵活性和扩展性。 ### 三、快速入门与环境搭建 #### 获取jBPM BPEL与JBoss Application Server...
### 在JBoss中部署BPEL流程:使用jBPM引擎...jBPM BPEL提供了强大的功能和支持,可以帮助开发者高效地实现复杂的业务流程自动化。无论是初学者还是经验丰富的开发人员,都可以从这些示例中学到很多有用的信息和技术点。
jbpm-bpel-1.1.Beta3 JBoss jBPM Starters Kit 是一个综合包,它包括了 jBPM 软件包、开发插件、一个配置好了的基于 JBoss 的 jBPM 示例、一些数据库配置文件示例。
1.9. The JBoss jBPM BPEL 扩展 2. 开始 2.1.下载一览 2.1.1. jBPM 3 2.1.1.1. 新手工具箱 2.1.1.2. 核心引擎和身份组件 2.1.1.3. 数据库扩展 2.1.2. jBPM 流程设计器 2.1.2.1. Eclipse 更新站点 2.1.2.2. ...
**jbpm扩展包(jbpm_adapter.jar)** jbpm是一个流行的开源工作流管理系统,用于管理和自动化业务流程。...通过深入理解和使用这个扩展包,企业可以更好地利用jbpm实现其业务流程的自动化和优化。
【jbpm4.3 会签的实现】 在企业级工作流管理系统中,会签(Concurrence Signature)是一种常见的审批流程模式,它允许多个审批人同时参与同一个任务的处理,只有当所有指定的审批人都完成他们的操作后,任务才会被...
5. **扩展jbpm-console**:对于有前端开发能力的团队,可以对JBPM的Web管理界面jbpm-console进行定制,添加自定义的监控面板和图表,以满足特定的监控需求。 6. **使用流程审计表**:JBPM的持久化机制会将流程实例...
在jbpm中,扩展主要可以通过以下几种方式实现: 1. **自定义工作流任务监听器**:通过实现`TaskListener`接口,可以在任务的不同阶段添加自定义行为,比如在任务创建、完成或者分配时触发特定操作。 2. **自定义...
### JBPM流程监控的实现过程详解 JBPM作为一款由JBOSS公司推出的开源工作流管理工具,以其强大的功能和灵活性赢得了众多开发者的青睐。尽管如此,JBPM原生并未直接提供流程监控功能的API,这无疑给那些希望在企业...
6. **自定义扩展**:jbpm的监控功能可以根据需求进行扩展。例如,通过监听器(Listeners)和工作项处理器(WorkItemHandlers)可以添加自定义的行为,收集更详细的业务指标。 7. **实时监控与报表**:jbpm提供了一...
1.1 JBPM_PROCESSDEFINITION:流程模版表 2 1.2 JBPM_NODE:流程节点表 2 1.3 JBPM_TRANSITION:流程迁移表 3 1.4 JBPM_ACTION:流程动作表 4 1.5 JBPM_EVENT:流程事件表 5 1.6 JBPM_DELEGATION:流程代理类表...
6. **使用jbpm-bpel**:对于支持BPEL(Business Process Execution Language)的场景,jbpm-bpel扩展提供了与Web服务交互的能力,使得jbpm可以协调多个Web服务以执行复杂的业务流程。 在开发过程中,开发者需要对...
通过对jBPM4的PVM实现的深入解析,我们可以看到PVM不仅是一个强大的流程执行引擎,还具备高度的灵活性和可扩展性。它通过一系列的设计模式和技术手段实现了对流程定义和执行的有效管理。无论是对于业务流程的定义...
1.1 JBPM_PROCESSDEFINITION:流程模版表 关系表 外键存在表 外键名称 外键存在表字段 存在原因 可能 关系 JBPM_NODE JBPM_NODE FK_PROCST_SBPRCDEF SUBPROCESSDEFINITION_ 子流程的指定在父流程离开之前...
入门套件提供了一个完整的开发环境,包括预配置的Jboss应用服务器、图形化流程设计工具(eclipse插件)、数据库兼容包、核心jBPM组件以及BPEL扩展参考。预配置的服务器集成了核心jBPM服务、集成数据库、jBPM控制台Web...
- **jBPM BPEL**:jBPM的BPEL(Business Process Execution Language)扩展参考。 #### 入门套件详解 jBPM的入门套件是一个全面的下载包,包含了启动项目所需的所有组件。其中: - **预配置的JBoss应用服务器**:...
- **jBPM BPEL**:jBPM 对 BPEL (Business Process Execution Language) 的扩展和支持资料。 #### 四、jBPM Starter Kit - **Starter Kit**:包含了 jBPM 所有模块的下载包,方便用户快速上手。 - **预配置的 ...