|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-07-03
关于Domain Model的讨论已经非常多了,炒炒冷饭,这里是自己的一些做法。 public class WorkitemManager {
private WorkItemDAO workItemDAO;
public void setWorkItemDAO(WorkItemDAO workItemDAO) {
this.workItemDAO = workItemDAO;
}
/**
* 提交工作项
* @param workitemId 工作项ID
*/
public void commitWorkitem(String workitemId){
WorkItem workitem = workItemDAO.getWorkItem(workitemId);
//当前工作项结束
workitem.complete();
int sID = workitem.getSequenceId();
//找到所对应的节点
InstActivity instActivity=workitem.getInstActivity();
//查找是否存在下一工作项
WorkItem sequenceWorkitem = workItemDAO.findSequenceWorkItem(instActivity.getId(), sID + 1);
//如果不存在则触发节点流转
if (sequenceWorkitem == null) {
instActivity.signal();
}
//否则把下一工作项激活
else {
sequenceWorkitem.setExecutive();
}
}
}
public class Workitem{
private int state = WorkitemInfo.PREPARE;
/**
* 委派工作项
*/
public void commission() {
if (state != WorkitemInfo.EXECUTE && state != WorkitemInfo.SIGNINED
&& state != WorkitemInfo.TOREAD&& state != WorkitemInfo.SUSPEND)
throw new WorkflowException(Messages.CANNOT_ALTER_WORKITEM_STATE);
setState(WorkitemInfo.COMMISSIONED);
setCommitted(new Timestamp(System.currentTimeMillis()));
}
/**
* 完成工作项
*/
public void complete() {
if (state != WorkitemInfo.SIGNINED)
throw new WorkflowException(Messages.CANNOT_ALTER_WORKITEM_STATE);
setState(WorkitemInfo.COMPLETE);
setCompleted(new Timestamp(System.currentTimeMillis()));
}
}
public class WorkitemManager {
private WorkItemDAO workItemDAO;
public void setWorkItemDAO(WorkItemDAO workItemDAO) {
this.workItemDAO = workItemDAO;
}
/**
* 提交工作项
* @param workitemId 工作项ID
*/
public void commitWorkitem(String workitemId){
WorkItem workitem = workItemDAO.getWorkItem(workitemId);
//当前工作项提交
workitem.commit();
}
}
public class Workitem{
/**
* 提交工作项
*/
public void commit() {
if (state != WorkitemInfo.EXECUTE && state != WorkitemInfo.SIGNINED
&& state != WorkitemInfo.TOREAD&& state != WorkitemInfo.SUSPEND)
throw new WorkflowException(Messages.CANNOT_ALTER_WORKITEM_STATE);
setState(WorkitemInfo.COMMISSIONED);
setCommitted(new Timestamp(System.currentTimeMillis()));
int sID = workitem.getSequenceId();
WorkItemDAO workItemDAO=(WorkItemDAO)Container.getBean("workItemDAO");
//查找是否存在下一工作项
WorkItem sequenceWorkitem = workItemDAO.findSequenceWorkItem(instActivity.getId(), sID + 1);
//如果不存在则触发节点流转
if (sequenceWorkitem == null) {
instActivity.signal();
}
//否则把下一工作项激活
else {
sequenceWorkitem.setExecutive();
}
}
}
public class Workitem{
/**
* 提交工作项
*/
public void commit() {
if (state != WorkitemInfo.EXECUTE && state != WorkitemInfo.SIGNINED
&& state != WorkitemInfo.TOREAD&& state != WorkitemInfo.SUSPEND)
throw new WorkflowException(Messages.CANNOT_ALTER_WORKITEM_STATE);
setState(WorkitemInfo.COMMISSIONED);
setCommitted(new Timestamp(System.currentTimeMillis()));
WorkitemExecutor workitemExecutor=(WorkitemExecutor)Container.getBean("workitemExecutor");
workitemExecutor.commitWorkitem(this);
}
}
public class WorkitemExecutor {
private WorkItemDAO workItemDAO;
public void setWorkItemDAO(WorkItemDAO workItemDAO) {
this.workItemDAO = workItemDAO;
}
/**
* 提交工作项
* @param workitemId 工作项ID
*/
public void commitWorkitem(Workitem workitem){
int sID = workitem.getSequenceId();
//找到所对应的节点
InstActivity instActivity=workitem.getInstActivity();
//查找是否存在下一工作项
WorkItem sequenceWorkitem = workItemDAO.findSequenceWorkItem(instActivity.getId(), sID + 1);
//如果不存在则触发节点流转
if (sequenceWorkitem == null) {
instActivity.signal();
}
//否则把下一工作项激活
else {
sequenceWorkitem.setExecutive();
}
}
}
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-04
引用 WorkItemDAO workItemDAO=(WorkItemDAO)Container.getBean("workItemDAO");
very very very bad smell. : ) |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-03
Norther 写道 引用 WorkItemDAO workItemDAO=(WorkItemDAO)Container.getBean("workItemDAO");
very very very bad smell. : ) why? |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-04
very very very bad smell.
Agree! |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-04
确实是一个bad smell.当Domain Model代码中大量出现后,这种造型是很恐怖的。目前采取了一种处理方式:给所有Domain Model继承一个父类,在父类里集中管理所有Domain Model所依赖的services,在父类里进行造型。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-04
ronghao 写道 确实是一个bad smell.当Domain Model代码中大量出现后,这种造型是很恐怖的。目前采取了一种处理方式:给所有Domain Model继承一个父类,在父类里集中管理所有Domain Model所依赖的services,在父类里进行造型。
也不好吧 实体类很可能会出现继承的情况,我觉得不如把实体类包装一下,合理的运用一下泛型,会省很多事 |
|
| 返回顶楼 | |
浏览 881 次






