定义流程图描述信息文件格式:ProcessModle.xlst

界面画的流程图必需要解析到数据库,所以要有个样式扩展表来分析流程图,定义流程图描述信息文件格式:ProcessModle.xlst如下

流程图格式描述(XML)

 

<mxGraphModel>
 <root>
  <Diagram label="My Diagram" href="###" id="0">
   <mxCell/>
  </Diagram>
  <Layer label="Default Layer" id="1">
   <mxCell parent="0"/>
  </Layer>
  <Shape label="开始" href="" id="2">
   <mxCell style="triangle;fillColor=#3cb208" parent="1" vertex="1">
    <mxGeometry x="70" y="170" width="40" height="50" StepID="2" StepName="开始" ProcessGUID="" StepType="0" StepGUID="" AuditorType="4" AuditorGUID="2A3EF8D4-5B70-401B-AF6F-D3A58EEDB6FE" AuditorName="[发起人]" AuditorNameCC="" AuditorNameCCGUID="" IsCanAssign="1" IsMulti="0" IsCanRevolution="1" IsCanClose="0" IsCanRollBack="1" IsCanCancel="1" Description="" DispBusinessDomain="" EditBusinessDomain="申购单位,希望完成日期,单号,预计金额,物品名称,规格,申购数,预计单价,小计金额,申请单号,详细信息" as="geometry"/>
   </mxCell>
  </Shape>
  <Shape label="结束" href="" id="3">
   <mxCell style="doubleEllipse;fillColor=#3cb208" parent="1" vertex="1">
    <mxGeometry x="950" y="170" width="40" height="40" StepID="3" StepName="结束" ProcessGUID="" StepType="3" StepGUID="" AuditorType="4" AuditorGUID="2A3EF8D4-5B70-401B-AF6F-D3A58EEDB6FE" AuditorName="[发起人]" AuditorNameCC="" AuditorNameCCGUID="" IsCanAssign="0" IsMulti="0" IsCanRevolution="0" IsCanClose="0" IsCanRollBack="0" IsCanCancel="0" Description="" DispBusinessDomain="" EditBusinessDomain="" as="geometry"/>
   </mxCell>
  </Shape>
  <Roundrect label="大于6000审批" href="" id="5">
   <mxCell style="rounded" vertex="1" parent="1">
    <mxGeometry x="440" y="70" width="90" height="40" ProcessGUID="" StepID="5" StepName="大于6000审批" StepType="1" StepGUID="" AuditorType="5" AuditorGUID="b09841aa-56e6-4635-abcc-df35ed9dc2bb" AuditorName="熊培" AuditorNameCC="" AuditorNameCCGUID="" IsCanAssign="1" IsMulti="0" IsCanRevolution="1" IsCanClose="0" IsCanRollBack="1" IsCanCancel="1" Description="" DispBusinessDomain="" EditBusinessDomain="物品名称,规格,申购数,预计单价,小计金额,申请单号,详细信息" as="geometry"/>
   </mxCell>
  </Roundrect>
  <Roundrect label="步骤三审批" href="" id="6">
   <mxCell style="rounded" vertex="1" parent="1">
    <mxGeometry x="440" y="170" width="90" height="40" ProcessGUID="" StepID="6" StepName="步骤三审批" StepType="1" StepGUID="" AuditorType="5" AuditorGUID="f1d46c9b-132c-4482-9c10-a00d7d50675a" AuditorName="王永豪" AuditorNameCC="" AuditorNameCCGUID="" IsCanAssign="1" IsMulti="0" IsCanRevolution="1" IsCanClose="0" IsCanRollBack="1" IsCanCancel="1" Description="" DispBusinessDomain="" EditBusinessDomain="" as="geometry"/>
   </mxCell>
  </Roundrect>
  <Roundrect label="大于等于十万" href="" id="7">
   <mxCell style="rounded" vertex="1" parent="1">
    <mxGeometry x="440" y="250" width="100" height="40" ProcessGUID="" StepID="7" StepName="大于等于十万" StepType="1" StepGUID="" AuditorType="5" AuditorGUID="b502071b-7c7c-4fc3-a879-6c55a01a1703" AuditorName="蒋若兰" AuditorNameCC="" AuditorNameCCGUID="" IsCanAssign="1" IsMulti="0" IsCanRevolution="1" IsCanClose="0" IsCanRollBack="1" IsCanCancel="1" Description="" DispBusinessDomain="" EditBusinessDomain="申购单位,希望完成日期,单号,预计金额" as="geometry"/>
   </mxCell>
  </Roundrect>
  <Shape label="主任审批" href="" id="8">
   <mxCell style="rhombus" vertex="1" parent="1">
    <mxGeometry x="680" y="160" width="60" height="60" ProcessGUID="" StepID="8" StepName="主任审批" StepGUID="" AuditorType="5" AuditorGUID="5f3c3bb2-bd0b-47c8-8da1-48a053aabf96" AuditorName="郭依恒" AuditorNameCC="" AuditorNameCCGUID="" IsCanAssign="1" IsMulti="0" IsCanRevolution="1" IsCanClose="0" IsCanRollBack="1" IsCanCancel="1" Description="" DispBusinessDomain="" EditBusinessDomain="" StepType="1" as="geometry"/>
   </mxCell>
  </Shape>
  <Shape label="步骤二" href="" id="9">
   <mxCell style="rhombus" vertex="1" parent="1">
    <mxGeometry x="230" y="160" width="60" height="60" ProcessGUID="" StepID="9" StepName="步骤二" StepGUID="" AuditorType="5" AuditorGUID="02d45162-6f7a-464f-94f6-a661f2ef97bd" AuditorName="张超" AuditorNameCC="" AuditorNameCCGUID="" IsCanAssign="1" IsMulti="0" IsCanRevolution="1" IsCanClose="0" IsCanRollBack="1" IsCanCancel="1" Description="" DispBusinessDomain="" EditBusinessDomain="申购单位,希望完成日期,单号,预计金额,物品名称,规格,申购数,预计单价,小计金额,申请单号,详细信息" StepType="1" as="geometry"/>
   </mxCell>
  </Shape>
  <Connector label="" isconnctor="true" href="" id="10">
   <mxCell style="straightConnector" edge="1" parent="1" source="2" target="9">
    <mxGeometry relative="1" ProcessGUID="" Source="" Target="" StartStepGUID="" EndStepGUID="" Expression="" ExpressionStru="&amp;lt;ExpressionStru&amp;gt;&amp;lt;filter&amp;gt;&amp;lt;leftparenthesis/&amp;gt;&amp;lt;domain/&amp;gt;&amp;lt;opr/&amp;gt;&amp;lt;value/&amp;gt;&amp;lt;rightparenthesis/&amp;gt;&amp;lt;logic/&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/ExpressionStru&amp;gt;" as="geometry"/>
   </mxCell>
  </Connector>
  <Connector label="预计金额大于6000" isconnctor="true" href="" id="11">
   <mxCell edge="1" parent="1" source="9" target="5">
    <mxGeometry relative="1" ProcessGUID="" Source="" Target="" StartStepGUID="" EndStepGUID="" Expression="[预计金额]大于6000" ExpressionStru="&amp;lt;ExpressionStru&amp;gt;&amp;lt;filter&amp;gt;&amp;lt;leftparenthesis/&amp;gt;&amp;lt;domain&amp;gt;[预计金额]&amp;lt;/domain&amp;gt;&amp;lt;opr&amp;gt;大于&amp;lt;/opr&amp;gt;&amp;lt;value&amp;gt;6000&amp;lt;/value&amp;gt;&amp;lt;rightparenthesis/&amp;gt;&amp;lt;logic/&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/ExpressionStru&amp;gt;&amp;#xa;" as="geometry"/>
   </mxCell>
  </Connector>
  <Connector label="" isconnctor="true" href="" id="12">
   <mxCell edge="1" parent="1" source="9" target="6">
    <mxGeometry relative="1" ProcessGUID="" Source="" Target="" StartStepGUID="" EndStepGUID="" Expression="" ExpressionStru="&amp;lt;ExpressionStru&amp;gt;&amp;lt;filter&amp;gt;&amp;lt;leftparenthesis/&amp;gt;&amp;lt;domain/&amp;gt;&amp;lt;opr/&amp;gt;&amp;lt;value/&amp;gt;&amp;lt;rightparenthesis/&amp;gt;&amp;lt;logic/&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/ExpressionStru&amp;gt;" as="geometry"/>
   </mxCell>
  </Connector>
  <Connector label="预计金额大于等于十万" isconnctor="true" href="" id="13">
   <mxCell edge="1" parent="1" source="9" target="7">
    <mxGeometry relative="1" ProcessGUID="" Source="" Target="" StartStepGUID="" EndStepGUID="" Expression="[预计金额]大于等于100000" ExpressionStru="&amp;lt;ExpressionStru&amp;gt;&amp;lt;filter&amp;gt;&amp;lt;leftparenthesis/&amp;gt;&amp;lt;domain&amp;gt;[预计金额]&amp;lt;/domain&amp;gt;&amp;lt;opr&amp;gt;大于等于&amp;lt;/opr&amp;gt;&amp;lt;value&amp;gt;100000&amp;lt;/value&amp;gt;&amp;lt;rightparenthesis/&amp;gt;&amp;lt;logic/&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/ExpressionStru&amp;gt;&amp;#xa;" as="geometry"/>
   </mxCell>
  </Connector>
  <Connector label="" isconnctor="true" href="" id="14">
   <mxCell edge="1" parent="1" source="5" target="8">
    <mxGeometry relative="1" ProcessGUID="" Source="" Target="" StartStepGUID="" EndStepGUID="" Expression="" ExpressionStru="&amp;lt;ExpressionStru&amp;gt;&amp;lt;filter&amp;gt;&amp;lt;leftparenthesis/&amp;gt;&amp;lt;domain/&amp;gt;&amp;lt;opr/&amp;gt;&amp;lt;value/&amp;gt;&amp;lt;rightparenthesis/&amp;gt;&amp;lt;logic/&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/ExpressionStru&amp;gt;" as="geometry"/>
   </mxCell>
  </Connector>
  <Connector label="" isconnctor="true" href="" id="15">
   <mxCell edge="1" parent="1" source="6" target="8">
    <mxGeometry relative="1" ProcessGUID="" Source="" Target="" StartStepGUID="" EndStepGUID="" Expression="" ExpressionStru="&amp;lt;ExpressionStru&amp;gt;&amp;lt;filter&amp;gt;&amp;lt;leftparenthesis/&amp;gt;&amp;lt;domain/&amp;gt;&amp;lt;opr/&amp;gt;&amp;lt;value/&amp;gt;&amp;lt;rightparenthesis/&amp;gt;&amp;lt;logic/&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/ExpressionStru&amp;gt;" as="geometry"/>
   </mxCell>
  </Connector>
  <Connector label="" isconnctor="true" href="" id="16">
   <mxCell edge="1" parent="1" source="7" target="8">
    <mxGeometry relative="1" ProcessGUID="" Source="" Target="" StartStepGUID="" EndStepGUID="" Expression="" ExpressionStru="&amp;lt;ExpressionStru&amp;gt;&amp;lt;filter&amp;gt;&amp;lt;leftparenthesis/&amp;gt;&amp;lt;domain/&amp;gt;&amp;lt;opr/&amp;gt;&amp;lt;value/&amp;gt;&amp;lt;rightparenthesis/&amp;gt;&amp;lt;logic/&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/ExpressionStru&amp;gt;" as="geometry"/>
   </mxCell>
  </Connector>
  <Connector label="" isconnctor="true" href="" id="17">
   <mxCell style="straightConnector" edge="1" parent="1" source="8" target="3">
    <mxGeometry relative="1" ProcessGUID="" Source="" Target="" StartStepGUID="" EndStepGUID="" Expression="" ExpressionStru="&amp;lt;ExpressionStru&amp;gt;&amp;lt;filter&amp;gt;&amp;lt;leftparenthesis/&amp;gt;&amp;lt;domain/&amp;gt;&amp;lt;opr/&amp;gt;&amp;lt;value/&amp;gt;&amp;lt;rightparenthesis/&amp;gt;&amp;lt;logic/&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/ExpressionStru&amp;gt;" as="geometry"/>
   </mxCell>
  </Connector>
  <Connector label="合计大于五十万" isconnctor="true" href="" id="19">
   <mxCell edge="1" parent="1" source="2" target="8">
    <mxGeometry relative="1" ProcessGUID="" Source="" Target="" StartStepGUID="" EndStepGUID="" Expression="[合计]大于500000" ExpressionStru="&amp;lt;ExpressionStru&amp;gt;&amp;lt;filter&amp;gt;&amp;lt;leftparenthesis/&amp;gt;&amp;lt;domain&amp;gt;[合计]&amp;lt;/domain&amp;gt;&amp;lt;opr&amp;gt;大于&amp;lt;/opr&amp;gt;&amp;lt;value&amp;gt;500000&amp;lt;/value&amp;gt;&amp;lt;rightparenthesis/&amp;gt;&amp;lt;logic/&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/ExpressionStru&amp;gt;&amp;#xa;" as="geometry">
     <Array as="points">
      <mxPoint x="110" y="370"/>
     </Array>
    </mxGeometry>
   </mxCell>
  </Connector>
  <Connector label="单号等于administrator" isconnctor="true" href="" id="20">
   <mxCell edge="1" parent="1" source="9" target="3">
    <mxGeometry relative="1" ProcessGUID="" Source="" Target="" StartStepGUID="" EndStepGUID="" Expression="[单号]等于administrator" ExpressionStru="&amp;lt;ExpressionStru&amp;gt;&amp;lt;filter&amp;gt;&amp;lt;leftparenthesis/&amp;gt;&amp;lt;domain&amp;gt;[单号]&amp;lt;/domain&amp;gt;&amp;lt;opr&amp;gt;等于&amp;lt;/opr&amp;gt;&amp;lt;value&amp;gt;administrator&amp;lt;/value&amp;gt;&amp;lt;rightparenthesis/&amp;gt;&amp;lt;logic/&amp;gt;&amp;lt;/filter&amp;gt;&amp;lt;/ExpressionStru&amp;gt;&amp;#xa;" as="geometry">
     <Array as="points">
      <mxPoint x="290" y="410"/>
     </Array>
    </mxGeometry>
   </mxCell>
  </Connector>
 </root>
</mxGraphModel>

以上是流程图的描述信息,下面要建我们在后台可以解析的文件

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
 <xsl:output method="xml" indent="yes"/>
 <xsl:template match="mxGraphModel">

 </xsl:template>
 <xsl:template match="mxGraphModel">
  <ProcessModel keyvalue="">
   <!--流程基本信息-->
   <Processs>
    <Attributes>
     <ProcessGUID></ProcessGUID>
     <ProcessKindGUID></ProcessKindGUID>
     <ProcessKindName></ProcessKindName>
     <ProcessName></ProcessName>
     <IsActive></IsActive>
     <WatchMembers></WatchMembers>
     <WatchMembersName></WatchMembersName>
     <Description></Description>
     <BusinessType></BusinessType>
     <BusinessURL></BusinessURL>
     <ReportURL></ReportURL>
     <ProcessQueryDomain></ProcessQueryDomain>
     <ProcessGrap></ProcessGrap>
     <StationGUID></StationGUID>
    </Attributes>
   </Processs>
   <!--步骤信息-->
   <Steps>
    <xsl:for-each select="root/Shape|root/Rect|root/Roundrect">
     <Step>
      <Attributes>
       <StepGUID>
       </StepGUID>
       <NextStepGUID>
       </NextStepGUID>
       <StepName>
        <xsl:value-of select="@label"/>
       </StepName>
       <StepID>
        <xsl:value-of select="@id"/>

       </StepID>
       <StepType>
        <xsl:choose>
         <xsl:when  test="@label='开始'">0</xsl:when>
         <xsl:when  test="@label='结束'">3</xsl:when>
         <xsl:otherwise>
          <xsl:for-each select="mxCell/mxGeometry">
           <xsl:value-of select="@StepType"></xsl:value-of>
          </xsl:for-each>
         </xsl:otherwise>
        </xsl:choose>
       </StepType>

       <IsMulti>
        <xsl:for-each select="mxCell/mxGeometry">
         <xsl:value-of select="@IsMulti"></xsl:value-of>
        </xsl:for-each>
       </IsMulti>
       <ProcessGUID/>
       <IsCanRollBack>
        <xsl:for-each select="mxCell/mxGeometry">
         <xsl:value-of select="@IsCanRollBack"></xsl:value-of>
        </xsl:for-each>
       </IsCanRollBack>
       <IsCanCancel>
        <xsl:for-each select="mxCell/mxGeometry">
         <xsl:value-of select="@IsCanCancel"></xsl:value-of>
        </xsl:for-each>
       </IsCanCancel>
       <IsCanAssign>
        <xsl:for-each select="mxCell/mxGeometry">
         <xsl:value-of select="@IsCanAssign"></xsl:value-of>
        </xsl:for-each>
       </IsCanAssign>
       <IsCanRevolution>
        <xsl:for-each select="mxCell/mxGeometry">
         <xsl:value-of select="@IsCanRevolution"></xsl:value-of>
        </xsl:for-each>
       </IsCanRevolution>
       <IsCanClose>
        <xsl:for-each select="mxCell/mxGeometry">
         <xsl:value-of select="@IsCanClose"></xsl:value-of>
        </xsl:for-each>
       </IsCanClose>
       <Description>
        <xsl:for-each select="mxCell/mxGeometry">
         <xsl:value-of select="@Description"></xsl:value-of>
        </xsl:for-each>
       </Description>
       <DispBusinessDomain>
        <xsl:for-each select="mxCell/mxGeometry">
         <xsl:value-of select="@DispBusinessDomain"></xsl:value-of>
        </xsl:for-each>
       </DispBusinessDomain>
       <EditBusinessDomain>
        <xsl:for-each select="mxCell/mxGeometry">
         <xsl:value-of select="@EditBusinessDomain"></xsl:value-of>
        </xsl:for-each>
       </EditBusinessDomain>
       <AuditorNameCC>
        <xsl:for-each select="mxCell/mxGeometry">
         <xsl:value-of select="@AuditorNameCC"></xsl:value-of>
        </xsl:for-each>
       </AuditorNameCC>
       <AuditorNameCCGUID>
        <xsl:for-each select="mxCell/mxGeometry">
         <xsl:value-of select="@AuditorNameCCGUID"></xsl:value-of>
        </xsl:for-each>
       </AuditorNameCCGUID>
      </Attributes>
      <Brands>
       <Band>
        <Attributes>
         <BandGUID></BandGUID>
         <ProcessGUID>
          <xsl:for-each select="mxCell/mxGeometry">
           <xsl:value-of select="@y"></xsl:value-of>
          </xsl:for-each>
         </ProcessGUID>
         <StepGUID>
          <xsl:value-of select="Shape|Rect/mxCell/mxGeometry[@x]"></xsl:value-of>
         </StepGUID>
         <AuditorName>
          <xsl:for-each select="mxCell/mxGeometry">
           <xsl:value-of select="@AuditorName"></xsl:value-of>
          </xsl:for-each>
         </AuditorName>
         <AuditorGUID>
          <xsl:for-each select="mxCell/mxGeometry">
           <xsl:value-of select="@AuditorGUID"></xsl:value-of>
          </xsl:for-each>
         </AuditorGUID>
         <AuditorType>
          <xsl:for-each select="mxCell/mxGeometry">
           <xsl:value-of select="@AuditorType"></xsl:value-of>
          </xsl:for-each>
         </AuditorType>
        </Attributes>
       </Band>
      </Brands>
     </Step>
    </xsl:for-each>
   </Steps>
   <!--步骤关系信息-->
   <Connectors>
    <xsl:for-each select="root/Connector">
     <Relation>
      <Attributes>
       <StepGUID>
        <xsl:for-each select="mxCell">
         <xsl:value-of select="@source"></xsl:value-of>
        </xsl:for-each>
       </StepGUID>
       <NextStepGUID>
        <xsl:for-each select="mxCell">
         <xsl:value-of select="@target"></xsl:value-of>
        </xsl:for-each>
       </NextStepGUID>
       <Expression/>
       <IsActive/>
       <ProcessGUID/>
       <ExpressionStru/>
       <RelationGUID/>
       <Position/>
      </Attributes>
     </Relation>
    </xsl:for-each>
   </Connectors>
  </ProcessModel>
 </xsl:template>
 <xsl:template match="@* | node()">
  <xsl:copy>
   <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
 </xsl:template>
</xsl:stylesheet>

转载于:https://www.cnblogs.com/shuiyao/archive/2009/02/25/1397698.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值