最近把比较大的项目完成了,现把之前的经验分享给大家。分两部份,一是流程自定义,二是表单自定义。
一:
目的:达到在web页面上进行拖拉拽自定义流程,流程步骤数可无限配置,流程节点可设人员,岗位,部门等。
第一我采取的是基于vml的图形化进行可视化操作。
先定义基本的流程数据框架。文件如下
<?xml version="1.0" encoding="utf-16"?>
<Process>
<Attributes>
<ProcessKindGUID>F2AFE8B4-CC99-4B3F-8656-5E231EFD0128</ProcessKindGUID>
<ProcessName>发起步骤</ProcessName>
<BUGUID>F2AFE8B4-CC99-4B3F-8656-5E231EFD0128</BUGUID>
<CanChildBU></CanChildBU>
<LimitDay>0</LimitDay>
<IsActive>1</IsActive>
<ModifyDate></ModifyDate>
<ModifyMember></ModifyMember>
<ModifyMemberName></ModifyMemberName>
<Description></Description>
<WatchMembers></WatchMembers>
<WatchMembersName></WatchMembersName>
<D_Document>5805e820-a075-48ae-bff5-02ad1468904f</D_Document>
<CanDataSave>1</CanDataSave>
</Attributes>
<Steps>
<Step>
<Attributes>
<Description></Description>
<StepGUID>50deb909-1525-4a6f-9f52-c651873468b8</StepGUID>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ProcessKindGUID>d7bbe23e-0f9a-49d7-b686-57c690a5a326</ProcessKindGUID>
<XYPos>400,20</XYPos>
<StepID>1</StepID>
<StepName>开始</StepName>
<StepType>0</StepType>
<StepTypeName>开始</StepTypeName>
<StepStatusName />
<StepStatus />
<XYPos />
</Attributes>
<Bands>
<Band>
<Attributes>
<StepGUID>50deb909-1525-4a6f-9f52-c651873468b8</StepGUID>
<AuditorScope>2a3ef8d4-5b70-401b-af6f-d3a58eedb6fe</AuditorScope>
<AuditorName>[发起人]</AuditorName>
<AuditorType>4</AuditorType>
<AuditorRightValue></AuditorRightValue>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<BandGUID>d39f31ca-2f46-4558-ac58-9c8894ba6963</BandGUID>
<BandName>[发起人]</BandName>
<NodeStatus />
</Attributes>
</Band>
</Bands>
<Relations>
<Relation>
<Attributes>
<StepGUID>50deb909-1525-4a6f-9f52-c651873468b8</StepGUID>
<NextStepGUID>5b02deba-1205-446d-bf4e-e8f1a8ef5623</NextStepGUID>
<Expression></Expression>
<IsActive>1</IsActive>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ExpressionStru></ExpressionStru>
<RelationGUID>c389e7e3-3f42-4223-8109-4561e3dbbcdb</RelationGUID>
<Position>NodeBottom,NodeTop</Position>
<NextStepID>2</NextStepID>
<Position>NodeBottom,NodeTop</Position>
</Attributes>
</Relation>
</Relations>
</Step>
<Step>
<Attributes>
<Description></Description>
<NotifyDay>0</NotifyDay>
<IsInitMemberAssign>0</IsInitMemberAssign>
<IsMulti>0</IsMulti>
<IsSerial>0</IsSerial>
<CanCancel>1</CanCancel>
<CanClose>1</CanClose>
<CanRollBack>1</CanRollBack>
<CanAssign>1</CanAssign>
<HandleRevolution>1</HandleRevolution>
<IsOverPass>0</IsOverPass>
<OverPassDay>0</OverPassDay>
<CanDocFinalize>0</CanDocFinalize>
<CanDocModify>1</CanDocModify>
<CanDocComment>1</CanDocComment>
<CanDocNumber>0</CanDocNumber>
<DispBusinessDomain></DispBusinessDomain>
<EditBusinessDomain></EditBusinessDomain>
<ThreshodeValue>1</ThreshodeValue>
<StepGUID>5b02deba-1205-446d-bf4e-e8f1a8ef5623</StepGUID>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ProcessKindGUID>d7bbe23e-0f9a-49d7-b686-57c690a5a326</ProcessKindGUID>
<XYPos>400,80</XYPos>
<StepID>2</StepID>
<StepName>部门主管审批 </StepName>
<StepType>1</StepType>
<StepTypeName>审批</StepTypeName>
<StepStatusName />
<StepStatus />
<XYPos />
</Attributes>
<Bands>
<Band>
<Attributes>
<StepGUID>5b02deba-1205-446d-bf4e-e8f1a8ef5623</StepGUID>
<AuditorScope>244ef982-beb6-4703-9bf7-e55584b926dd</AuditorScope>
<AuditorName>user02</AuditorName>
<AuditorType>5</AuditorType>
<AuditorRightValue></AuditorRightValue>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<BandGUID>dfb7c00e-568b-45aa-bc9e-7219a37830ea</BandGUID>
<BandName>user02</BandName>
<NodeStatus />
</Attributes>
</Band>
</Bands>
<Relations>
<Relation>
<Attributes>
<StepGUID>5b02deba-1205-446d-bf4e-e8f1a8ef5623</StepGUID>
<NextStepGUID>8b422683-4402-49e9-9eb1-8c07bcb0125f</NextStepGUID>
<Expression></Expression>
<IsActive>1</IsActive>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ExpressionStru></ExpressionStru>
<RelationGUID>bf771087-4192-47e9-820b-eba3ab93c72c</RelationGUID>
<Position>NodeBottom,NodeTop</Position>
<NextStepID>3</NextStepID>
<Position>NodeBottom,NodeTop</Position>
</Attributes>
</Relation>
</Relations>
</Step>
<Step>
<Attributes>
<Description></Description>
<NotifyDay>0</NotifyDay>
<IsInitMemberAssign>0</IsInitMemberAssign>
<IsMulti>0</IsMulti>
<IsSerial>0</IsSerial>
<CanCancel>1</CanCancel>
<CanClose>1</CanClose>
<CanRollBack>1</CanRollBack>
<CanAssign>1</CanAssign>
<HandleRevolution>1</HandleRevolution>
<IsOverPass>0</IsOverPass>
<OverPassDay>0</OverPassDay>
<CanDocFinalize>0</CanDocFinalize>
<CanDocModify>1</CanDocModify>
<CanDocComment>1</CanDocComment>
<CanDocNumber>0</CanDocNumber>
<DispBusinessDomain></DispBusinessDomain>
<EditBusinessDomain></EditBusinessDomain>
<ThreshodeValue>1</ThreshodeValue>
<StepGUID>8b422683-4402-49e9-9eb1-8c07bcb0125f</StepGUID>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ProcessKindGUID>d7bbe23e-0f9a-49d7-b686-57c690a5a326</ProcessKindGUID>
<XYPos>400,140</XYPos>
<StepID>3</StepID>
<StepName>人力资源经理审批</StepName>
<StepType>1</StepType>
<StepTypeName>审批</StepTypeName>
<StepStatusName />
<StepStatus />
<XYPos />
</Attributes>
<Bands>
<Band>
<Attributes>
<StepGUID>8b422683-4402-49e9-9eb1-8c07bcb0125f</StepGUID>
<AuditorScope>2e3f68e4-f853-4675-b9c5-eb4aac6d4bb3</AuditorScope>
<AuditorName>user03</AuditorName>
<AuditorType>5</AuditorType>
<AuditorRightValue></AuditorRightValue>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<BandGUID>2e4017ab-a6d7-4f5f-94f4-9e120d20b507</BandGUID>
<BandName>user03</BandName>
<NodeStatus />
</Attributes>
</Band>
</Bands>
<Relations>
<Relation>
<Attributes>
<StepGUID>8b422683-4402-49e9-9eb1-8c07bcb0125f</StepGUID>
<NextStepGUID>9c00c3eb-fa93-43ce-a75c-bb1c53f94614</NextStepGUID>
<Expression></Expression>
<IsActive>1</IsActive>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ExpressionStru></ExpressionStru>
<RelationGUID>0eab991f-7a0d-46be-bd34-20e707f8378c</RelationGUID>
<Position>NodeBottom,NodeTop</Position>
<NextStepID>4</NextStepID>
<Position>NodeBottom,NodeTop</Position>
</Attributes>
</Relation>
</Relations>
</Step>
<Step>
<Attributes>
<Description></Description>
<NotifyDay>0</NotifyDay>
<IsInitMemberAssign>0</IsInitMemberAssign>
<IsMulti>0</IsMulti>
<IsSerial>0</IsSerial>
<CanCancel>1</CanCancel>
<CanClose>1</CanClose>
<CanRollBack>1</CanRollBack>
<CanAssign>1</CanAssign>
<HandleRevolution>1</HandleRevolution>
<IsOverPass>0</IsOverPass>
<OverPassDay>0</OverPassDay>
<CanDocFinalize>0</CanDocFinalize>
<CanDocModify>1</CanDocModify>
<CanDocComment>1</CanDocComment>
<CanDocNumber>0</CanDocNumber>
<DispBusinessDomain></DispBusinessDomain>
<EditBusinessDomain></EditBusinessDomain>
<ThreshodeValue>1</ThreshodeValue>
<StepGUID>9c00c3eb-fa93-43ce-a75c-bb1c53f94614</StepGUID>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ProcessKindGUID>d7bbe23e-0f9a-49d7-b686-57c690a5a326</ProcessKindGUID>
<XYPos>400,200</XYPos>
<StepID>4</StepID>
<StepName>财务经理审批</StepName>
<StepType>1</StepType>
<StepTypeName>审批</StepTypeName>
<StepStatusName />
<StepStatus />
<XYPos />
</Attributes>
<Bands>
<Band>
<Attributes>
<StepGUID>9c00c3eb-fa93-43ce-a75c-bb1c53f94614</StepGUID>
<AuditorScope>0c13b5fe-bd1f-4ebb-a9e9-68b225c35a75</AuditorScope>
<AuditorName>user04</AuditorName>
<AuditorType>5</AuditorType>
<AuditorRightValue></AuditorRightValue>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<BandGUID>1a13e64e-928e-43f4-9cb9-0e5643b80101</BandGUID>
<BandName>user04</BandName>
<NodeStatus />
</Attributes>
</Band>
</Bands>
<Relations>
<Relation>
<Attributes>
<StepGUID>9c00c3eb-fa93-43ce-a75c-bb1c53f94614</StepGUID>
<NextStepGUID>006a8200-2a0a-4c40-9895-abab83894cd9</NextStepGUID>
<Expression></Expression>
<IsActive>1</IsActive>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ExpressionStru></ExpressionStru>
<RelationGUID>5c254157-4811-45b2-8ddc-54b0938d7939</RelationGUID>
<Position>NodeBottom,NodeTop</Position>
<NextStepID>5</NextStepID>
<Position>NodeBottom,NodeTop</Position>
</Attributes>
</Relation>
</Relations>
</Step>
<Step>
<Attributes>
<Description></Description>
<NotifyDay>0</NotifyDay>
<IsInitMemberAssign>0</IsInitMemberAssign>
<IsMulti>0</IsMulti>
<IsSerial>0</IsSerial>
<CanCancel>1</CanCancel>
<CanClose>1</CanClose>
<CanRollBack>1</CanRollBack>
<CanAssign>1</CanAssign>
<HandleRevolution>1</HandleRevolution>
<IsOverPass>0</IsOverPass>
<OverPassDay>0</OverPassDay>
<CanDocFinalize>0</CanDocFinalize>
<CanDocModify>1</CanDocModify>
<CanDocComment>1</CanDocComment>
<CanDocNumber>0</CanDocNumber>
<DispBusinessDomain></DispBusinessDomain>
<EditBusinessDomain></EditBusinessDomain>
<ThreshodeValue>1</ThreshodeValue>
<StepGUID>006a8200-2a0a-4c40-9895-abab83894cd9</StepGUID>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ProcessKindGUID>d7bbe23e-0f9a-49d7-b686-57c690a5a326</ProcessKindGUID>
<XYPos>400,260</XYPos>
<StepID>5</StepID>
<StepName>总经理审核</StepName>
<StepType>1</StepType>
<StepTypeName>审批</StepTypeName>
<StepStatusName />
<StepStatus/>
<XYPos />
</Attributes>
<Bands>
<Band>
<Attributes>
<StepGUID>006a8200-2a0a-4c40-9895-abab83894cd9</StepGUID>
<AuditorScope>72012b1f-3701-4944-b70d-7e6ef292d733</AuditorScope>
<AuditorName>user05</AuditorName>
<AuditorType>5</AuditorType>
<AuditorRightValue></AuditorRightValue>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<BandGUID>02641b2a-244e-43bc-acea-f5d2f9bde177</BandGUID>
<BandName>user05</BandName>
<NodeStatus />
</Attributes>
</Band>
</Bands>
<Relations>
<Relation>
<Attributes>
<StepGUID>006a8200-2a0a-4c40-9895-abab83894cd9</StepGUID>
<NextStepGUID>faf96013-4097-4856-ab0d-7b4f8bb2c882</NextStepGUID>
<Expression></Expression>
<IsActive>1</IsActive>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ExpressionStru></ExpressionStru>
<RelationGUID>b710235c-c072-47eb-83ae-6d804163222d</RelationGUID>
<Position>NodeBottom,NodeTop</Position>
<NextStepID>6</NextStepID>
<Position>NodeBottom,NodeTop</Position>
</Attributes>
</Relation>
</Relations>
</Step>
<Step>
<Attributes>
<Description></Description>
<NotifyDay>0</NotifyDay>
<IsInitMemberAssign>0</IsInitMemberAssign>
<IsMulti>0</IsMulti>
<IsSerial>0</IsSerial>
<CanCancel>1</CanCancel>
<CanClose>1</CanClose>
<CanRollBack>1</CanRollBack>
<CanAssign>1</CanAssign>
<HandleRevolution>1</HandleRevolution>
<IsOverPass>0</IsOverPass>
<OverPassDay>0</OverPassDay>
<CanDocFinalize>0</CanDocFinalize>
<CanDocModify>1</CanDocModify>
<CanDocComment>1</CanDocComment>
<CanDocNumber>0</CanDocNumber>
<DispBusinessDomain></DispBusinessDomain>
<EditBusinessDomain></EditBusinessDomain>
<ThreshodeValue>1</ThreshodeValue>
<StepGUID>faf96013-4097-4856-ab0d-7b4f8bb2c882</StepGUID>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ProcessKindGUID>d7bbe23e-0f9a-49d7-b686-57c690a5a326</ProcessKindGUID>
<XYPos>400,320</XYPos>
<StepID>6</StepID>
<StepName>董事长审批</StepName>
<StepType>1</StepType>
<StepTypeName>审批</StepTypeName>
<StepStatusName />
<StepStatus/>
<XYPos />
</Attributes>
<Bands>
<Band>
<Attributes>
<StepGUID>faf96013-4097-4856-ab0d-7b4f8bb2c882</StepGUID>
<AuditorScope>a8bf0155-453e-4fd7-9215-c13fa03b1254</AuditorScope>
<AuditorName>user06</AuditorName>
<AuditorType>5</AuditorType>
<AuditorRightValue></AuditorRightValue>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<BandGUID>d3ede3d4-12fe-4ec4-900f-2e8f124d288d</BandGUID>
<BandName>user06</BandName>
<NodeStatus />
</Attributes>
</Band>
</Bands>
<Relations>
<Relation>
<Attributes>
<StepGUID>faf96013-4097-4856-ab0d-7b4f8bb2c882</StepGUID>
<NextStepGUID>14073588-eb87-40a7-9de7-76a5932dac2a</NextStepGUID>
<Expression></Expression>
<IsActive>1</IsActive>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ExpressionStru></ExpressionStru>
<RelationGUID>ca61ac20-d256-47ed-8219-4c0cf277f496</RelationGUID>
<Position>NodeBottom,NodeTop</Position>
<NextStepID>7</NextStepID>
<Position>NodeBottom,NodeTop</Position>
</Attributes>
</Relation>
</Relations>
</Step>
<Step>
<Attributes>
<Description></Description>
<NotifyDay>0</NotifyDay>
<IsInitMemberAssign>0</IsInitMemberAssign>
<IsMulti>0</IsMulti>
<IsSerial>0</IsSerial>
<CanCancel>0</CanCancel>
<CanClose>0</CanClose>
<CanRollBack>0</CanRollBack>
<CanAssign>0</CanAssign>
<HandleRevolution>0</HandleRevolution>
<IsOverPass>0</IsOverPass>
<OverPassDay>0</OverPassDay>
<CanDocFinalize>0</CanDocFinalize>
<CanDocModify>0</CanDocModify>
<CanDocComment>0</CanDocComment>
<CanDocNumber>1</CanDocNumber>
<DispBusinessDomain></DispBusinessDomain>
<EditBusinessDomain></EditBusinessDomain>
<ThreshodeValue>1</ThreshodeValue>
<StepGUID>14073588-eb87-40a7-9de7-76a5932dac2a</StepGUID>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<ProcessKindGUID>d7bbe23e-0f9a-49d7-b686-57c690a5a326</ProcessKindGUID>
<XYPos>400,380</XYPos>
<StepID>7</StepID>
<StepName>结束</StepName>
<StepType>3</StepType>
<StepTypeName>结束</StepTypeName>
<StepStatusName />
<StepStatus />
<XYPos />
</Attributes>
<Bands>
<Band>
<Attributes>
<StepGUID>14073588-eb87-40a7-9de7-76a5932dac2a</StepGUID>
<AuditorScope>2a3ef8d4-5b70-401b-af6f-d3a58eedb6fe</AuditorScope>
<AuditorName>[发起人]</AuditorName>
<AuditorType>4</AuditorType>
<AuditorRightValue></AuditorRightValue>
<ProcessGUID>f2e9d822-81f6-459e-9a54-85a3646834ef</ProcessGUID>
<BandGUID>8be57a40-eae2-4ecd-893f-4f25eb25de11</BandGUID>
<BandName>[发起人]</BandName>
<NodeStatus />
</Attributes>
</Band>
</Bands>
<Relations></Relations>
</Step>
</Steps>
</Process>
然后把文件信息读取到客户端,用VML展示在页面上,效果如下图。
天啊我不知道如何把图片放编辑器里,只能放在附件中了。22.gif
下一节讲如何来展示图形。