分享
 
 
 

工作流:第一次发版,设计总结

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

整体

面向接口:消息系统,持久系统等,其实现都是可替换的,主干代码对实际的消息系统或持久系统等一无所知

组件复用:Visio对象及Visio模具的使用目前来看取得了极好的效果,极大缩短开发周期、增强功能、并自动将数据与视图进行了相当程度的分离,并且比Jawe等设计器漂亮多了

基于SOA:平台所有接口都是通过WebService提供的,提高了复用和跨平台能力;实际上,平台是.Net开发的,而目前支撑的几个应用则是J2EE的

遵循标准:对WfMC的遵循使开发组少走了不少弯路,因标准即使不是最佳方案,亦已对常见问题深思熟虑,对缺少业务专家的开发组来说有相当的指导作用;并且开源软件提供了参考实现,与开源软件的互操作验证了产品的正确性

模块

通用查询接口:Decorate/Composite

实现手段近似,意图不同

/// <summary>

/// 通用的条件接口,使用Object类型的参数,将类型安全检查踢给子类

/// </summary>

public interface ICondition {

/// <summary>

/// 返回传入对象是否满足本条件

/// </summary>

/// <param name="obj">传入对象</param>

/// <returns>传入对象是否满足本条件</returns>

bool Calculate(Object obj);

/// <summary>

/// 返回本条件的字符串表示,用于WebService的参数传递

/// </summary>

/// <returns>本条件的字符串表示</returns>

String GetString();

/// <summary>

/// 将传入的字符串还原为条件对象

/// </summary>

/// <param name="condition">原始条件对象的字符串表示</param>

void SetString(String condition);

}

[Serializable]

public abstract class BaseCondition : ICondition{

//一些缺省实现,定义了几个Template Method

//…

}

/// <summary>

/// 通用的全部条件接口

/// </summary>

[Serializable]

public class AllCondition:BaseCondition {

public override bool Calculate(Object obj){

return true;

}

}

/// <summary>

/// 通用的与条件接口,当所有条件都为true时返回true

/// </summary>

[Serializable]

public class AndCondition:BaseCondition {

private IList conditions;

public AndCondition(IList conditions){

this.conditions = conditions;

}

public AndCondition(){

this.conditions = null;

}

public override bool Calculate(Object obj) {

foreach(ICondition condition in conditions){

if( !condition.Calculate(obj) ){

return false;

}

}

return true;

}

}

/// <summary>

/// 通用的或条件接口,当所有条件都为true时返回true

/// </summary>

[Serializable]

public class OrCondition:BaseCondition {

private IList conditions;

public OrCondition(IList conditions){

this.conditions = conditions;

}

public OrCondition(){

this.conditions = null;

}

public override bool Calculate(Object obj) {

foreach(ICondition condition in conditions){

if( condition.Calculate(obj) ){

return true;

}

}

return false;

}

}

/// <summary>

/// 通用的非条件接口,返回与原条件相反的结果

/// </summary>

public class NotCondition:BaseCondition {

private ICondition condition;

public NotCondition(ICondition condition){

this.condition = condition;

}

public NotCondition(){

this.condition = null;

}

public override bool Calculate(Object obj) {

return !condition.Calculate(obj);

}

}

通用工作流模型:Abstract Factory

虽说XPDL是标准,但各个厂家的扩展属性并不相同,流程设计器和引擎需要兼容各个厂家的模型,就需要用Abstract Factory,各家的工厂生产各自的对象体系,当然接口相同,流程设计器和引擎只对接口操作

public interface ModelFactory {

PDPackage CreatePackage();

PDPackageHeader CreatePackageHeader();

PDProcesses CreateProcesses();

PDExtendedAttributes CreateExtendedAttributes();

PDTransitions CreateTransitions();

PDProcess CreateProcess();

PDActivitySet CreateActivitySet();

PDDataField CreateDataField();

//……

//…

}

public class JaweModelFactory:ModelFactory {

public PDProcess CreateProcess() {

return new JawePDProcess(this);

}

//……

//…

}

组织适配器:Adaptor

流程设计器和引擎和流程监控工具等看到的只是系统内部定义的类似Party模式的组织模型,外界实际的组织模型需要以单独编写适配器的形式接入到平台中来;如我们开发时的组织数据存放在Xml文件中,几个实际应用的组织数据存放在公司的数据库中,我们用两个适配器将原有模型适配进来,使用时配置一下即可:

<organization_adaptors>

<add key="current" value="usa_db" />

<add key="usa_xml" value="Nucleus.Organization.UseModel.UseAdaptor" />

<add key="usa_db" value="Nucleus.Organization.UseMisModel.UseMisAdaptor" />

</organization_adaptors>

待改进之处极多,优先的几个:

微内核:将引擎重构为一个简单的内核与围绕着内核的一组适配器

分离调度系统与信息系统:查询时应不需要引擎的参与,引擎负责流程调度,信息系统应承担的工作需剥离开来,提高性能

提供控制台:改变手工修改配置文件、注册适配器的局面

开源了目前使用的XPDL解析器,希望能得到反馈

http://cosoft.org.cn/projects/xpdlparser

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有