分享
 
 
 

OSWorkflow深入分析 - 重新定义Configuration接口

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

在OSWorkflow中最让人恼火的就是它的接口定义!我会就这些接口的混乱展开一系列的分析,今天先说说Configuration接口

偶继承了它的Configuration接口

import com.company.engine.workflow.store.IWorkFlowStore;

import com.opensymphony.workflow.StoreException;

import com.opensymphony.workflow.config.Configuration;

import com.opensymphony.workflow.spi.WorkflowStore;

public interface IConfiguration extends Configuration

{

/**

* @deprecated getIWorkflowStore()

*/

WorkflowStore getWorkflowStore() throws StoreException;

/**

* return WorkFlowStore which implements the interface of IWorkFlowStore

* @return

* @throws StoreException

*/

IWorkFlowStore getIWorkflowStore() throws StoreException;

}

你可能奇怪我为何要继承它的接口(肯定是Bad smell),原因如下,

IWorkFlowStore 接口定义

import com.opensymphony.workflow.StoreException;

import com.opensymphony.workflow.spi.Step;

import com.opensymphony.workflow.spi.WorkflowEntry;

import com.opensymphony.workflow.spi.WorkflowStore;

public interface IWorkFlowStore extends WorkflowStore

{

public Step createCurrentStep(WorkflowEntry _entry , Step _step) throws StoreException;

}

WorkflowStore接口定义

/**

* Persists a step with the given parameters.

*

* @param entryId The workflow instance id.

* @param stepId the ID of the workflow step associated with this new

* Step (not to be confused with the step primary key)

* @param owner the owner of the step

* @param startDate the start date of the step

* @param status the status of the step

* @param previousIds the previous step IDs

* @return a representation of the workflow step persisted

*/

public Step createCurrentStep(long entryId, int stepId, String owner, Date startDate, Date dueDate, String status, long[] previousIds) throws StoreException;

看到了吧?

其实我只是希望在createCurrentStep时按照OO的方法执行,而不是传递那些"Bad Smell"的参数,而OSWorkflow中的WorkflowStore是需要Configuration来获取的,此时为了增加一个看似合理的方法,需要分别继承Configuration与WorkflowStore;这还没有完,你需要实现一个Configuration实现!!

import com.company.engine.workflow.store.IWorkFlowStore;

import com.opensymphony.workflow.StoreException;

import com.opensymphony.workflow.config.DefaultConfiguration;

import com.opensymphony.workflow.spi.WorkflowStore;

public class DefaultIConfiguration extends DefaultConfiguration implements IConfiguration

{

public static DefaultIConfiguration INSTANCE = new DefaultIConfiguration();

private transient IWorkFlowStore store = null;

/**

* @deprecated getIWorkflowStore()

*/

public WorkflowStore getWorkflowStore() throws StoreException

{

return null;

}

public IWorkFlowStore getIWorkflowStore() throws StoreException

{

if (store == null)

{

String clazz = getPersistence();

try

{

store = (IWorkFlowStore) Class.forName(clazz).newInstance();

}

catch (Exception ex)

{

throw new StoreException("Error creating store", ex);

}

store.init(getPersistenceArgs());

}

return store;

}

}

总结

1。OSWorkflow与WorkflowStore接口的关系比较的微妙,它需要借助于Configuration接口的实现来获取到实际的WorkflowStore对象。

2。由于这样的一种微妙关系,对WorkflowStore接口的扩展必将连带着需要扩展Configuration接口,而产生这样的"果冻效应"的罪魁祸首就是由于WorkflowStore接口与Configuration接口耦合的太紧。

3。OSWorkflow并没有很好的遵守OO的设计规则,尤其在它的参数传递上,非常的差!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有