一种工作流文件编译方法及装置与流程

文档序号:17856941发布日期:2019-06-11 22:37阅读:129来源:国知局
一种工作流文件编译方法及装置与流程

本说明书实施例涉及计算机技术领域,特别涉及一种工作流文件编译方法及装置。



背景技术:

工作流是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。利用工作流,可以为了实现某个业务目标,利用计算机在多个参与者之间按照某种预定规则自动传递文档、信息或者任务。

wf,即windowsworkflowfoundation,是微软的一款用于快速构建基于工作流的应用程序的编程模型、引擎和工具。在应用过程中,主要依赖应用程序、工作流引擎和自定义编译程序来实现对于工作流的处理。其中,应用程序指运行工作流的应用,可以是一个web站点,也可以是一个exe程序。工作流引擎即为wf框架,包含工作流的解析、调用和执行过程。自定义编译程序即为完成编译并保存编译结果的程序。

wf工作流文件中可以直接插入.net代码,方便了开发工作,但由于.net代码无法直接执行,所以在工作流文件在被调用的时候,wf会调起编译器将工作流文件进行编译,之后再执行所得到的编译结果,完成相应的操作任务。

但是,由于对工作流文件的编译是在wf引擎在底层自己完成的,在编译完成之后系统对于编译结果并不会保存。在每次需要调用编译结果的时候均需要对相应的工作流文件进行重新编译。这样一来,系统需要在编译动作上耗费大量的时间和资源。如果发生在联机交易的过程中,可能会因为资源被频繁占用,导致系统分配给交易进程的资源不足,从而对交易造成较大影响。在某些情况下,由于对编译结果文件的需求量提升,可能会需要对大量的工作流文件进行编译,造成并发量较大,从而造成cpu使用率过高,进一步延长响应时间,对系统处理工作流任务造成较大影响。



技术实现要素:

本说明书实施例的目的是提供一种工作流文件编译方法及装置,以缓解获取工作流编译文件的过程中会耗费大量资源从而影响系统正常运行的问题。

为了解决上述技术问题,本申请实施例提供一种工作流文件编译方法及装置是这样实现的:

一种工作流文件编译方法,包括:

查询是否存在与待处理工作流文件相对应的备份工作流文件;所述备份工作流文件对应有第一编译文件;所述第一编译文件为当前使用的编译文件;

若存在,在所述待处理工作流文件与所述备份工作流文件不相同时,编译所述待处理工作流文件,得到第二编译文件,以便于将所述第二编译文件代替所述第一编译文件作为当前使用的编译文件。

一种工作流文件编译装置,包括:

查询模块,用于查询是否存在与待处理工作流文件相对应的备份工作流文件;所述备份工作流文件对应有第一编译文件;所述第一编译文件为当前使用的编译文件;

编译模块,用于在存在所述备份工作流文件的情况下,若待处理工作流文件与所述备份工作流文件不相同时,编译待处理工作流文件,得到第二编译文件,以便于将所述第二编译文件代替所述第一编译文件作为当前使用的编译文件。

由以上本说明书实施例提供的技术方案可见,本说明书实施例通过查询对应于待处理工作流文件是否存在备份工作流文件,接着判断所述备份工作流文件与所述待处理工作流文件是否相等,决定是否还需要再次进行编译。若需要,则再次针对工作流文件进行编译生成第二编译文件,并利用所述第二编译文件替换所述第一编译文件,从而实现对于工作流文件的预编译。通过上述方法,不仅在需要获取编译文件的时候一般均能够无需编译直接得到,同时减少了系统资源的损耗,在编译流程方面节省了系统需要利用的资源,确保了工作的正常进行。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本说明书实施例一种工作流文件编译方法的流程图;

图2为本说明书实施例一种工作流文件编译方法的流程图;

图3为本说明书实施例一种工作流文件编译装置的模块图。

具体实施方式

下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。

为了解决现有技术中所存在的当需要编译文件时仍然需要再次进行编译的技术问题,针对所有工作流文件,预先对其进行编译,并将编译结果保存在对应的目录下,当需要编译文件时,直接从相应的目录中进行调用即可。以下结合附图1说明本申请一种工作流文件编译方法的实施例。所述方法的执行主体为服务器。具体实施步骤如下:

s110:查询是否存在与待处理工作流文件相对应的备份工作流文件。

工作流文件是用于处理业务流程的一种文件,一般情况下为文本文件,后台操作人员可以直接对工作流文件进行使用,更多情况下,可以对工作流文件进行编译,得到与图形操作界面具有更高关联性的编译文件,从而更好地执行相应的操作。在本申请的一个实施例中,工作流文件可以是wf工作流文件,即基于windowsworkflowfoundation所生成的工作流文件。当然,所述工作流文件也可以是其他类型的可适用于本申请应用环境的工作流文件。

在一个实施例中,为了执行对于工作流文件的编译,可以预先扫描所保存的一个或多个工作流文件,将扫描得到的工作流文件作为待处理工作流文件。在之后的编译过程中,依次针对扫描得到的待处理工作流文件进行备份工作流文件的查询。通过待处理工作流文件的确定,使得之后能够依次对所有工作流文件实现查询操作,确保不会因为遗漏对于工作流文件的编译导致最终获取到错误的编译结果。

一般情况下,对应于待处理工作流文件,保存有备份工作流文件。备份工作流文件可以是具有类型标识的工作流文件。对工作流文件设置类型标识,可以是针对工作流文件的后缀进行修改,也可以是设定一个特殊目录用于保存所述工作流文件。根据所述备份工作流文件的类型标识,可以将备份工作流文件与对应的工作流文件进行区分,同时不修改所述工作流文件的内容,便于对所述备份工作流文件的查询比较。

待处理工作流文件与相对应的备份工作流文件可以具有相同的内容。通过设置备份工作流文件,与相应的待处理工作流文件进行对比,可以判断待处理工作流文件是否进行了改动,从而决定是否需要对待处理工作流文件进行再一次编译。

对应于备份工作流文件还保存有第一编译文件。针对工作流文件的编译操作会生成编译文件,将所述编译文件作为第一编译文件进行保存。所述第一编译文件为当前有效的编译文件,即当需要某一工作流文件的编译文件时,调用对应于所述工作流文件的第一编译文件。

在针对备份工作流文件进行查询的时候,可以查找是否存在具备特殊标记的工作流文件。例如,若之前保存备份工作流文件的方式是将工作流文件的后缀进行修改,在查询备份工作流文件的时候,可以查看目录中是否保存有后缀修改为该种形式的文件。又或者之前在工作流文件的保存目录中设置特殊目录用于保存备份工作流文件,在查询备份工作流文件的时候,可以查看保存该待处理工作流文件的文件夹中的该特殊目录中是否保存有备份工作流文件。当然,具体的查询方式不限于上述两种,现实情况中,应当结合具体的对备份工作流文件的标记方式实现相应的查询。

对于待处理工作流文件,可以在待处理工作流文件的保存目录下设置编译目录,用于保存对应的备份工作流文件和第一编译文件。当需要查询是否存在与待处理工作流文件相对应的备份工作流文件时,可以直接查看该目录下是否存在进行了标记的工作流文件。同时也可以直接从所述编译目录中获取第一编译文件。通过设置编译目录,可以减少查询的步骤,简化工作流程从而提升工作效率。

服务器可以在接受到某一特殊指令后,开始针对所有待处理工作流文件的扫描和处理。所述特殊指令,可以是在程序的初始化阶段,由系统自动生成,从而实现在系统的初始化阶段开始上述步骤,查询是否存在与待处理工作流文件相对应的备份工作流文件,以及进行之后的相应操作。在程序初始化阶段接收到特殊指令开始上述操作过程,使得在系统正常运行时,若需要获取某工作流文件的编译结果时,直接调用相应的第一编译文件即可。将编译步骤提前至获取编译文件之前,能够确保所获取到的编译文件均为当前有效的编译文件。

在程序初始化阶段,可能会存在其他进程的干扰,使得对待处理工作流文件进行编译影响程序的正常启动。当编译过程可能影响程序的正常启动时,应当终止在程序初始化阶段对于待处理工作流文件的编译进程,将编译进程后移,使得程序能够正常启动。例如,可以在后续接收到获取第一编译文件的请求时,生成某一特殊指令,开始针对所有待处理工作流文件的扫描和编译。这样一来,避免因为对工作流文件的编译过程造成系统无法正常运行。

利用一个具体的示例对上述过程进行说明,在wf文件夹中保存有待处理工作流文件.xaml文件、备份工作流文件.xaml.copy文件和第一编译文件.dll文件。其中,.dll文件和.xaml.copy文件保存在wf文件夹中的dll目录中。在程序的初始化阶段,对待处理工作流文件的遍历操作执行至wf文件夹时,查询该文件夹下的dll目录下是否存在.xaml.copy文件,根据查询结果执行相应的后续操作。

s120:若存在,在所述待处理工作流文件与所述备份工作流文件不相同时,编译所述待处理工作流文件,得到第二编译文件,以便于将所述第二编译文件代替所述第一编译文件作为当前使用的编译文件。

由于在编译过程后,对应于编译后的待处理工作流文件,保存有备份工作流文件。若经过查询,发现对应于工作流文件存在备份工作流文件,则之前针对所述待处理工作流文件进行过编译,对应于所述待处理工作流文件存在第一编译文件。若之前的编译操作之后,待处理工作流文件并未改变,则可以直接调用第一编译结果。

但是由于版本更新或系统故障等问题,对于待处理工作流文件,可能会与编译得到第一编译文件的工作流文件存在区别,即,编译所述待处理工作流文件得到的编译文件与第一编译文件之间存在区别。为了确保最终所使用的编译文件的准确性,需要重新进行编译。

若判断需要对待处理工作流文件进行编译,则对待处理工作流文件执行编译操作,得到新的编译文件,作为第二编译文件。第二编译文件是对应于待处理工作流文件的编译文件,在编译过程之后至下次编译过程开始之前均为有效的编译文件。

在对待处理工作流文件进行编译时,可以预先创建临时文件夹,编译得到第二编译文件后,将所述第二编译文件保存于临时文件夹中。当之后需要利用第二编译文件代替所述第一编译文件时,从临时文件夹中拷贝所述第二编译文件,进行相应的替换操作。在替换过程完成后,删除所述临时文件夹。这样一来,针对待处理工作流文件的编译以及第二编译文件的保存均在临时文件夹中进行,不会对待处理工作流文件所处的文件夹中的文件存在干扰,确保编译过程的顺利进行。

在编译得到第二编译文件后,一般需要利用所述第二编译文件代替所述第一编译文件作为当前使用的编译文件,确保在后续过程中需要编译文件时所获取到的是正确的编译文件。代替过程可以是利用所述第二编译文件替换所述第一编译文件,使得对应目录中只存在一个编译文件供后续调用;替换过程也可以是对第二编译文件进行标记,例如标记所有编译文件的修改时间,在需要调用编译文件时调用修改时间最靠后的编译文件作为当前所使用的编译文件。以上仅仅只是针对将所述第二编译文件代替所述第一编译文件作为当前使用的编译文件的两种实施例,本领域技术人员在结合本申请技术方案的基础上还可以得到更多方法,在此不再一一赘述。

同时,为了能够在之后对待处理工作流文件与备份工作流文件进行比较时,得到正确的编译结果,需要再次对工作流文件进行备份。结合用于区分备份工作流文件的特殊标识,对当前的待处理工作流文件进行处理,得到新的备份工作流文件,代替之前所保存的备份工作流文件。例如,若备份工作流文件与工作流文件之间的区别在于备份工作流文件的后缀进行了修改,则修改备份工作流文件的后缀标识,将修改后的所述待处理工作流文件作为新的备份工作流文件;若所述备份工作流文件与工作流文件本身并无区别,但在工作流文件的保存目录下设置有特定目录用于保存所述备份工作流文件,则可以删除特定目录中的原备份工作流文件,将待处理工作流文件拷贝至该特定目录,作为新的备份工作流文件。以上仅仅只是用于对待处理工作流文件进行处理并代替备份工作流文件的两种实施例,具体实施过程中结合针对备份工作流文件的标记可以提出更多的实施例用于执行上述步骤。

在编译所述待处理工作流文件得到第二编译文件之后,还可以放弃所述第一编译文件。放弃所述第一编译文件,可以指在需要编译文件不对所述第一编译文件进行获取,具体可以是将所述第一编译文件删除,也可以是在选择编译文件时根据特殊标识选用当前有效的编译文件,放弃对于所述第一编译文件的调用。

通过一个具体的示例对上述步骤进行说明,在wf文件夹中保存有待处理工作流文件.xaml文件、备份工作流文件.xaml.copy文件和第一编译文件.dll文件。其中,.dll文件和.xaml.copy文件保存在wf文件夹中的dll目录中。对待处理工作流文件的遍历操作执行至wf文件夹时,查询该文件夹下的dll目录下是否存在.xaml.copy文件。若查询结果显示在dll目录下存在.xaml.copy文件,则再将.xaml文件与.xaml.copy文件的内容进行对比,若比较结果显示不同,则可能因为系统版本更新等原因,导致新版本下的.xaml文件不同于上次编译过程所针对的工作流文件,从而导致针对所述待处理工作流文件编译得到的.dll文件并不等同于当前的第一编译文件.dll文件。此时需要对wf文件夹下的.xaml文件进行编译,编译得到第二编译文件对应的.dll文件。用该.dll文件替换dll目录中的第一编译文件.dll文件。同时将.xaml文件另存于dll目录下,修改后缀为.xaml.copy,替换其中的.xaml.copy文件。

由于预先针对待处理工作流文件进行了处理,所以在需要能够获取对应的第一编译文件,用于后续工作流程的进行。同时因为备份工作流的设定,使得第一编译文件存在问题时能够对其进行更改。通过上述操作步骤,使得在交易过程中不必在需要编译文件时仍然进行编译操作,节省了时间,提高了工作效率。

以下结合一个具体的实施方式对本说明书的上述实施例进行举例说明。如图2所述,上述方法还可以通过如下步骤实现:

步骤210:查询是否存在与待处理工作流文件相对应的备份工作流文件;

步骤220:比较所述待处理工作流文件与所述备份工作流文件是否相同;

步骤230:编译所述待处理工作流文件,得到第二编译文件,替代第一编译文件。

同时,如图2所示,通过步骤210的查询,查询结果可能显示不存在对应于待处理工作流文件的备份工作流文件。该种查询结果显示所述待处理工作流文件是在上次编译过程之后产生的工作流文件,之前并未对其进行编译生成编译文件,也不存在与其相对应的备份工作流文件。则按照步骤240所述,需要对所述待处理工作流文件进行编译,生成第二编译文件。之后可以按照前述方法,将第二编译文件保存为第一编辑文件,并将所述待处理工作流文件保存为备份工作流文件。

通过一个具体的示例对上述步骤进行说明,对在wf文件夹中保存有待处理工作流文件.xaml文件。一般情况下,在wf文件夹中的dll目录中保存有备份工作流文件.xaml.copy文件和第一编译文件.dll文件。对工作流文件的遍历查询到wf文件夹时,查看其中的dll目录下是否存在.xaml.copy文件。若查询结果显示其中不存在.xaml.copy文件,则之前并未针对该.xaml文件进行编译。对所述.xaml文件进行编译,生成第二编译文件.dll文件。将该.dll文件保存在dll目录中作为第一编译文件。同时将.xaml文件也保存在dll目录下,修改后缀为.xaml.copy,作为对应于所述待处理工作流文件的备份工作流文件。

通过上述步骤,解决了对于新加入的工作流文件的编译处理问题,使得针对不同情况的待处理工作流文件的编译能够正常进行。

再者,如图2所示,若根据步骤220中的判断结果之后,可能会显示所述待处理工作流文件等同于所述备份工作流文件,则说明之前针对所述待处理工作流文件进行过编译,并且所述待处理工作流文件在上次编译之后并没有发生改变,相应的,对应于待处理工作流文件的第一编译结果也是当前所需要的正确的编译结果,后续过程中需要编译文件时直接调用所述第一编译文件即可。因此,在该种判断结果的情况下,可以采取步骤250中的处理方式,跳过后续的编译步骤,在存在下一个待处理工作流文件的情况下直接处理下一个待处理工作流文件即可。

采用一个具体的示例进行说明,在wf文件夹中保存有待处理工作流文件.xaml文件、备份工作流文件.xaml.copy文件和第一编译文件.dll文件。其中,.dll文件和.xaml.copy文件保存在wf文件夹中的dll目录中。对待处理工作流文件的遍历操作执行至wf文件夹时,查询该文件夹下的dll目录下是否存在.xaml.copy文件。若查询结果显示在dll目录下存在.xaml.copy文件,则再将.xaml文件与.xaml.copy文件的内容进行对比,若比较结果显示相同,则不对其中的三种文件进行处理。若此时遍历过程未结束,寻找下一个待处理工作流文件的目录进行相应的操作。

通过上述操作步骤,针对某些待处理工作流文件,只需要通过查询与比较操作就能判断出无需对该待处理工作流文件进行编译,从而避免了资源的浪费,提高了预编译过程的处理效率。

由于一般情况下,除系统更新外,不易导致工作流文件的变化,为了节省系统资源,在对系统中的所有工作流文件实现预编译之后,之后系统的运行过程中,无需再依次进行编译操作。不同于现有技术在需要编译文件时,针对每个工作流文件进行额外编译得到编译文件在加以利用,本申请的技术方案大大地减少了在系统正常运行过程中对于系统资源的损耗,缓解了工作流文件的编译造成系统卡顿甚至死机的问题。

以下介绍本申请一种工作流文件编译装置的实施例,如图3所示,该装置包括:

查询模块310,用于查询是否存在与待处理工作流文件相对应的备份工作流文件;所述备份工作流文件对应有第一编译文件;所述第一编译文件为当前有效的编译文件;

编译模块320,用于在存在所述备份工作流文件的情况下,且所述待处理工作流文件与所述备份工作流文件不相同时,编译所述待处理工作流文件,得到第二编译文件;将所述第二编译文件作为新的当前有效的编译文件。

所述第一编译文件是通过对所述备份工作流文件编译得到的。

所述装置还包括:

第二编译结果再生成模块330,用于当不存在与所述待处理工作流文件相对应的备份工作流文件时,编译所述待处理工作流文件,得到第二编译文件;将所述第二编译文件作为新的当前有效的编译文件。

所述第二编译结果再生成模块330,包括:

备份工作流文件处理子单元331,用于修改所述待处理工作流文件的后缀标识,将修改后的所述待处理工作流文件作为备份工作流文件。

所述装置还包括:

放弃模块340,用于放弃所述第一编译文件。

所述装置还包括:

维持模块350,用于在所述待处理工作流文件与所述备份工作流文件相同时,维持所述第一编译文件为当前有效的编译文件。

所述查询模块310,包括:

初始化判断子单元311,用于在应用程序初始化阶段,查询是否存在与待处理工作流文件相对应的备份工作流文件。

所述查询模块310,还包括:

编译目录判断子单元312,用于查询编译目录中是否存在备份工作流文件,所述编译目录,用于保存所述备份工作流文件和第一编译文件。

所述编译模块320,包括:后缀修改子单元321,用于修改所述待处理工作流文件的后缀,代替所述备份工作流文件;

工作流备份文件322,用于利用所述第二编译文件代替所述第一编译文件。

所述编译模块320,还包括:

临时文件夹创建子单元323,用于创建临时文件夹;

第二编译结果生成子单元324,用于编译待处理工作流文件,在所述临时文件夹中生成第二编译文件。

所述工作流文件,包括:

wf工作流文件;所述wf工作流文件,是基于windowsworkflowfoundation所生成的工作流文件。

在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1