flex解析osworkflow的定义文件实现思路 :
充分利用flex的ArrayCollection 和 Dictionary 去解析其XML
1、osworkflow定义文件如下:XML头部已去掉 后台保存的时候再加上
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE workflow PUBLIC "-//OpenSymphony Group//DTD OSWorkflow 2.8//EN" "http://www.opensymphony.com/osworkflow/workflow_2_8.dtd">
<workflow>
<initial-actions>
<action id="100" name="启动请假申请工作流">
<results>
<unconditional-result old-status="Finished"
status="Underway" step="1" owner="${caller}"/>
</results>
</action>
</initial-actions>
<steps>
<step id="1" name="请假申请">
<actions>
<action id="1" name="提交需求申请" view="TEST1">
<results>
<result old-status="Finished" status="Underway" step="3" owner="${caller}">
<conditions type="AND">
<condition type="beanshell">
<arg name="script">
Integer.parseInt(transientVars.get("dayCount"))>=3
</arg>
</condition>
</conditions>
<post-functions>
<function type="beanshell">
<arg name="script">
System.out.println("步骤 1 提交需求申请满足条件结果 需boss审批...");
</arg>
</function>
</post-functions>
</result>
<unconditional-result old-status="Finished" status="Underway" step="2" owner="${caller}"/>
</results>
</action>
</actions>
</step>
<step id="2" name="经理审批">
<actions>
<action id="2" name="经理审批审批请假申请" view="TEST2">
<restrict-to>
<conditions type="AND">
<condition type="class">
<arg name="class.name">
com.opensymphony.workflow.util.StatusCondition
</arg>
<arg name="status">Underway</arg>
</condition>
</conditions>
</restrict-to>
<results>
<result old-status="Finished" status="Underway" step="1" owner="${caller}">
<conditions type="AND">
<condition type="beanshell">
<arg name="script">
transientVars.get("opinion")=="N"
</arg>
</condition>
</conditions>
<post-functions>
<function type="beanshell">
<arg name="script">
System.out.println("步骤 2 请假申请审核经理审批没有通过,驳回到第一环节 ...");
</arg>
</function>
</post-functions>
</result>
<unconditional-result old-status="Finished" status="Underway" step="4" owner="${caller}"/>
</results>
</action>
</actions>
</step>
<step id="3" name="老板审批">
<actions>
<action id="3" name="老板审批" view="TEST3">
<restrict-to>
<conditions type="AND">
<condition type="class">
<arg name="class.name">
com.opensymphony.workflow.util.StatusCondition
</arg>
<arg name="status">Underway</arg>
</condition>
</conditions>
</restrict-to>
<results>
<result old-status="Finished" status="Underway" step="1" owner="${caller}">
<conditions type="AND">
<condition type="beanshell">
<arg name="script">
transientVars.get("opinion")=="N"
</arg>
</condition>
</conditions>
<post-functions>
<function type="beanshell">
<arg name="script">
System.out.println("步骤3 请假申请审核老板审批没有通过,驳回到第一环节 ...");
</arg>
</function>
</post-functions>
</result>
<unconditional-result old-status="Finished" status="Underway" step="4" owner="${caller}"/>
</results>
</action>
</actions>
</step>
<step id="4" name="结束"></step>
</steps>
</workflow>
2、通过flex解析后生成流程图
(tip:界面上的节点可以任意拖动。后续需要保存其节点坐标入库。默认的坐标展示通过计算出来的)
3、目前已实现上述功能 。接下来通过flex实现osworkflow的节点定义 通过界面来配置osworkflow的定义文件并发布到服务器供流程引擎读取并能发起这个流程
4、代码我共享在csdn中 有需要的同道中人可以去下载 这demo花了两天时间 所以下载这文件要5个辛苦积分。csdn木有积分了 发此贴以求分。。。。靠技术求分不丢人。。