代码之家  ›  专栏  ›  技术社区  ›  Boden

报告与编码思想?

  •  9
  • Boden  · 技术社区  · 16 年前

    最近我有一个项目,在这个项目中,我必须从特定的软件系统获取一些数据到一个portlet。软件使用了数据库,我花了相当长的时间对我想要的数据进行建模,然后创建一个web服务,以便我的portlet能够获取信息。

    突然我意识到我在浪费时间。我抓起birt,把它放到一个portlet中,然后编写一些报告,直接从数据库中抓取必要的数据。我一个下午就做完了。

    我知道报道是单向的,但这让我思考。报表工具对于从实际数据创建报表(duh)非常有效,但是当您这样做时,您将绕过您的模型,除非在简单情况下,它不是数据在数据库中的直接表示。

    如果您正在编写一个数据密集型应用程序,并且需要执行非琐碎的报告功能,那么您是否绕过应用程序,使用birt或crystal reports之类的工具?作为整个过程的一部分,您如何管理这些工具?你认为你写的报告是你申请表的一部分吗?报告是一个视图、一个模型和一个控制器(如果你愿意的话),你是如何处理、解释和计划的?

    修改后的问题:在一个完美的世界里,一个报表执行一些业务计算是可能的,甚至是常见的,您希望它包含在您的应用程序中。这可能导致返回给用户的信息不匹配。另一方面,报表工具使收集和显示信息变得如此容易,以至于很难采用纯粹主义者的方法,从应用程序内部执行所有操作。有没有什么好的技术可以确保报表中的数据与常规gui中显示的数据相匹配?

    5 回复  |  直到 14 年前
        1
  •  4
  •   ericvg    16 年前

    我认为报告只是数据的另一个视图,而不是一个视图/模型/控制器(好吧,可能是一个视图和控制器)。

    我们让报表(内置于sql2008reportingservices)使用应用层中的一个服务来获取数据(按照我们的标准,数据访问在存储库中)。这些函数可以执行一个简单的查询或处理非常复杂的处理,这将是报表环境或存储过程中的一个噩梦。在实践中,我们发现这只需要编写一些一次性的存储过程,随着系统的不断增长,这些存储过程将成为维护的噩梦。

    将报告简单地视为一次性的或不集成到应用程序设计中是一个巨大的错误。

        2
  •  2
  •   ChrisLively    16 年前

    报告是至关重要的。报告对于将在一个系统中收集到的价值分享给外部用户(例如,不直接使用该系统的用户(例如,销售数字的管理))至关重要。因此,报告不仅仅是显示事实和数字,而且是几乎所有推动商业活动的系统的核心。

    至少更先进的系统允许您增强它们:使用您自己可重用的“控件”。即使是后退的方法也可以实现——只要使用正确的插件。有一次我写了一个系统,从报告中发送电子邮件,因为系统不允许更改。它起作用了——尽管它不是故意这样使用的;)

    报表是应用程序的重要组成部分,如果您为客户更改报表,您将获得很大的自由。有时候你会想出比当初建立系统时想象的更多的可能性。

    所以对我来说,报告是系统的一部分。

        3
  •  1
  •   gbn    16 年前

    报告是你应用程序的一部分,但因为它们通常是用户对数据捕获用户界面(比如说,你的数据捕获用户界面)有很强的想法的东西,所以我会牺牲纯洁性,以方便/快速地交付,并返回到“真正的”编码…-)

    一旦你做了一个报告,用户想要另一个或改变颜色或可选分组或更多的过滤或…一些能让你远离刺激的东西…所以我不会破坏保持纯洁的肠子。

        4
  •  1
  •   Scott Willeke    16 年前

    这的确是一条细线。您不想花费太多时间构建报表(用户希望您随时更改报表),但您不想通过将业务逻辑放入报表中来复制逻辑!通过我们在datadynamics的报告产品,我认为我们已经在这两个折衷方案之间达成了一个愉快的折衷方案。

    通过使用objectdataprovider(请参阅下面的链接了解更多信息),您可以将报表直接绑定到业务对象(普通的旧对象),这样就不必绕过业务层来获取数据。同时,我们提供了一种引用和使用报表中其他库中函数的方法。这样,如果您已经配置了一些代码来执行一些业务逻辑计算,则可以直接在报表中重用这些函数。你也可以在下面的链接中看到一个例子。

    斯科特威利克

    数据动态/图形

        5
  •  1
  •   Roy Rico Alexandr Lazarev    16 年前

    我一直使用报表的方式是将部分报表视为代码库的一部分,并与应用程序一起存储在源代码中。在某些情况下,报表比应用程序更重要,因为管理层根据报表数据做出业务决策,错误的信息可能导致他们取消产品线、取消活动或解雇销售人员。显然,这在很大程度上取决于您的管理和应用程序。

    关于保持模型的一致性,这是一个比较棘手的问题。确保报表和应用程序之间模型一致的一种方法是使用存储过程(或视图)检索数据,具体取决于应用程序的体系结构。

    推荐文章