CN101770610A - 用以与不同目标工作流系统进行匹配的方法 - Google Patents

用以与不同目标工作流系统进行匹配的方法 Download PDF

Info

Publication number
CN101770610A
CN101770610A CN200810247408A CN200810247408A CN101770610A CN 101770610 A CN101770610 A CN 101770610A CN 200810247408 A CN200810247408 A CN 200810247408A CN 200810247408 A CN200810247408 A CN 200810247408A CN 101770610 A CN101770610 A CN 101770610A
Authority
CN
China
Prior art keywords
workflow
class
public
string
link
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN200810247408A
Other languages
English (en)
Inventor
傅新奇
张林先
孟宪成
姜维权
左子凯
王春杰
童伟进
丁金刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING FORALL SOFTWARE TECHNOLOGY Co Ltd
Original Assignee
BEIJING FORALL SOFTWARE TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING FORALL SOFTWARE TECHNOLOGY Co Ltd filed Critical BEIJING FORALL SOFTWARE TECHNOLOGY Co Ltd
Priority to CN200810247408A priority Critical patent/CN101770610A/zh
Publication of CN101770610A publication Critical patent/CN101770610A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明为一种用以与不同目标工作流系统进行匹配的方法,其包括:将目标工作流系统的调用接口分别与相应的实现类相对应;设置接口类,其与外部的调用命令相对应;将外界的调用命令通过对应的接口类传递对应的实现类;所述的接口类保存实现类的引用,通过所述的实现类引用对应的目标工作流系统的调用接口实现匹配和控制。

Description

用以与不同目标工作流系统进行匹配的方法
技术领域
本发明涉及的是一种工作流匹配方法,特别涉及的是用以与不同类型的现有目标工作流系统进行匹配的方法,用于屏蔽因工作流系统差异对于工作流客户端应用的影响。
背景技术
工作流管理是一个被业界广泛应用并迅速发展的技术,它的主要特点是使计算机上的业务处理流程自动化,使相应的人以及各种应用工具相互之间协调,以完成某项工作。工作流管理可以在各种办公环境(如行政管理、保险业、银行业以及司法等)以及工业和制造等领域得到广泛应用,其目的是为了让合适的人或软件在恰当的时间执行正确的工作,它被誉为信息系统的后勤。
工作流技术经常和业务过程重组(Business Process Re-engineering,BPR)紧密相连。BPR所关心的是对组织机构内部的核心业务过程进行评价、分析、建模、定义以及操作上的实现。工作流技术提供了把业务过程逻辑从具体的IT工具的操作中分离出来的方法,并且还可以在以后把改变的过程逻辑规则添加进去。
工作流管理将计算机科学的各种技术、原则和方法集成在一起,他是一个非常有活力的研究领域。目前,世界上已有许多研究工作流管理的公司和组织,并且已推出许多商品化的产品(目标工作流系统),如ActionWorkflow System(Action Technologies公司出品),FlowMark(IBM公司),WorkFlo BusinessSystem(FileNet公司),OmniDesk(Sigma Imaging System公司),Staffware(Staffware公司),Regatla(Fujitsu公司),FlowPath(Bull′s Image Works),TeamFlow(ICL),ViewStar(ViewStar公司),Quality at Work(Quality DecisionManegement)等。
但目前工作流管理发展的状况非常类似于七十年代初,关系数据模型和E-R模型出现以前的数据库管理系统,大家各持己见,没有一个统一的标准,所开发的产品互相之间大部分也不兼容,使得很多用户不愿使用商品化的工作流管理产品。
为了使工作流的概念和接口标准化,工作流管理组织WfMC制定了工作流管理系统组织结构的参考模型,请参阅图1所示,并陆续给出了大部分接口标准。但是这些标准仅仅是停留在技术层次,而且重点放在语法而不是语义上,而在概念层次上,则至今仍没有统一的意见。例如,在接口1的规范中,就没有关于状态及基本构造块(如AND/OR)的正式描述,这样就给使用带来了极大的不便。
鉴于上述缺陷,本发明创作者经过长期的研究和实践终于获得了本创作。
发明内容
本发明的目的在于,提供一种用以与不同目标工作流系统进行匹配的方法,用以克服上述缺陷。
为实现上述目的本发明采用的技术方案在于,提供一种用以与不同目标工作流系统进行匹配的方法,其包括:
将目标工作流系统的调用接口分别与相应的实现类相对应;
设置接口类,其与外部的调用命令相对应;
将外界的调用命令通过对应的接口类传递对应的实现类;
所述的接口类保存实现类的引用,通过所述的实现类引用对应的目标工作流系统的调用接口实现匹配和控制。
其中,所述的接口类包括:工作流引擎类、工作流模版类和工作流实例类。
较佳的,所述的工作流引擎类对工作流总体控制,用以定义、查询工作流的模版信息,创建新的工作流实例、执行各项查询。
较佳的,所述的工作流模版类代表一个定义好的工作流程,用以查询模版定义中的每一环节信息,流程顺序,分支条件信息和时限信息。
对于工作流模版类而言,针对每个模版的环节信息还设置有工作流模版环节子类,其作为工作流模版的类成员,所述的工作流模版环节子类通过系列get/set方法取存环节属性信息,具体的实现则交给后台的实现类去完成。
其中,所述的工作流实例类代表已经创建的工作单,用以查询,当前任务任何环节的信息,流程顺序、分支条件信息,办理人员、实际时间、时限信息;从而对工作流实现控制。
对于工作流实例类而言,针对每个工作流实例中的每一环节的信息还设置有工作流活动子类,其作为工作流实例类的类成员,所述的工作流活动子类具有get/set方法取存环节属性信息,以及提供大量方法对当前活动、当前任务进行控制。
与现有技术比较本发明的有益效果在于,克服了由于底层目标工作流系统的变更导致的业务层改动,保证在目标工作流系统被替换的情况下,客户端可以在不作任何修改的情况下正常运行,从而增加了人机界面的通用性。
附图说明
图1为工作流管理组织WfMC制定了工作流管理系统组织结构的参考模型;
图2为本发明用以与不同目标工作流系统进行匹配的方法的流程图;
图3为本发明用以与不同目标工作流系统进行匹配的方法对应的物理结构框图;
具体实施方式
以下结合附图,对本发明上述的和另外的技术特征和优点作更详细的说明。
本实施例是以应用于电力、自来水行业营销系统为例,我们根据WfMC参考模型标准,使用面向对象技术,定义一组相互联系的接口类,应用系统客户端利用这组标准的接口类图对目标工作流系统功能进行调用完成工作流程控制相关的服务。
当作为系统支持平台的目标工作流系统被替换时,应用系统客户端仍通过相同的接口类进行工作流服务调用。这样“标准接口接口类”就好比一个通用的“电脑主板”,更换目标工作流系统就好比更换CPU,只要“一插即用”。这就是本发明的基本思路。
关于这些接口类是针对具体标准工作流系统的实现,我们采用Bridge“桥”模式封装到一系列独立的实现类中,这些实现类根据实际“目标工作流系统”的不同情况,通过接口变换、嫁接等方式完成目标“工作流接口类”要求的功能。
请参阅图2所示,其为本发明用以与不同目标工作流系统进行匹配的方法的流程图;所述的本发明用以与不同目标工作流系统进行匹配的方法包括的步骤为:
步骤a:将目标工作流系统的调用接口分别与相应的实现类相对应;
步骤b:设置接口类,其与外部的调用命令相对应;
步骤c:将外界的调用命令通过对应的接口类传递对应的实现类;
步骤d:所述的接口类保存实现类的引用,通过所述的实现类引用对应的目标工作流系统的调用接口实现匹配和控制。
所述的接口类我们可以采用JAVA语言进行编写,其包括:工作流引擎类WfEngine、工作流模版类WfTemplate和工作流实例类WfTask。
其中,所述的工作流引擎类WfEngine是对工作流系统的总体控制,其可以:定义、查询工作流模版信息,创建新的工作流实例,执行各类查询(过程是创建condition类,然后指定查询条件,接着调用引擎类的不同查询方法最后对查询结果(工作流实例的对象序列)进行处理。
所述的工作流模版类WfTemplate代表一个已经定义好的工作流程(模版),时限信息,还可以直接发起新流程(其是通过后台实现的,调用工作流引擎类WfEngine,并将此类作为参数传入);为了描述工作流模版类WfTemplate中的每个环节的信息,还引入工作流模版环节子类WfTache,其作为工作流模版类WfTemplate的类成员(实例变量)。工作流模版环节子类WfTache主要通过系列get/set方法取存环节属性信息,如环节代码、经办岗位、时限等信息,具体的实现则交给后台的实现类去完成。
所述的工作流实例类WfTask代表已经创建一个的工作单,也就是工作流模版的实例化。其可以查询:当前任务任何环节(活动)的信息、流程顺序、分支条件信息、办理人员、实际时间以及时限信息,同时通过所述的工作流实例类WfTask可对工作流实现如下控制:废除一个工作流killTask()、领取工作单acceptTask()、直接跳转(向下传递)goNext()、选择跳转jumpTo()以及归档goNext()等等。
为了工作流实例类WfTask(任务)中的每个环节(活动)的信息,引入工作流实例环节子类WfActivity,其作为工作流实例类WfTask的类成员(实例变量)。所述的工作流实例环节子类WfActivity主要不但有get/set方法取存环节属性信息,如环节代码、经办岗位以及时限等信息,而且提供大量方法对当前活动、当前任务进行控制(具体的实现还是由后台的实现类完成的)。
为了屏蔽不同目标工作流系统的差异,还引入了实例状态类WfTaskState、环节状态类WfActivityState、工作流变量类WfVar等定义类。
为实现通用化的基于工作流系统的查询,本发明还设计了查询条件类WfQueryCond、查询条件项类WfQueryCondItem、查询主题类WfQueryCondSubject等类。
请参阅图3所示,其为本发明用以与不同目标工作流系统进行匹配的方法对应的软件结构框图;其包括:人机接口程序3,其用于和相应的界面程序相对应;目标工作流系统1,其通常其可以是现有的成熟产品,并符合工作流管理联盟给出的工作流定义,具有工作流调用接口11;还包括最重要的结构是用以与不同目标工作流系统进行匹配结构2,其包括:接口类21和实现类22,其中所述的接口类21和所述的实现类22之间相联系,所述的实现类22和所述的工作流调度接口11相结合,对于不同的目标工作流系统1而言仅仅是对所述的实现类22做相应的改变,并不影响接口类21和人机接口程序3,从而客户端代码调用目标工作流系统1服务时具有统一性。保证在客户端不作改变的情况下服务端的目标工作流系统1可以进行改变。
正如上面所描述的,对于本发明的用以与不同目标工作流系统进行匹配的方法中接口类和实现类是非常重要的,对于此我们仍以JAVA语言为例来描述上述相应类和子类的实现,但是其仅是解释,并不是限定作用。
所述标准接口中的工作流引擎类WfEngine具体定义如下:
    public class WfEngine
    {public static WfEngine getInstance();//得到工作流引擎的唯一实例,这是
创建这个类的实例的唯一办法
    public WfTemplate  getTemplate(String operatorId,String templateId);
//读取某个工作流模版
    public WfTask newTask(String operatorId,String templateId)//根据模板初始
化一个全新的工作流任务
    public WfTask loadTask(String operatorId,String templateId,String taskId)//
加载一个已经存在的工作流
    public int killTask(String operatorId,String templateId,String taskId)
    public int killTask(String operatorId,WfTask task);//工作流任务作废
    public int deleteTask(String operatorId,String templateId,String taskId)
    public int deleteTask(String operatorId,WfTask task)//从数据库彻底删除一
个工作流任务(只在业务层后台调用)
    public List getOperatorsForPost(String post)//某个岗位的操作员列表
    public List getOperatorsForDept(String dept)//某个部门的操作员列表
    public List getToDoList(String operatorId,WfQueryCond condition)//获得当
前操作员待办活动列表,就是说当前任务的当前环节所要求的岗位、部门或指定
人员,与当前操作员匹配。
    public List getToDoListAll(String operatorId,WfQueryCond condition)//获
得满足特定条件的所有活动列表,指定操作员必须有查询权限。
    public List getSpecialToDoList(String operatorId,String specialTacheId)
    public List getSpecialToDoList(String operatorId,String specialTacheId,
WfQfuery Cond condition)//返回″位于特定环节的活动”的集合,用于批量处理,
比如“派工”
    public List getTasks(WfQueryCond condition)//工作任务信息查询
    public List getLateActivities(WfQueryCond condition)//查询存在超时的活动
的工作任务,用于查询和考核
    public List getLateActivitiesDoing(WfQueryCond condition)//查询办理中的
环节超时的活动清单,用于任务督办
    public List getLateActivitiesNotify(WfQueryCond condition)//查询即将超时
的活动清单,用于超时警示
所述标准接口类中的工作流模版类WfTemplate具体定义如下:
     public class WfTemplate
    { public List getTaches()//得到本模板的环节对象(列表)
       public WfTache loadTache(String tacheId)//加载指定的环节,得到环节对象
       public List getSysVars()//本模板的工作流变量(系统级)列表
       public List getInstanceVars()//本模板的工作流变量(实例级)列表
       public Date getCreateDate()//创建时间
       public String getCreateOperator()//创建人
       public String getName()//模板名称
       public String getTemplateId()
       public String getVersion()//版本(一个模板ID可对应多个版本,对某些工
作流系统可能无用)
        private WfTemplateImp imp;
    }
   所述的工作流模版环节子类WfTache具体定义如下:
   public class WfTache
{WfTache(String templateID,String tacheID)
public String getTemplateId()//获取所在流程模版的ID
     public void setTemplateId(String templateID)
     public List getNextTache()//当前环节的后续环节(对象)列表
     public List getPrevTache()//当前环节的前序环节(对象)列表
     public List getJumpableDestTaches()//当前环节可以跳转到的环节(对象)
列表
     public boolean isLast()//是否最后环节
     public String getName()//环节名
     public void setName(String name)
     public String getRecvDept()//处理部门
     public void setRecvDept(String recvdept)
     public String getRecvPerson()//特定人员
     public void setRecvPerson(String recvPerson)
     public String getRecvPost()//处理岗位
     public void setRecvPost(String recvPost)
     public String getTacheId()
     public void setTacheId(String tacheId)
     public long getTimeLimit()//处理时限
     public void setTimeLimit(int timeLimit)
     private WfTacheImp imp;
}
  所述标准接口类中的工作流实例类WfTask具体定义如下:
  public class WfTask
  {public int acceptTask(String operatorId,WfActivity activity)
 public int acceptTask(String operatorId,String activityId)//领取工作流任务(防止
同岗位的其他人员再处理这个任务)
   public int goNext(String operatorId,String activityId)//直接向下传递
    public int jumpTo(String operatorId,String activityIdsrc,
    String activityIddes)throws WfException//选择跳转传递
    public WfActivity loadActivity(String activityId)throws WfException//根据
给定的ActivityId得到一个Activity实例
    public List getAllActivities(WfActivityState state)//读取用户指定的工作流
的所有节点,只是为了呈现用,不考虑数据陈旧和缓冲.
    public List getCurrentActivities()//获取当前的活动对象。由于可能存在多个
当前环节,因此返回list
     public List getLateActivities(String operatorId,WfActivityState state)//任务
超时的活动列表
     public WfActivity getAcceptedActivity()//操作员已经领取的活动(必定是
当前活动)
     public boolean isAccepted(String activitiId)//该任务的指定活动是否已经被
领取
     public boolean isAccepted()//该任务的当前活动是否已经领取
     public int setVar(Object varValue)//设置工作流变量的值
     public String getCreator()//当前任务的创建者,注意:不是当前环节的处理
人员
     public void setCreator(String operatorId)
     public Date getRegDate()//登记日期
     public void setRegDate(Date regDate)
     public Date getFinishDate()//完成日期
     public void setFinishDate(Date finishDate)
     public WfTaskState getState()//当前状态(任务总体的,不是当前活动的)
     public void setState(WfTaskState state)
     public String getTaskId()
     public String getTemplateId()//此任务对应的模板的Id
     int kill()//结束一个工作流或者说工作单作废
     int delete()//删除一条工作流。}
所述的工作流活动(代表工作流实例的在各环节的办理内容)子类WfActivity各公有方法具体定义如下:
    public class WfActivity
    {  public WfTache getTache()//返回此节点对应的的Tache对象
      public WfTask getTask()//对应的Task对象
      public List getNextActvity()//本活动的后继活动(
      public List getPrevActvity()//本活动的前序活动
      public boolean isLast()//当前活动是否是流程的最后环节
      public boolean isCurrent()//当前活动是否当前环节
      public boolean isDone()//当前活动是否已经完成
      public boolean isLate()//当前活动是否已经超时
      public boolean isAccepted()//是当前环节,而且已经领用该工作单
public int assignWork(int nextTacheId,String operId)//派工:特殊业务-指定下一
环节操作员Id
      public int getPassNo()//办理次数,就是说,这个环节办理过几次了
      public boolean isPassbyAllowed()//是否同意本环节完成
      public WfActivityState getActivityState()//当前活动的状态
    public String getFromPerson()//上一环节的处理人员Id
      public Date getReachDate()//到达时间(可能没有接受,也可能是接受时间,
和工作流实现相关)
      public void setReachDate(Date reachDate)
      public Date getAcceptDate()//接受时间
       public void setAcceptDate(Date acceptDate)
      public Date getCommitDate()//当前活动的提交时间(办理完成后,向下传
递的时间)
      public void setCommitDate(Date date)
      public String getRecvDept()//模板规定的处理部门
     public void setRecvDept(String recvdept)
    public String getRecvPerson()//模板规定的处理人员(此时会忽略指定的部
门和岗位)
     public String getRecvPost()//模板规定的处理岗位
     public String getTaskId()
     public String getActivityId()
     public void setActivityId(String activityId)
     public String getTacheId()//环节Id(
     public void setTacheId(String tacheId)
     public String getTemplateId()
     public int getTimeLimit()//规定处理时限
     public String getDealMsg()//本环节办理意见
     public void setDealMsg(String msg)}
另外上述标准接口类中还包含有相应的辅助类,如工作流状态封装类WfTaskState、活动状态类WfActivityState、工作流变量类WfVar、工作流查询条件类WfQueryCond和查询条件单项封装类WfQueryCondItem等,其中,
所述的工作流状态封装类WfTaskState具体定义如下:
      public interface WfTaskState
    {   public static finalint RUNNING=1;
       public static final int STOPPED=2;
       public static finalint KILLED=3;//两个工作流状态是否相等,相等返回
true不相等,返回false。
       boolean equals(WfTaskState state);//工作流状态是否等于规定的某个状
态,相等返回true不相等,返回false。
       boolean equals(int state);}
    WfActivityState各公有方法具体定义如下:
       public interface WfActivityState
    {  public static finalint DOING=1;
       public static final int DONE=2;
       int getState();//两个活动状态是否相等,相等返回true不相等,返回false。
      boolean equals(WfActivityState state);//该状态是否等于规定的某个状态,
相等返回true不相等,返回false。
       boolean equals(int state);}
  所述的工作流变量类WfVar具体定义如下:
   public class WfVar
{  public String getName()
   public void setName(String name)
   public String getValue()
 public void setValue(String value)
 public boolean isSys Var()//是否系统级别变量}
所述的工作流查询条件封装类WfQueryCondItem的具体定义如下:
       public class WfQueryCondItem
    {  public static finalint REL_EQ=1;
       public static final int REL_NE=2;
       public static final int REL_LT=3;
       public static final int REL_GT=4;
       public static final int REL_LE=5;
       public static final int REL_GE=6;
       public static final int REL_LIKE=9;
       public static final int LOGIC_AND=1;
       public static final int LOGIC_OR=2;
       public static final int LOGIC_XOR=3;
       public static final int LOGIC_NONE=0;
       public WfQueryCondItem(int logic,String lb,String subj,int rel,
Object val,String rb)//构造函数
       public static String[]getAllSubjects()//得到所有查询主题
       public static WfQueryCondSubject[]getAllSubjInfo()//获取所有主题信息
的列表
       public static boolean isSubject(String string)//判断给定字符串是不是一个
查询主题
       public static int getSubjectDataType(String key)//查询给定主题的数据类
       public String getSubject()//条件代码:可以是某些代码标识的信息,可以是
状态
       public int getRelation()//关系算符
       public Object getValue()//运算符右值
       public String getLeftBracket()//左括号
       public String getRightBracket()//右括号
       public int getLogical()//逻辑关系
    public void setValue(Obj ect value)
     public void setLeftBracket(String leftBracket)
    public void setLogical(int logical)
    public void setRelation(int relation)
    public void setRightBracket(String rightBracket)
    public void setSubject(String subject)
    public int getLogical()//根据流程可以办理的人员
    public static final String SUBJ_OPRTR_CANDO=″curOperator″;//工作流
状态
    public static final String SUBJ_TASK_STATE=″taskState″;//工作单
    public static final String SUBJ_TASK_ID  =″taskId″;//登记日期
    public static final String SUBJ_DATE_REG  =″regDate″;//结束日期
    public static final String SUBJ_DATE_FINISH  =″finishDate″;//模板ID
    public static final String SUBJ_TEMPLATE_ID=″templateId″;//模板名称
    public static final String SUBJ_TEMPLATE_NAME=″templateName″;
//环节状态
     public static final String SUBJ_ACTIVITY_STATE  =″activityState″;
//活动ID号
    public static final String SUBJ_ACTIVITY_ID  =″activityId″;//环节编号
     public static final String SUBJ_TACHE_ID  =″tacheId″;//环节名称
    public static final String SUBJ_TACHE_NAME  =″tacheName″;//办理时
    public static final String SUBJ_TIME_LIMIT  =″timeLimit″;//岗位
     public static final String SUBJ_POST=″postCode″;//部门
     public static final String SUBJ_DEPT=″department″;//指定的人员//
这个暂时不支持,数据库结构中没有
    protected staticfinal String SUBJ_OPRTR_SHOULD=″shouldOperator″;//
标准环节代码
    public static final String SUBJ_STD_TACHE=″stdTacheCode″;//办理人
    public static final String SUBJ_OPRTR_DEAL=″dealPerson″;//到达时间
     public static final String SUBJ_TIME_REACH=″timeReach″;//办理时间
     public static final String SUBJ_TIME_DEAL=″timeDeal″;//提交时间
     public static final String SUBJ_TIME_COMMIT=″timeCommit″;//当前环
节办理次数
    public static final String SUBJ_PASS_NO=″passNo″;//超时天数
     public static final String SUBJ_DELAY=″delayDays″;
 }
所述的查询条件类WfQueryCond代表查询条件的组合(真正用于查询的联合条件),其具体定义如下:
    public class WfQueryCond
    {//此条件对象,限定只访问当前环节正在处理的工作环节
     public boolean isIncludeDoingOnly()//设置“是否限定只访问当前环节正在
处理的工作环节”@param isIncludeDoingOnly
public void setIncludeDoingOnly(boolean isIncludeDoingOnly)//条件列表,返
回引用(对此引用可读可写),类型必须是WfQueryCondItem
      *@return条件列表
      public List getItems()}
在具体实现过程中可以使用桥模式来实现,例如对WfTask类的goNext()方法,是这样实现的:
    public class WfTask
{//1在构造函数中,动态生成实现类的实例(根据系统初始化配置)
 WfTask(String operatorId,String templateId,String taskId)
   {    imp=WfImplFactory.getInstance().newTaskImp(this,operatorId,
        templateId,taskId);
        this.setTemplateId(templateId);
        this.setTaskId(taskId);}//2真正的调用传递给实现类
   public int goNext(String operatorId,String activityId)throws WfException,
              WfException
   {return imp.goNext(operatorId,activityId);}//接口类保存实现类的引
用,由于实现类有标准接口,因此在更换实现类实例时,由具体的实现类去完
成任务
    private WfTaskImp imp;}
我们再看看实现类的情况,首先定义虚父类WfTaskImp标准接口,用于和和标准的接口类相呼应,把实现的差异部分封装在一系列方法中:
   public abstract class WfTaskImp
{    public abstract int acceptTask(String operatorId,String activityId);
    public abstract int goNext(String operatorId,String activityId);
 ...}
针对具体的工作流系统我们设计的实现类来实现以上接口:
public class FSWfTaskImp extends WfTaskImp
{public FSWfTaskImp(WfTask taskObj,String operatorId,String templateId)
.....
public int goNext(String operatorId,String activityId)
{   //真正的实现代码在这里,对不同的目标工作流系统,这里当然是不同的
            WfActivity activity;
        try
        {               activity=........
现在例如使用系统内嵌式默认工作流系统,我们只要为这个目标工作流系统制作对应的实现类即可(这个工作实际上对很多目标工作流系统已经完成。而且这个改动,只是限制在用以与不同目标工作流系统进行匹配范围编码,不会影响调用接口类的任何程序)
        }
    }
}
现在,如果目标工作流系统改为IBM的Message-Q工作流系统,则对应实现类:
   public class IBMWfTaskImp extends WfTaskImp
    {....
       public int goNext(String operatorId,String activityId)
    {   //同样的接口,但要针对IBM这一目标工作流系统实现一遍。这里只要调
用IBM目标工作流系统的API完成相应控制就可以了。
    }
    }
以上所述仅为本发明的较佳实施例,对本发明而言仅仅是说明性的,而非限制性的。本专业技术人员理解,在本发明权利要求所限定的精神和范围内可对其进行许多改变,修改,甚至等效,但都将落入本发明的保护范围内。

Claims (7)

1.一种用以与不同目标工作流系统进行匹配的方法,其特征在于,其包括:
将目标工作流系统的调用接口分别与相应的实现类相对应;
设置接口类,其与外部的调用命令相对应;
将外界的调用命令通过对应的接口类传递对应的实现类;
所述的接口类保存实现类的引用,通过所述的实现类引用对应的目标工作流系统的调用接口实现匹配和控制。
2.根据权利要求1所述的用以与不同目标工作流系统进行匹配的方法,其特征在于,所述的接口类包括:工作流引擎类、工作流模版类和工作流实例类。
3.根据权利要求2所述的用以与不同目标工作流系统进行匹配的方法,其特征在于,所述的工作流引擎类对工作流总体控制,用以定义、查询工作流的模版信息,创建新的工作流实例、执行各项查询和控制。
4.根据权利要求2所述的用以与不同目标工作流系统进行匹配的方法,其特征在于,所述的工作流模版类代表一个定义好的工作流程,用以查询模版定义中的每一环节信息,流程顺序,分支条件信息和时限信息,具体的实现则交给后台的实现类去完成。
5.根据权利要求4所述的用以与不同目标工作流系统进行匹配的方法,其特征在于,针对每个模版的环节信息还设置有工作流模版环节子类,其作为工作流模版的类成员,所述的工作流模版环节子类通过系列get/set方法取存环节属性信息,具体的实现则交给后台的实现类去完成。
6.根据权利要求2所述的用以与不同目标工作流系统进行匹配的方法,其特征在于,所述的工作流实例类代表已经创建的工作单,可以获得当前任务任何环节的信息,流程顺序、分支条件信息,办理人员、实际时间、超时信息;从而实现对工作流的查询与控制。
7.根据权利要求6所述的用以与不同目标工作流系统进行匹配的方法,其特征在于,针对每个工作流实例中的每一环节的信息还设置有工作流实例活动子类,其作为工作流实例类的类成员,所述的工作流实例活动子类具有get/set方法取存环节属性信息,以及提供大量方法对当前活动、当前任务进行控制。
CN200810247408A 2008-12-31 2008-12-31 用以与不同目标工作流系统进行匹配的方法 Pending CN101770610A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200810247408A CN101770610A (zh) 2008-12-31 2008-12-31 用以与不同目标工作流系统进行匹配的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200810247408A CN101770610A (zh) 2008-12-31 2008-12-31 用以与不同目标工作流系统进行匹配的方法

Publications (1)

Publication Number Publication Date
CN101770610A true CN101770610A (zh) 2010-07-07

Family

ID=42503460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810247408A Pending CN101770610A (zh) 2008-12-31 2008-12-31 用以与不同目标工作流系统进行匹配的方法

Country Status (1)

Country Link
CN (1) CN101770610A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102903030A (zh) * 2012-09-28 2013-01-30 方正国际软件有限公司 异构系统间不同工作流进行任务处理的方法
CN106022726A (zh) * 2016-05-20 2016-10-12 中国农业银行股份有限公司 一种工作流系统的部署仿真方法及装置
CN111722598A (zh) * 2019-03-20 2020-09-29 横河电机株式会社 用于工业过程的模块工程系统和模块工程化方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102903030A (zh) * 2012-09-28 2013-01-30 方正国际软件有限公司 异构系统间不同工作流进行任务处理的方法
CN102903030B (zh) * 2012-09-28 2016-10-12 方正国际软件有限公司 异构系统间不同工作流进行任务处理的方法
CN106022726A (zh) * 2016-05-20 2016-10-12 中国农业银行股份有限公司 一种工作流系统的部署仿真方法及装置
CN111722598A (zh) * 2019-03-20 2020-09-29 横河电机株式会社 用于工业过程的模块工程系统和模块工程化方法
CN111722598B (zh) * 2019-03-20 2021-12-24 横河电机株式会社 一种用于工业过程的模块工程化的系统和方法

Similar Documents

Publication Publication Date Title
US6959268B1 (en) Product catalog for use in a collaborative engineering environment and method for using same
Boehm et al. A collaborative spiral software process model based on theory W
Scholz-Reiter et al. Business process modelling
Medina-Mora et al. The action workflow approach to workflow management technology
Medina-Mora et al. ActionWork owtm as the enterprise integration technology
Schlenoff et al. Unified process specification language: Requirements for modeling process
US7461042B2 (en) Method, system, and program for defining and managing complex contingent rules, and exceptions thereto, in a rule-based computer system
US20070179828A1 (en) Method and system for top-down business process definition and execution
US8311972B2 (en) Method of building a data integration environment
US20070162482A1 (en) Method and system of using artifacts to identify elements of a component business model
Glykas Performance measurement in business process, workflow and human resource management
CN101770610A (zh) 用以与不同目标工作流系统进行匹配的方法
Baïna et al. New paradigms for a product oriented modelling: Case study for traceability
KR102375965B1 (ko) 비오디 스키마를 이용하는 통합 시스템
Lau et al. Application of information technology in agile manufacturing
Holden et al. LIFETRACK: organisational modelling for safety-critical decision support
CN116227197A (zh) 一种基于数据编织技术的工程变更模型的构建方法及系统
Neches FAST Workstation Project Overview
Sillince A design for information systems which can adapt to changing organizational requirements
Cerovsek et al. Active process model supported collaboration
Verrijn-Stuart et al. Model integration in information planning tools
Grossmann et al. Exploiting Semantics of Inter-Process Dependencies to Instantiate Predefined Integration Patterns.
Schultz ADEPT—The advanced database environment for planning and tracking
Kluska-Nawarecka et al. The framework of agent-based negotiation platform for foundries cooperating in supply chain
Lopes et al. Business Improvement through Automatic Workflow Modeling.

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20100707