Недавно у меня был проект, в котором мне нужно было передать некоторые данные из конкретной программной системы в портлет. Программное обеспечение использовало базу данных, и я потратил немало времени на моделирование нужных мне данных, а затем на создание веб-службы, чтобы мой портлет мог получать информацию.
Тогда меня вдруг поразило, что я трачу впустую свое время. Я схватил BIRT, бросил его в портлет, а затем просто написал несколько отчетов, которые непосредственно взяли необходимые данные из базы данных. Я закончил после обеда.
Я понимаю, что отчетность - это улица с односторонним движением, но это заставило меня задуматься. Инструменты отчетности могут быть очень эффективными для создания отчетов (дух) из ваших реальных данных, но когда вы делаете это, вы обходите свою модель, которая, за исключением простых случаев, не является прямым представлением ваших данных, поскольку они существуют в вашей базе данных.
Если вы пишете приложение с интенсивным использованием данных и вам требуется возможность составлять нетривиальные отчеты, обходите ли вы свое приложение и используете что-то вроде BIRT или Crystal Reports? Как вы управляете этими инструментами как частью вашего общего процесса? Считаете ли вы отчеты, которые вы пишете, частью вашего заявления и относитесь к ним как к таковым? Отчет - это представление, а модель и контроллер (если хотите) - все в одном большом беспорядке, как вы справляетесь с этим, интерпретируете и планируете это?
Пересмотренный вопрос: возможно и даже распространено, что отчет будет выполнять некоторые бизнес-вычисления, которые в идеальном мире вы хотели бы включить в свое приложение. Это может привести к несоответствию информации, возвращаемой пользователю. С другой стороны, инструменты отчетности позволяют собирать и отображать информацию настолько легко, что трудно придерживаться пуристического подхода и делать все из приложения. Существуют ли хорошие методы для обеспечения того, чтобы данные в ваших отчетах соответствовали данным, которые вы могли бы показывать в обычном графическом интерфейсе?