在企业的IT信息系统建设中,有一种对象在企业范围内是跨系统存在的,例如人员、职能部门、机器、客户等。
在企业的业务系统设计时,往往需要与这些主数据对象打交道,并且同时其他业务系统进行交互,对主数据对象进行通过维护,例如在运维系统中,对机器这个主数据对象,监控子系统做的是监控作业,自动化子系统做的是自动化作业,ITSM子系统做的是生命周期管理,那如何跨系统做好主数据对象的管理呢?
一个主数据对象应该具有一个固定的格式,一般包括唯一ID和必要的信息字段,例如企业员工,唯一ID是工号,人员的身份证信息、部门信息、所在职位都是他的必须字段信息。
一个主数据对象的信息字段可能由多个系统分别提供的,例如人员的工资是由财务系统提供的,所在职位是由HR系统提供的。
一个完整的主数据对象,可以有很多信息字段,但是不一定都开放给所有系统,例如工资就是只开放给财务系统。
定义好了一个主数据对象的格式后,就可以定义他的数据交换格式了,一般根据权限要求在完整的字段上进行限制。
子业务系统拿到主数据对象的交换格式后,将主数据对象存入到自身系统后,可以根据自身业务再进行数据管理关联与扩充。
例如:拿到企业员工这个主数据对象后,在HR系统内可以管理他的考勤记录,也可以设置他在HR系统的登录权限。
在做业务系统的功能设计时往往要考虑主数据对象涉及的概念,可以依赖拿到的主数据对象的交换格式,不可以依赖主数据对象的完整定义或者其他系统中对主数据对象的数据结构。
例如,HR系统在设计功能时,是需要企业员工这个主数据对象的,可以依赖它给HR系统的数据交换格式,但是不能依赖企业员工的工资字段(因为他不在交换格式中,只是全局信息格式)。
可以基于系统之间的交换格式,但是标准数据需要来自标准数据源
有时候多系统之间也会对主数据数据格式进行交换,例如财务系统与HR系统之间,对主数据对象的交换格式之外的数据进行交换,功能设计可以依赖这样的数据交换格式定义,但是此类数据定义,不可以与企业已经定义的主数据对象的交换格式重叠,会造成数据不准确问题。
例如在企业的主数据对象的交换格式中,定义了企业员工的所在职级,但是本来是HR作为官方数据提供给数据中心的,各个系统再从数据中心消费,但是运维系统因为自身的需求,从非数据中心、HR系统汇总获取了该数据,这样由于不能确保数据源的准确性和一致性,很容易出现问题。
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss
好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
我在Rails工作并有以下类(class):classPlayer当我运行时bundleexecrailsconsole然后尝试:a=Player.new("me",5.0,"UCLA")我回来了:=>#我不知道为什么Player对象不会在这里初始化。关于可能导致此问题的操作/解释的任何建议?谢谢,马里奥格 最佳答案 havenoideawhythePlayerobjectwouldn'tbeinitializedhere它没有初始化很简单,因为你还没有初始化它!您已经覆盖了ActiveRecord::Base初始化方法,但您没有调
我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser
在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee