JBPM流程定義校驗之XSD簡介
JBPM的流程定義語言是JPDL,其本身是一種自定義結構的xml;JBPM的流程定義結構比較復雜,不僅元素的類型多樣,而且對數據類型也有比較嚴格的要求,同時有很多元素有著相同的元素和屬性等;做為流程引擎應該具有校驗流程定義的有效性的能力,從而保證不會再流程流轉過程中發生錯誤;同時流程引擎應該內置這種校驗能力,而不能依賴流程設計器的校驗!面對如此復雜的xml,JBPM首先使用XSD進行驗證,然後再解析流程定義的同時進行一些XSD無法實現的校驗!今天簡單的介紹一下XSD的相關知識,然後接下來的將分別介紹在javascript、C#、java中怎樣利用XSD對xml進行校驗。
XSD 是基於 XML 的 DTD 替代者,XSD 可描述 XML 文檔的結構,XSD即是XML Schema Definition;XSD 的作用是定義 XML 文檔的合法構建模塊,類似 DTD。
JBPM4.4部署在Tomcat6以上的版本jar包沖突 http://www.linuxidc.com/Linux/2014-04/99476.htm
JBPM流程實例(PV)Process Variables http://www.linuxidc.com/Linux/2014-06/102859.htm
JBPM流程實例(PI)Process Instance http://www.linuxidc.com/Linux/2014-06/102858.htm
利用XSD我們可以對xml文檔實現如下控制
• 定義可出現在文檔中的元素
• 定義可出現在文檔中的屬性
• 定義哪個元素是子元素
• 定義子元素的次序
• 定義子元素的數目
• 定義元素是否為空,或者是否可包含文本
• 定義元素和屬性的數據類型
• 定義元素和屬性的默認值以及固定值
XSD與DTD比較有如下優勢
• XML Schema 可針對未來的需求進行擴展
• XML Schema 更完善,功能更強大
• XML Schema 基於 XML 編寫
• XML Schema 支持數據類型
• XML Schema 支持命名空間
現在我們有如下格式的xml文檔
<?xml version="1.0"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
那麼我們相應的XSD文件
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
那麼我們怎樣在xml中引入XSD呢?
通過schemaLocation引用
<?xml version="1.0"?>
<note xmlns="http://www.w3school.com.cn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3school.com.cn note.xsd">
<to >George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
<name></name>
</note>
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3school.com.cn" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
通過noNamespaceSchemaLocation引用
<?xml version="1.0"?>
<note xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="note.xsd">
<to >George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
<name></name>
</note>
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3school.com.cn" elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
為IDE開發環境添加XSD,開啟xml只能提示功能
Visual studio添加XSD
默認情況下,我們只需要將相應的xsd文件拷貝到Visual studio 安裝目錄\xml\schemas目錄下即可
eclipse添加XSD
• 點擊窗口 --> 屬性(Windows --> Preferences)
• 選擇XML --> 目錄(XML --> CataLog)
• 點擊添加(Add)
• 添加XML目錄(Add XML Catalog Entry)的窗口打開
• 點擊map-icon的圖標下面的按鈕並選擇文件系統(File System)
• 在打開的對話框中, 選擇相應的XSD文件
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-06/102860p2.htm