JBPM基于Spring系统工作流平台整合4------系统中间层设计
2009-09-09 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佽鍨庨崘锝嗗瘱闂備胶顢婂▍鏇㈠箲閸ヮ剙鐏抽柡鍐ㄧ墕缁€鍐┿亜韫囧海顦﹀ù婊堢畺閺屻劌鈹戦崱娆忓毈缂備降鍔庣划顖炲Φ閸曨垰绠抽悗锝庝簽娴犻箖姊洪棃娑欐悙閻庢矮鍗抽悰顕€宕堕澶嬫櫖濠殿噯绲剧€笛囧箲閸ヮ剙钃熼柣鏂挎憸閻熷綊鏌涢…鎴濇灈妞ゎ剙鐗嗛—鍐Χ鎼粹€茬凹缂備緡鍠楅幐鎼佹偩閻戣棄纭€闁绘劕绉靛Λ鍐春閳ь剚銇勯幒鎴濐伀鐎规挷绀侀埞鎴︽偐閹绘帩浼€缂佹儳褰炵划娆撳蓟濞戞矮娌柟瑙勫姇椤ユ繈姊洪柅鐐茶嫰婢т即鏌熼搹顐e磳闁挎繄鍋涢埞鎴犫偓锝庘偓顓涙櫊閺屽秵娼幏灞藉帯闂佹眹鍊曢幊鎰閹惧瓨濯撮柛鎾村絻閸撳崬顪冮妶鍡楃仸闁荤啿鏅涢悾鐑藉Ψ瑜夐崑鎾绘晲鎼粹剝鐏嶉梺缁樻尰濞叉﹢濡甸崟顖氱疀闂傚牊绋愮花鑲╃磽娴h棄鐓愭慨妯稿妿濡叉劙骞樼拠鑼槰闂佸啿鎼崐濠毸囬弶搴撴斀妞ゆ梻銆嬪銉︺亜椤撶偛妲婚柣锝囧厴楠炴帡骞嬮弮鈧悗濠氭⒑鐟欏嫭鍎楅柛妯衡偓鐔插徍濠电姷鏁告慨鐑藉极閸涘﹥鍙忔い鎾卞灩绾惧鏌熼崜褏甯涢柍閿嬪灦閵囧嫰骞掗崱妞惧缂傚倷绀侀ˇ閬嶅极婵犳氨宓侀柛鈩冪⊕閸婄兘鏌涘┑鍡楊伀妞ゆ梹鍔曢埞鎴︽倻閸モ晝校闂佸憡鎸婚悷锔界┍婵犲洦鍤冮柍鍝勫暟閿涙粓姊鸿ぐ鎺戜喊闁告瑥楠搁埢鎾斥堪閸喓鍘搁柣蹇曞仧绾爼宕戦幘璇茬疀濞达絽鎲¢崐顖炴⒑绾懎浜归悶娑栧劦閸┾偓妞ゆ帒鍟惃娲煛娴e湱澧柍瑙勫灴閹瑩寮堕幋鐘辨闂備礁婀辨灙闁硅姤绮庨崚鎺楀籍閸喎浠虹紓浣割儓椤曟娊鏁冮崒娑氬幈闂佸搫娲㈤崝宀勬倶閻樼粯鐓曢柟鑸妼娴滄儳鈹戦敍鍕杭闁稿﹥鐗犲畷婵嬫晝閳ь剟鈥﹂崸妤€鐒垫い鎺嶈兌缁犲墽鈧厜鍋撳┑鐘辩窔閸嬫鈹戦纭烽練婵炲拑绲垮Σ鎰板箳閹冲磭鍠撻幏鐘绘嚑閼稿灚姣愰梻鍌氬€烽懗鑸电仚濠电偛顕崗妯侯嚕椤愩倖瀚氱€瑰壊鍠栧▓銊︾節閻㈤潧校缁炬澘绉瑰鏌ュ箵閹烘繄鍞甸柣鐘烘鐏忋劌顔忛妷褉鍋撶憴鍕碍婵☆偅绻傞~蹇涙惞閸︻厾锛滃┑鈽嗗灠閹碱偊锝炲鍥╃=濞达綁顥撻崝宥夋煙缁嬪灝鏆遍柣锝囧厴楠炲鏁冮埀顒傜不婵犳碍鍋i柛銉戝啰楠囬悗瑙勬尭缁夋挳鈥旈崘顔嘉ч柛鈩兠棄宥囩磽娴e壊鍎愰柛銊ュ缁顓兼径瀣偓閿嬨亜閹哄秶顦︾€殿喖鐏濋埞鎴﹀煡閸℃浠梺鍛婎焼閸曨収娲告俊銈忕到閸燁垶宕愰崹顐e弿婵☆垳鍘ф禍楣冩倵濮樼偓瀚�

目的:为了可以和任一第三方工作流平台(wfmc标准)整合。
中间层BEAN类定义
/**
* 工作流流程定义类,也就是某一工单对应的模型定义
* @author Wang YiSong
*/
public class WfProcessDef implements Serializable {
long processDefId; //流程定义Id
String processDefName; //流程定义名称
……
}
/**
* 流程定义中的节点,也就是流程扭转过程中的具体操作的抽象
* @author Wang YiSong
*/
public class WfNodeDef implements Serializable {
long nodeId; //节点定义id
String nodeName; //节点定义名称
……
}
/**
* 工作流流程实例类,一个工单对应一个流程实例
* @author Wang YiSong
*/
public class WfProcessIns implements Serializable {
long processInsId; //流程实例Id
long processDefId; //流程定义Id
……
}
/**
* 工作流任务实例类,具体流程实例每一个节点对应的具体任务,一个节点可能对应多个任务实例(如:会签,或者一个节点需要多个顺序的任务完成)
* @author Wang YiSong
*/
public class WfTaskIns implements Serializable {
long taskInsId; //任务实例Id
String taskInsName; //任务实例名称
……
}
工作流中间层接口定义
/**
* 工作流系统调用接口,系统调用该接口,不直接调用第三方工作流引擎提供的api
* 这样系统和任一第三方流程引擎整合可以将引擎之间的差异通过该接口定义屏蔽,也就是说该接口对于系统是透明的
*
* @author Wang YiSong
*/
public interface WfManageService {
/**
* 部署发布流程定义
*/
public void deployWfProcessDef(ZipInputStream zStream);
/**
* 获取所有流程定义
*/
public List getAllWfProcessDefs();
/**
* 根据流程定义名称创建一个流程实例.
*/
public WfProcessIns createWfProcessIns(String wfProcessDefName);
/**
* 启动流程
*/
public void startWfProcessIns(long wfProcessInsId);
/**
* 根据用户Id获取待办任务,返回WfTaskIns对象的集合
*/
public List getWfTaskInsLsByUserId(String userId);
/**
* 更新流程全局变量和相关节点有关变量
*/
public void setRelevantVariable(long wfProcessInsId, HashMap<String, String> varMap);
/**
* 启动执行任务,在实际业务中类似签收的作用
*/
public void startWfTaskIns(long wfTaskInsId);
/**
* 完成任务,当前任务实例的结束,下一个节点的初始化
*/
public void completeWfTaskIns(long wfTaskInsId);
......
}
文章来源:http://wangyisong.javaeye.com/blog/353659
- ››基于IP地址的vsftp服务器
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››Spring源码学习-含有通配符路径解析(上)
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››基于Windows Azure的云计算应用设计
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
- ››基于SolidWarks齿轮机构的运动分析与仿真
- ››基于Windwos Server 2008故障转移群
- ››基于JavaScript的REST客户端框架
赞助商链接