发明内容
鉴于现有技术所存在的不足,本发明的首要目的是提供一种项目过程工作流系统。该工作流系统通过根据单元任务来定义计划模板的技术手段以及相应的工作流引擎技术实现了对现有工作流系统的改进。
本发明的另外一个目的是提供用于实现上述项目过程工作流系统的具体方法。
为实现上述的目的,本发明采用下述的技术方案:
一种基于计划模板的项目过程工作流系统,由计划模板生成在执行过程中可修改的进度计划,所述进度计划用于驱动项目过程工作流,其特征在于:
所述项目过程工作流系统包括任务部署模块、计划部署模块、流程引擎、流程设计器、工作分解模块、资源数据库、单元任务数据库、计划模板数据库和客户应用程序;
所述计划部署模块包括计划生成模块和计划编辑模块;所述流程引擎包括工作流任务生成器、流程设置模块、客户端应用接口、监视控制接口、任务完成检测模块和任务执行模块,还包括引擎数据库;所述流程设计器中具有流程设计器;
所述计划编辑模块连接所述工作流任务生成器,所述任务部署模块分别与所述工作分解模块、资源数据库、单元任务数据库、计划模板数据库和客户应用程序相连接,所述资源数据库与所述计划编辑模块也进行连接,所述单元任务数据库同时连接所述计划编辑模块、工作流任务生成器和流程设计器,所述计划模板数据库连接所述计划生成模块和流程设计器,所述客户应用程序同时连接所述客户端应用接口和监视控制接口。
其中,所述项目过程工作流系统以所述计划生成模块、计划编辑模块和流程设计器为接口连接Microsoft Project软件。
所述计划模板通过所述流程设计器产生,所述计划模板保存在计划模板数据库中,并以XML文件形式输出。
所述任务完成检测模块和任务执行模块依据满足计划驱动的引擎调度法完成工作流的任务调度,并通过客户端应用接口和监视、控制接口实现与客户应用程序的交互。
所述计划驱动的引擎调度法为当进度计划时间到达时,所述流程引擎使项目过程工作流开始运行,并在满足计划的单元任务紧前、紧后逻辑关系和时间约束时将单元任务推给执行者。
一种用于实现上述项目过程工作流系统的方法,用于将项目工作包装成单元任务,其特征在于:
1)分解工作流运行单位提供的项目管理规范,将所有在项目管理过程中要完成的工作以及固有的属性生成一个数据表;
2)在任务部署模块的界面中给每个项目工作赋予组织单元和角色属性;
3)依据组织单元和角色对单元工作进行整理、分类,按照项目的特点对工作进行组合后,生成单元任务;
4)在任务部署模块的界面确定单元任务名称,进行完整性审核,确定单元工作的工作内容和完成检测条件,并将单元任务保存到单元任务数据库。
一种用于实现上述项目过程工作流系统的方法,用于实现为每个单元任务附加判断单元,其特征在于:
1)工作流任务生成器得到计划编辑模块提交的项目进度计划,在引擎数据库中创建项目的工作流定义表,将任务相互衔接的关系和工序的开展顺序转换为工作流的节点关联关系,并将计划中任务的名称、资源、开始时间、完成时间属性引入到项目工作流定义表;
2)在引擎数据库创建项目判断单元表,并使判断单元数据与工作流定义表对应;
3)对计划中任务属性进行归类、提取、计算,从而为判断单元添加属性;
4)判断单元属性确定后,工作流任务生成器将项目过程工作流的定义数据提交给流程设置模块,流程设置模块在引擎数据库中生成任务列表后工作流进入待运行状态。
一种用于实现上述项目过程工作流系统的方法,用于实现满足计划驱动的引擎调度,其特征在于:
1)流程引擎中的任务完成检测模块被触发后,通过对判断单元的循环检测动态判断项目过程的当前状态,并将检测结果写入判断单元的前置任务属性表,通过检测结果计算实际自由时差;
2)在进行单元工作完成检测时,所述任务完成检测模块按照每个工作的完成检测条件通过客户端应用接口完成工作表单的检测;
3)当进度计划时间到达时,所述流程引擎使项目过程工作流开始运行,并在满足计划的单元任务紧前、紧后逻辑关系和时间约束时将作为节点的单元任务推给执行者。
一种用于实现上述项目过程工作流系统的方法,用于设置新的计划模板,其特征在于:
1)启动流程设计器,在所述流程设计器中创建一个新的流程;
2)在流程设计器中查找到已经定义好的单元任务,为流程设置单元任务,如果现有的单元任务不能满足要求,则创建新的单元任务;
3)按照单元任务的工序关系和完成的先后顺序确定单元任务的关联关系;
4)将完成的流程提交给Microsoft Project软件进行关联合理性检查,以生成正确的计划模板,并将所述计划模板保存到计划模板数据库。
一种用于实现上述项目过程工作流系统的方法,用于修改已经在运行的进度计划,其特征在于:
1)工作流任务生成器接收到提交的修改计划后,备份工作流定义表、判断单元表;
2)创建新的工作流定义表、判断单元表;
3)保留任务列表中已经完成和已经开始的节点,按工作流定义表更新任务列表中未开始的节点;
4)使修改后的进度计划进入待运行状态。
利用上述的技术方案,本发明提供了一种可以在项目过程中运行的工作流系统及其实现方法。该技术方案中,通过使用计划模板依据每一个具体的项目过程生成进度计划驱动工作流、对资源和任务组合配置成单元任务、工作流引擎处理等技术手段,实现了为每个项目过程创建工作流并可随时进行流程修改的技术效果。
具体实施方式
下面首先介绍本发明中将要使用的一些基本概念。这些概念是理解本发明的关键所在。
1.单元任务:由符合项目特点的任务包装生成的工作集合。单元任务是项目过程工作流中的基本任务单元。集合中的项目工作称为单元工作。此处的项目工作是从项目管理规范、规章制度中抽象出来、有具体工作内容和完成条件的活动。项目工作的内容以表单的形式在客户应用程序中创建、保存和完成。
单元任务主要有3个特征:
1)资源属性
每个单元任务都具有资源属性。单元任务中的单元工作继承了单元任务的资源属性。
2)项目属性
单元任务符合网络计划技术中对任务的约束,包括交付物、工作内容、资源、持续时间等,可以用网络计划图描述,并可通过CPM(CriticalPath Method,关键路线法)中的方法进行工期优化、调整关键路径等。
3)可重复使用
项目工作可以在资源属性和项目属性的约束下进行不同的组合,从而组成适合不同项目过程需求的单元任务。
单元工作可以携带项目工作表单,具有如下的特征:
1)具有描述项目工作名称、表单工作性质、完成检测条件属性,并继承单元任务的资源属性。
2)可以将资源属性传递给表单,并取得表单的完成情况。
3)可以修改表单格式、内容,也可以更换表单。
在本发明中,采用单元描述企业组织架构,对单元内完成的项目工作进行包装形成单元任务,以单元任务作为计划模板的组成元素。
2.计划模板:包含了项目过程中单元任务和单元任务之间关联关系的、符合网络计划技术规则的网络图。计划模板由节点、箭线和线路组成,其中节点表示单元任务或单元工作,箭线和线路表示不同单元任务或单元工作之间的关联关系。
在本发明中,用一个计划模板代表了一个类型的项目过程。选择不同的计划模板就确定了不同的项目过程。当项目具有相近的项目过程时可以使用同一个计划模板。
参见图1所示,本发明所提供的项目过程工作流系统包括任务部署模块101、流程设计器102、计划部署模块103、流程引擎107、工作分解模块116、资源数据库117、单元任务数据库118、计划模板数据库119、客户应用程序120。该项目过程工作流系统连接用于生成计划模板和进度计划的工具Microsoft Project软件115。计划部署模块103中包括计划生成模块104和计划编辑模块105。流程引擎107包括工作流任务生成器108、流程设置模块109、客户端应用接口112、监视控制接口113、任务完成检测模块111和任务执行模块110,还包括引擎数据库114。资源数据库117中包括角色、资源和组织单元三个部分。
在图1所示的项目过程工作流系统中,计划部署模块103用于接收项目过程管理需求。该模块中的计划编辑模块105连接工作流任务生成器108。任务部署模块101的作用在于接收并处理新的单元任务,该模块分别与工作分解模块116、资源数据库117、单元任务数据库118、计划模板数据库119和客户应用程序120相连接。工作分解模块116和资源数据库117分别用于接收运行单位的基础数据。资源数据库117与计划编辑模块105也进行连接。单元任务数据库118同时也连接计划编辑模块105、工作流任务生成器108和流程设计器102。该数据库118主要用于存储、修改和调用通过项目过程工作流系统部署的单元任务。计划模板数据库119也连接计划生成模块104和流程设计器102。客户应用程序120连接客户端,以便操作人完成项目任务和操作流程的数据。该客户应用程序120同时也连接客户端应用接口112和监视控制接口113。流程设计器102连接Microsoft Project软件115,用于接收并处理新的计划模板。该Microsoft Project软件115同时也连接计划生成模块104和计划编辑模块105。
单元任务在任务部署模块101的界面中生成,保存在单元任务数据库118中。工作流任务生成器108采用解析计划和单元任务生成流程定义的方法生成工作流定义,并保存在引擎数据库114中。
计划模板通过流程设计器102产生。流程设计器102由一组图形化界面和模板生成程序组成,生成的计划模板保存在计划模板数据库119中,并以XML文件形式输出。
流程设置模块109在引擎数据库114中生成流程任务表并使项目的过程工作流进入运行状态。流程设置模块109的另一个作用是处理计划的动态修改,计划修改后流程设置模块依据修改后的计划调整流程任务表。
任务完成检测模块111、任务执行110模块依据满足计划驱动的引擎调度法完成工作流的任务调度,并通过客户端应用接口112和监视、控制接口113完成与客户应用程序的交互。此处的引擎调度法是指引擎当进度计划时间到达时使工作流开始运行,并在满足单元任务(节点)紧前、紧后逻辑关系和时间约束时将单元任务(节点)推给执行者。关于该引擎调度法的具体内容,后文中还有详细的说明。
计划部署模块103完成计划模板的选择、调整和确定项目开始时间并生成可执行的项目进度计划。工作流任务生成器108解析计划和单元任务以生成流程定义文件。流程定义文件提交流程引擎107以实现工作流的运行、控制。
本发明所实现的项目过程工作流由进度计划驱动。进度计划由计划模板生成。计划模板是一个通过XML文件格式描述的未确定项目开始时间和管理人员的计划,在数据库中可以存储、修改和重复使用。它表示项目中的各项工作、工序的开展顺序、开始及完成时间及相互衔接关系。计划模板的编制依据于网络计划技术的理论和方法(包括CPM及PERT方法及由节点、箭线和线路组成的网络图)。计划模板采用单元任务作为进度计划的任务,由流程设计器创建、修改。计划模板可由已执行或正在执行的进度计划生成。
在项目执行过程中,可以随时通过修改计划来调整项目过程工作流。可修改的内容包括单元任务的名称、单元工作的名称、关联关系、工期、开始时间、单元任务和单元工作的增减等。
针对现有工作流系统存在“不可编辑性”,不适应在项目过程中运行的缺陷,本发明的特点在于由计划模板依据每一个具体的项目过程生成进度计划、进度计划驱动工作流,在执行过程中对进度计划进行修改,从而实现流程执行过程中的流程调整。在实施过程中,采用了用项目的计划模板来生成工作流,将项目工作包装成单元任务和满足计划驱动的引擎调度等多种技术手段。下面分别展开详细的说明。
在通过流程设计器进行计划模板部署及进度计划生成的过程中,本发明采用Microsoft Project软件作为生成和编辑计划模板及生成进度计划的工具,通过Microsoft Project软件的CPM方法以及各种视图完成项目过程的时间安排和工期优化。
用Microsoft Project软件创建和编辑的计划模板、项目计划有以下特征:
1)第一个任务是这个项目过程的摘要;
2)每个项目过程中必须有“项目开始”、“项目结束”里程碑;
3)单元任务显示为一个摘要,摘要中是单元工作。单元任务中不能有其它摘要;
4)单元任务至少有一个前置任务和一个后置任务。
在实施满足计划驱动的引擎调度法之前,需要对节点的状态进行判断。下面介绍一些典型的节点状态判断步骤(简记为S0):
1)检测节点的状态
通过对节点的判断单元进行循环检测得到项目过程的当前状态。
●前置任务完成检测
根据节点判断单元中前置任务的完成检测条件属性通过客户端应用接口112检测任务的完成情况,如果已完成则记录前置任务的完成时间。
●节点延误检测
已完成节点
节点延误时间=完成时间-计划完成时间
未完成节点
节点延误时间=当前时间-计划完成时间
●自由时差检测
自由时差=所有前置任务中计算了节点延误时间后最晚的完成时间-节点计划开始时间
2)判断节点的开始条件
●开始时间限制类型为越早越好
判断条件为:所有前置任务都完成
●开始时间限制类型为越晚越好
判断条件为:所有前置任务都完成,且最后一个前置任务完成时间+自由时差>当前时间
●开始时间限制类型为不得早于
判断条件为:(所有前置任务都完成OR上级节点已经开始)AND计划开始时间>当前时间
3)判断节点异常
●节点开始时间延误
已开始节点时间延误=当前时间-实际开始时间
未开始节点时间延误=当前时间-计划开始时间
●节点完成时间延误
已完成节点时间延误=当前时间-实际完成时间
未完成节点时间延误=当前时间-计划完成时间
●工作流可能的延误时间
在自由时差为0的节点中选取一条路由,确定其中最后一个已完成节点为n;
工作流可能的延误时间=节点n的完成时间-下一节点计划开始时间
4)保存检测、判断结果
用检测到和判断的结果改变节点的当前状态
参见图2所示,将项目工作包装成单元任务的基本步骤(简记为S1)如下:
1)先分解工作流运行单位提供的项目管理规范、规章制度,将所有在项目管理过程中要完成的工作以及固有的属性生成一个数据表。
2)在任务部署模块101的界面中给每个项目工作赋予组织单元和角色属性。
3)依据组织单元和角色对单元工作进行整理、分类,按照项目的特点对工作进行组合后即生成单元工作。项目特点是指单元工作在项目过程中有明确的交付物或明确的目的,可以指定工期,有确定的开始条件和完成条件。
4)在任务部署模块界面确定单元任务名称,进行完整性审核,确定单元工作的工作内容和完成检测条件,并将单元任务(或单元工作)保存到单元任务数据库118。
在具体实施时,将单元任务以XML格式输入Microsoft Project软件115中,以便执行和管理该单元任务。以下显示了单元任务的XML文件格式的一个示例。
<?xml version=″1.0″encoding=″GB2312″?>
<Workflow>
<ChoiceUnit>直流输电研究处</ChoiceUnit>
<UnitTaskName>实施管理</UnitTaskName>
<SNAME>XX电网研究中心</SNAME>
<info>
<WorkingDocument>
<WorkingModel>科技项目验收评审</WorkingModel>
<UnitWorking>中期评审</UnitWorking>
<CheckCondition>检测到</CheckCondition>
<Automation>否</Automation>
<UpOrDown>否</UpOrDown>
<Auto>否</Auto>
</WorkingDocument>
<WorkingDocument>
<WorkingModel>资金支付申请审批</WorkingModel>
<UnitWorking>最终资金支付申请</UnitWorking>
<CheckCondition>审批完成</CheckCondition>
<Automation>是</Automation>
<UpOrDown>否</UpOrDown>
<Auto>否</Auto>
</WorkingDocument>
</info>
</Workflow>
单元任务作为进度计划中的任务,具有网络计划技术中任务的所有属性。所有与任务开始有关的属性分布在相关联的其它任务中。一个任务的开始取决于前置任务。任务开始时间还与计划开始时间、自由时差、任务限制类型有关系。在单元任务中的单元工作可能无前置任务。
为了使进度计划能驱动项目过程工作流,本发明采用了为每个单元任务(或单元工作)附加判断单元的方法。
判断单元有以下特征:
1)如图3所示,判断单元与单元任务和单元工作一一对应。
2)在判断单元属性表包含了任务、工作开始条件的逻辑关系组合。表1为判断单元属性表的一个示例。节点的当前状态也保存在该判断单元属性表中。
属性名称 |
属性值 |
任务唯一ID |
|
任务开始时间限制类型 |
越早越好越晚越好不得早于 |
计划开始时间 |
|
自由时差 |
|
实际自由时差 |
|
当前状态 |
已开始已完成延误 |
表1
3)包含了确定前置任务完成的检测数据。前置任务中的唯一ID指定了一个任务或工作,完成检测条件为引擎提供检测算法和比较值。
为每个单元任务(或单元工作)附加判断单元的具体实施步骤(简记为S2)如下:
1)工作流任务生成器108得到计划编辑模块105提交的项目进度计划后在引擎数据库114中创建项目的工作流定义表,解析进度计划的过程中将任务相互衔接的关系和工序的开展顺序转换为工作流的节点关联关系,并将计划中任务的名称、资源、开始时间、完成时间等属性直接引入到项目工作流定义表;
2)在引擎数据库创建项目判断单元表,并使判断单元数据与工作流定义表对应;
3)为判断单元添加属性的过程是对计划中任务属性进行归类、提取、计算的过程。其中前置任务的数量取决与计划的关联关系,完成检测条件在单元任务数据库118中提取,自由时差=前置任务计划完成时间-后置任务计划完成时间-任务计划工期;
4)判断单元属性确定后工作流任务生成器将项目过程工作流的定义数据提交给流程设置109模块,流程设置模块在引擎数据库中生成任务列表后工作流进入待运行状态。
在流程引擎107中,单元任务和单元工作都作为节点进行处理。任务完成检测模块111、任务执行模块110依据引擎数据库114中的工作流定义表、判断单元表、任务列表完成对节点的调度。
在本发明中,对节点的调度是通过满足计划驱动的引擎调度法实现的。该引擎调度法包括如下的步骤:
1)动态判断项目过程的当前状态
在前述附加判断单元的方法中创建的判断单元包含了计划中静态的任务、工作开始条件。任务完成检测模块111被触发后,通过对判断单元的循环检测动态判断项目过程的当前状态,包括对每个任务、工作所有前置任务的实际完成情况进行检测,并将检测结果写入判断单元的前置任务属性表,和通过检测结果计算实际自由时差。
2)对每个节点分别采用不同的状态检测方法
工作表单作为描述计划任务、工作实质内容的信息形式被单元工作携带,单元工作的完成与否由工作表单的完成情况决定。在进行单元任务包装时设置了工作的完成检测条件。在进行单元工作完成检测时,任务完成检测模块111按照每个工作的完成检测条件通过客户端应用接口112完成工作表单的检测。
3)依据任务开始时间限制类型确定节点的开始条件
任务执行模块110被触发后,依据判断单元的状态进行节点的调度。计划中单元任务、工作节点的开始条件与该节点的开始时间限制类型有关,不同的限制类型有不同的开始条件算法。流程引擎中的任务执行模块110依据计算结果调整任务、工作的当前状态,并通过客户端应用接口112实现与客户应用程序的交互,并在满足计划的单元任务(即节点)紧前、紧后逻辑关系和时间约束时将单元任务(即节点)推给执行者。
本项目过程工作流系统采用项目的进度计划来定义项目过程,从计划中提取由单元任务组成的项目过程,通过语意、逻辑关系转换、驱动关系的转换解决进度驱动工作流的技术问题。进行工作流定义时需要完成单元任务、工作的提取,并将计划中的项目过程转换成如下所示的“工作流定义表”数据结构,通过节点属性和节点间相互关系描述工作流。其中,多前置任务等同于工作流的并行节点,多后置任务等同于工作流的发散节点。
<项目名称>
<流程名称
<运行的系统
<项目开始
-<单元任务1>
--<名称>
--<计划开始时间>
--<计划完成时间>
--<单元名称>
--<负责人员>
--<开始时间限制类型>
--<前置任务>
--<关键路径>
---<单元工作1>
----<名称>
----<计划开始时间>
----<计划完成时间>
----<开始时间限制类型>
----<前置任务>
----<表单模板>
----<完成检测方式>
----<完成后处理>
---<单元工作2>
---<单元工作3>
-<单元任务2>
-<单元任务3>
<项目结束>
在流程引擎107中,单元任务和单元工作都作为节点进行处理。任务完成检测模块111、任务执行模块110依据引擎数据库114中的工作流定义表、判断单元表、任务列表完成对节点的调度。
下面结合图4所示,介绍启动流程设计器102设置新的计划模板的基本步骤(简记为S3)。该步骤包括:
S31:创建流程
启动系统的流程设计器102,在流程设计器中创建一个新的流程,或打开一个已有的计划模板,对正在执行的计划进行流程调整。
S32:编辑单元任务
在流程设计器中查找到已经定义好的单元任务,通过图形化操作为流程设置单元任务。对布置到流程中的单元任务进行编辑,包括更改单元任务(或单元工作)的名称,删除不需要的单元任务(或单元工作),增加新的单元任务(或单元工作)。
S33:创建新的单元任务
如果现有的单元任务不能满足要求,就按S1所示的步骤创建新的单元任务。
S34:调整工序
按照单元任务的工序关系和完成的先后顺序确定单元任务的关联关系。
S35:生成计划模板
将完成的流程提交给Microsoft Project进行关联合理性检查,以便正确生成计划模板,并保存到计划模板数据库。
图5显示了启动计划部署模块103部署项目的工作流的基本步骤(简记为S4)。该步骤包括:
S41:选择计划模板
分析项目的管理需求,启动计划生成模块104在计划模板库中选择合适的模板。
S41:创建新计划模板
如果没有合适的计划模板就按S3所示的步骤创建新的计划模板。
S42:设置单元工作工序、工期
计划生成模块调用选中的计划模板,用Microsoft Project软件115的界面打开计划模板,在Microsoft Project软件中确定单元工作的工期和工序关系。Microsoft Project界面通过计划编辑模块105获取单元任务数据库118和资源数据库116中的数据,支持S42~S45步骤的调整。
S43:设置单元任务工期
依据实际工期要求及单元任务工期要求调整单元任务的工期。
S44:工期优化
审核项目整体工期,检查关键路径,进行工期的优化和调整。
S45:资源调整
每个单元任务的资源配置为组织单元和角色的交集,在这个交集中确定资源。
S46:提交计划
Microsoft Project软件生成计划XML文档,并由计划编辑模块提交给流程引擎107。
下面介绍生成和修改工作流任务的基本过程。
●创建新计划
工作流任务生成器108接收到提交的新计划后进行计划的转换。按前述S2的步骤解析处理计划,并使项目过程工作流进入待运行状态。
●修改已经在运行的计划
可以按前述S3和S4的步骤完成计划模板和计划的修改,也可直接按S4的步骤进行计划修改。具体的修改步骤(简记为S5)如下:
S51:工作流任务生成器108接收到提交的修改计划后备份工作流定义表、判断单元表。
S52:创建工作流定义表、判断单元表
按步骤S2中的步骤1~3生成新的工作流定义表、判断单元表。
S53:修改任务列表
保留任务列表中已经完成和已经开始的节点,按工作流定义表更新任务列表中未开始的节点
S54:完成计划修改
按步骤S2中的步骤4使修改后的计划进入待运行状态。
在流程引擎107中有一个定时器,到了设定的时间流程引擎开始运行,从而使整个工作流开始运行。图6显示了工作流运行的基本步骤(简记为S6),该步骤包括如下的内容:
S61:选定项目过程
进入待运行状态的工作流循环,逐个处理待运行的项目过程。
S62:确定当前状态
利用步骤S0完成工作流当前状态的检测和判断。
S63:节点工作内容处理
对已经满足开始条件的节点,根据单元任务中部署的表单的类型和处理方法,通过调用客户端应用接口112提交给客户应用程序120处理。包括创建新的表单、确认已创建的表单,确定节点工作内容后节点为可开始节点。
S64:执行
将已开始的节点通过客户端应用接口112提交给客户应用程序120,将异常情况通过客户端应用接口112通知指定人员。
以上对本发明所述的基于计划模板的项目过程工作流系统及其实现方法进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。