一种记录审计日志的方法、装置及业务系统的制作方法

文档序号:6336898阅读:314来源:国知局
专利名称:一种记录审计日志的方法、装置及业务系统的制作方法
技术领域
本发明属于计算机软件领域,尤其涉及一种记录审计日志的方法、装置及业务系统。
背景技术
在ERP系统对系统数据做出的任何操作,都应该能够被记录。现有系统一般在系统功能模块中添加相应的代码,在用户操作时记录用户的行为。由于在不同的系统功能模块都要单独添加相应的记录审计日志的代码,因此存在以下缺点1、工作量巨大,新增模块需要一一处理相关功能。由于系统功能模块有很多,每一个系统功能模块都需要单独添加相应的记录审计日志的代码,因此工作量巨大。当新增加功能模块后有需要一一为新增加的功能模块添加相应的记录审计日志的代码。不利于扩展。2、不利于代码的维护,代码的一致性很难保证。由于代码分散于各个系统功能模块,因此代码的维护就显得较为困难,且很难保证一致性。3、不能实现功能级别的热拔插技术。

发明内容
本发明实施例的目的在于提供一种记录审计日志的方法,旨在解决记录审计日志工作量大,且不利于扩展和维护的问题。本发明实施例是这样实现的,一种记录审计日志的方法,所述方法包括下述步骤菜单事件将用户发出的操作请求通知相关业务组件;在加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求;在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象。本发明实施例的另一目的在于提供一种记录审计日志的装置,所述装置包括操作请求接收单元,菜单事件将用户发出的操作请求通知相关业务组件;接口通知插件单元,用于在加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求;审计日志记录单元,用于在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象。本发明另一目的在于提供一种包含所述记录审计日志的装置的业务系统。由上可知,本发明实施例提供的一种记录审计日志的方法、装置及业务系统,以审计日志插件的形式实现审计日志的记录,能够动态地记录某个功能模块的审计日志,且易于审计日志的管理和控制。同时,统一用审计日志插件记录审计日志,使得代码容易维护,新增模块也不需要单独扩展记录审计日志的功能,仅需在相应的表中添加一条记录后加载审计日志插件就能实现。且能够根据需要加载审计日志插件,对不需要做审计日志的业务组件不再加载审计日志插件。自定义的接口根据用户的实际需求做不同的属性、事件及方法的定义。可根据其不同的定义满足各业务模块间的通信、业务模块和插件间的通信及主控程序和各业务模块程序的通信。实现了主控程序与子模块菜单间的无缝集成,具有良好的可扩展性,适合多人大规模团队开发的系统。


图1是本发明第一实施例提供的记录审计日志的方法的流程图;图2是本发明第二实施例提供的记录审计日志的方法的流程图;图3是本发明第三实施例提供的记录审计日志的方法的流程图;图4本发明第一实施例提供的接口与主控程序和业务模块通信的示意图;图5本发明第一实施例提供的接口与主控程序和业务模块通信的一个实例的流程图;图6是本发明实施例提供的记录审计日志的装置的结构框图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明实施例在抽象了业务系统中的业务对象后,通过加载审计日志插件记录操作请求执行前后调用的对象的属性信息的变化作为审计日志。本发明提供了一种记录审计日志的方法、装置所述方法包括菜单事件将用户发出的操作请求通知相关业务组件;在加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求;在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象。所述装置包括操作请求接收单元,菜单事件将用户发出的操作请求通知相关业务组件;接口通知插件单元,用于在加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求;审计日志记录单元,用于在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。实施例一图1示出了本发明第一实施例提供的记录审计日志方法的流程,通过加载审计日志插件记录操作请求执行前后调用的对象的属性信息的变化作为审计日志,详述如下
在步骤SlOl中,菜单事件将用户发出的操作请求通知相关业务组件。在本发明实施例中,当接收到用户发出的某操作请求时,首先由一个菜单事件将用户发出的操作请求通知相关业务组件。所述用户发出的操作请求包括删除请求、保存请求、复制请求等。在本发明实施例中,系统预先定义了一张表,所述表中含有系统功能模块与业务组件的对应关系。因此,菜单事件通过读取所述含有系统功能模块与业务组件对应关系的表后,将用户发出的操作请求通知相关的业务组件。当系统需要扩展新的功能模块时,可通过在所述含有系统功能模块与业务组件的对应关系的表中加入相应的记录实现。例如预先设定的含有系统功能模块与业务组件的对应关系的表为t_ DataFlowDetaiIFimc,内容为组件名.类名。所述组件名为业务组件的名称,所述类名为系统功能模块的类名。这时,菜单事件便可读通过取表LDataFlowDetai IFunc获得相关业务组件名。 在步骤S102中,加载审计日志插件后,业务组件调用接口通知审计日志插件业务组件将执行操作请求。在本发明实施例中,以插件的形式记录审计日志,因此,在记录审计日志之前,需加载审计日志插件。加载审计日志插件后,业务组件调用接口通知所述审计日志插件业务组件将执行操作请求。在本发明实施例中,所述接口为预先定义的供各模块调用的接口。可用于各模块间相互通信,可用于各模块与插件通信,也可作为主控程序与各业务模块的桥梁供各模块和主控程序引用等。在此步骤中,所述接口用于通知插件业务组件做了什么,即在加载审计日志插件后,业务组件调用接口通知审计日志插件所述业务组件将执行操作请求。对此接口其他应用的详细描述,详见实施例四,在此就不再赘述了。在步骤S103中,在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象。在本发明实施例中,在系统执行用户请求的操作前,记录下操作请求执行时所调用的对象的所有属性信息。之后,业务组件执行操作请求。在本发明实施例中,业务组件在执行完操作请求后,调用接口通知审计日志插件操作请求已执行,审计日志插件记录对象此时的所有属性信息。通过记录操作请求执行前后调用的对象的属性信息的变化作为审计日志,然后将所述审计日志存储于数据库中。在本发明实施例中,以审计日志插件的形式实现审计日志的记录,能够动态地记录某个功能模块的审计日志,且易于审计日志的管理和控制。同时,统一用审计日志插件记录审计日志,使得代码容易维护,新增模块也不需要单独扩展记录审计日志的功能,仅需在相应的表中添加一条记录后加载审计日志插件就能实现。实施例二 图2示出了本发明第二实施例提供的记录审计日志方法的流程,详述如下。在步骤S201中,菜单事件将用户发出的操作请求通知相关业务组件;在步骤S202中,判断是否加载审计日志插件,是则执行步骤S203,否则执行步骤 S205。在本发明实施例中,预先设定有一张表用于描述每一个功能模块所调用的插件的集合,所述表中含有系统功能模块与其需要调用的插件的对应关系。因此通过读取此表,便可得知与接收到的用户操作的功能相关的插件是哪些。因此,业务组件通过读取用于描述每一个功能模块所调用的插件集合的表,查看与用户的操作请求对应的功能模块是否需要调用审计日志插件,便可知是否加载审计日志插件。若系统的某个功能模块需要添加插件, 则往所述用于描述每一个功能模块所调用的插件的集合的表中增加相应记录即可。若新增的模块需要添加审计日志功能,也仅需向所述用于描述每一个功能模块所调用的插件的集合的表中添加相应记录即可。例如预先设定的用于描述每一个功能模块所调用的插件的集合的表为、 Components。通过读取表t_ComponentS,查看与用户的操作请求对应的功能模块是否需要调用审计日志插件,即可知道是否加载审计日志插件。在步骤S203中,加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求。在步骤S204中,在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象。在步骤S205中,所述业务组件执行所述操作请求。在本发明实施例中,增加了一张用于描述每一个功能模块所调用的插件集合的表,能够根据需要加载审计日志插件,对不需要做审计日志的业务组件不再加载审计日志插件。实施例三图3示出了本发明第三实施例提供的记录审计日志方法的流程,详述如下。在步骤S301中,菜单事件将用户发出的操作请求通知相关业务组件; 在步骤S302中,加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求。在步骤S303中,判断是否记录所述业务组件执行所述操作请求的审计日志,是则执行步骤S304,否则执行步骤S305。在本发明实施例中,通过读取系统配置表来判断是否需要记录所述业务组件执行所述操作请求的审计日志。在步骤S304中,在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象。在步骤S305中,所述业务组件执行所述操作请求。在本发明实施例中,在加载了审计日志插件后再次通过读取系统配置表来判断是否需要记录业务组件执行操作请求的审计日志,能够解决某些可能不需要记录审计日志的业务组件却加载了审计日志插件的问题。实施例四在本发明实施例中,所述接口为预先定义的供各模块调用的接口。可用于各模块间相互通信,可用于各模块与插件通信,也可作为主控程序与各业务模块的桥梁供各模块和主控程序引用等。在此举一例说明其供各模块和主控程序引用的具体应用,但并不限于这个例子。下面将详细阐述。图4示出了接口与主控程序和业务模块之间的引用关系。
例如在本发明实施例中,首先定义一个接口,该接口包含一个类对象(若所述类对象为ParentWindow)。所述类对象包含如下成员1、包含一个属性,所述属性用于保存业务模块中菜单对象的一个副本。定义如下:Public Property ToolBar as Object。2、包含两个事件。其一,定义为 Public Event ToolBarClick (Tool As Object, bUse As Boolean), 此事件在点击某菜单项时触发;另一,定义为 Public Event PropertyChanged (ByVal PropName As String),为业务模块菜单改变事件。当业务模块给接口的属性ToolBar赋值时,将触发该事件。如Set Parentffindow. ToolBar = Bar 则会触发该事件。3、包含一个方法。所述方法定义为Public Function FireToolBarClick(Tool As Object) AsBoolean。当点击主控程序菜单时,调用该方法,并将被点击的菜单对象传入,以明确是哪个菜单被点击。即用户在界面上所做的操作都会被接口 KDEVents所捕获。下述以一个具体的实例来说明接口与主控程序和业务模块之间的通信,如图5所
7J\ ο在步骤S501中,接口的菜单对象保留业务模块A菜单的副本。 在本发明实施例中,业务模块A在自己加载完成后,通过设置接口的菜单对象属性,将内部的菜单对象赋值给接口。在赋值给接口的过程中接口触发业务模块菜单改变事件,使得接口的菜单对象得以保留业务模块A菜单的副本。其具体实现如下所示Private mToolBar As ObjectPublic Property Set ToolBar(NewVal As Object)Set mToolBar = NewValRaiseEvent PropertyChanged(" ToolBar")End Property其中,mToolBar是类对象ParentWindow中的一个模块级变量,用来保存菜单对象。在mToolBar被赋值为NewVal时,触发业务模块菜单改变事件ftOpertyChanged。在步骤S502中,把接口中储存的业务模块A菜单的副本解析后加入到主控程序的
主菜单中。在本发明实施例中,由于主控程序也引用了该接口,所以在主控程序中声明接口实例也将触发对应的业务模块菜单改变事件。系统在该事件中把接口中储存的业务模块A 菜单的副本解析后加入到主控程序的主菜单中。其具体实现如下所示Public WithEvents ThisForm As kdvbf. ParentffindowPrivate Sub ThisForm_PropertyChanged(ByVal PropName As String)Case" ToolBar"Dim业务模块菜单的副本As Object
Set业务模块菜单的副本=ThisForm. ToolBar通过解析业务模块菜单的副本,把相同的菜单内容加入到主控程序的主菜单中End Sub在步骤S503中,接口通知业务模块A对用户操作做出响应。在本发明实施例中,当接收到用户点击主控程序上菜单的请求时,系统将调用接口的FireToolBarClick方法,并由接口触发ToolBarClick事件通知业务模块A对用户操作做出响应。其具体实现方法如下1、主控程序菜单控件Bar的ToolClick事件的VB伪代码Private Sub Bar_ToolClick(ByVal Tool As Object)IfTool是主控程序自己默认的菜单项then进行相关的处理Else If iTool是业务模块菜单thenThisForm. FireToolBarClick ToolEnd IfEnd Sub2、接口 FireToolBarClick 方法的 VB 伪代码Public Function FireToolBarClick(Tool As Object)As BooleanDim b As Booleanb = FalseRaiseEvent ToolBarClick(Tool, b)FireToolBarClick = bEnd Function3、业务模块中对接口 ToolBarClick实现的VB伪代码Private WithEvents Parentffindow As KDVBF. ParentffindowPrivate Sub Parentffindow_TooIBarClick(Tool As Object, bUse As Boolean)把用户点击的菜单对象传给自己模块内的对应的处理函数处理,实现具体的业务功能.bUse = TrueEnd Sub在本发明实施例中,接口可根据用户的实际需求定义不同的属性、事件及方法,以此来满足各业务模块间的通信、业务模块和插件间的通信及主控程序和各业务模块程序的通信。实现了主控程序与子模块菜单间的无缝集成,具有良好的可扩展性,适合多人大规模团队开发的系统。实施例五图6示出了本发明实施例提供的记录审计日志的装置的结构,为了便于说明,仅示出了与本发明实施例相关的部份。该装置可以是内置于业务系统中的软件单元、硬件单元或者软硬件相结合的单元,或者作为独立的挂件集成到业务系统或业务系统的应用系统中。其中
操作请求接收单元601,菜单事件将用户发出的操作请求通知相关业务组件。插件加载判断单元602,用于判断是否加载审计日志插件。在本发明实施例中,所述插件加载判断单元在判定结果为是时,加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求; 所述插件加载判断单元在判定结果为否时,所述业务组件执行所述操作请求。接口通知插件单元603,用于在加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求。审计日志记录判断单元604,用于判断是否需要记录所述业务组件执行所述操作请求的审计日志。在本发明实施例中,所述审计日志记录判断单元判定结果为是时,在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象;所述审计日志记录判断单元判定结果为否时,所述业务组件执行所述操作请求。审计日志记录单元605,用于在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象。在本发明实施例中,以审计日志插件的形式实现审计日志的记录,能够动态地记录某个功能模块的审计日志,且易于审计日志的管理和控制。同时,统一用审计日志插件记录审计日志,使得代码容易维护,新增模块也不需要单独扩展记录审计日志的功能,仅需在相应的表中添加一条记录后加载审计日志插件就能实现。且能够根据需要加载审计日志插件,对不需要做审计日志的业务组件不再加载审计日志插件。自定义的接口根据用户的实际需求做不同的属性、事件及方法的定义。可根据其不同的定义满足各业务模块间的通信、 业务模块和插件间的通信及主控程序和各业务模块程序的通信。实现了主控程序与子模块菜单间的无缝集成,具有良好的可扩展性,适合多人大规模团队开发的系统。本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种记录审计日志的方法,其特征在于,所述方法包括下述步骤 菜单事件将用户发出的操作请求通知相关业务组件;在加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求;在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象。
2.如权利要求1所述的方法,其特征在于,所述菜单事件将用户发出的操作请求通知相关业务组件的具体实现为预先定义一张含有系统功能模块与业务组件的对应关系的表,扩展新的功能模块能够通过在所述表中加入相应记录实现;菜单事件通过读取所述含有系统功能模块与业务组件对应关系的表后,将用户发出的操作请求通知相关的业务组件。
3.如权利要求1所述的方法,其特征在于,所述接口为预先定义的供各模块调用的接口,可用于各模块间相互通信,可用于各模块与插件通信,也可作为主控程序与各业务模块的桥梁供各模块和主控程序引用。
4.如权利要求1所述的方法,其特征在于,在所述步骤菜单事件将用户发出的操作请求通知相关业务组件之后,所述步骤加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求之前还包括判断是否加载审计日志插件;是则加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求;否则所述业务组件执行所述操作请求。
5.如权利要求4所述的方法,其特征在于,所述判断是否加载审计日志插件的方法如下预先设定有一张表用于描述每一个功能模块所调用的插件的集合,功能模块添加新的插件,往所述表中相应记录即可,且新的模块需要添加审计日志记录功能时,向所述表中增加相应的记录即可;通过读取所述表,查看与用户的操作请求对应的功能模块是否需要调用审计日志插件,则可知是否加载审计日志插件。
6.如权利要求1所述的方法,其特征在于,在所述步骤加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求之后,所述步骤在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象之前,还包括通过读取系统配置表判断是否需要记录所述业务组件执行所述操作请求的审计日志;是则在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象;否则所述业务组件执行所述操作请求。
7.一种记录审计日志的装置,其特征在于,所述装置包括操作请求接收单元,菜单事件将用户发出的操作请求通知相关业务组件;接口通知插件单元,用于在加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求;审计日志记录单元,用于在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象。
8.如权利要求7所述的装置,其特征在于,所述装置还包括插件加载判断单元,用于判断是否加载审计日志插件;所述插件加载判断单元在判定结果为是时,加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求;所述插件加载判断单元在判定结果为否时,所述业务组件执行所述操作请求。
9.如权利要求7所述的装置,其特征在于,所述装置还包括审计日志记录判断单元,用于判断是否需要记录所述业务组件执行所述操作请求的审计日志;所述审计日志记录判断单元判定结果为是时,在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象;所述审计日志记录判断单元判定结果为否时,所述业务组件执行所述操作请求。
10.一种业务系统,其特征在于,所述系统包括权利要求7至9任一权利要求所述的记录审计日志的装置。
全文摘要
本发明适用于计算机软件领域,提供了一种记录审计日志的方法、装置及业务系统,该方法包括下述步骤菜单事件将用户发出的操作请求通知相关业务组件;在加载审计日志插件后,所述业务组件调用接口通知所述审计日志插件所述业务组件将执行所述操作请求;在所述操作请求执行前后,所述审计日志插件记录对象的属性信息,所述对象为所述操作请求执行时所调用的对象。本发明以审计日志插件的形式实现审计日志的记录,易于审计日志的管理和控制。且统一用审计日志插件记录审计日志,代码容易维护。
文档编号G06F11/34GK102479076SQ20101056095
公开日2012年5月30日 申请日期2010年11月26日 优先权日2010年11月26日
发明者张庆 申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1