LogoLogo
WinForms to WebPowerBuilder to .NETPowerBuilder to Java
  • WebMAP Documentation | Mobilize.Net
  • WinForms
    • Introduction
    • Getting Started
    • Conversion Process
    • Post-Conversion
    • Extend or Modify the Converted Application
      • NoWebMap Forms Winforms
        • How to add a new Form
        • Adding the created form to the migrated App
        • Interacting with the application data
        • Call the custom API
        • Interaction between the no webmap added Form and the WebMap components
      • Adding a component
      • Adding a component dynamically
      • Add a new control model
      • Switching CSS theme
      • Adding new window
      • Conversion Configuration
        • WebMAP configuration file
        • Stub Filter
      • Adding Non-WebMap Angular Forms
      • Adding FrontEnd Handler to a ToolStripMenuItem
      • Changing ToolStripButton icons
      • Adding new items to existing toolbar
      • Adding FrontEnd element properties and JS listeners
      • Adding FrontEnd output handlers
      • Access FrontEnd components
      • Create custom components based on existing WebMap Component
      • Override FrontEnd methods
    • Assessment Mode
    • Errors and Troubleshooting
      • How to resolve broken reference problems with VBUC
    • Portability
    • Glossary
    • Release Notes
    • Internal Demos
    • Known Issues
    • WinForms DCP
  • WebForms
    • Introduction
    • Overview
    • Desktop Compatibility Platform (DCP)
      • Pages and Master Pages
      • GridView and DataList data synchronization
      • HTTP objects
    • Post-Conversion
    • Extend or Modify the Converted Application
      • Adding FrontEnd validator
      • Adding Page
      • Adding MasterPage
    • Designer classes on WebForms Conversion Tool
    • Errors and Troubleshooting
      • How fix Solution when have been added website from filesystem without project file
    • Release Notes
  • PowerBuilder to .Net
    • Introduction
    • Getting Started
      • Conversion Tool
    • Desktop Compatibility Platform (DCP)
      • Data Manager
    • Reports
      • Report Rendering in Modernized Code
      • ReportWatcher Service Configuration
      • Data Manager to RDL Conversion
      • Reporting Service Internals
      • Troubleshooting
  • PowerBuilder to Java
    • Introduction
    • Getting started
    • Post-Conversion
      • Setup PBJava Environment
      • Architecture
      • App Start
    • Glossary
    • Errors
    • Glossary
    • FAQ
      • How to create a new Control
      • How to create a new Screen
      • What is the Mobilize.WebMAP.CoreServices.All?
      • What is the DesignerAttribute?
      • What is the InterceptedAttribute?
      • What is the InterceptedAttribute?
      • What is the ObservableAttribute?
      • What is the Mobilize.Weaving.WebMAPExtensions.All?
  • General
    • FrontEnd
      • Documentation
        • Webforms Angular Components
          • Web Components
            • Base Components
              • BaseValidator Component
            • KendoUI Components
              • CompareValidator
              • CustomValidator
              • RegularExpressionValidator
              • RequiredFieldValidator
              • ValidationSummary
          • Directives
          • AJAX Web Components
            • AjaxCalendar
            • AjaxModalPopupExtender
          • Ajax Interaction Services
        • Client Core
          • WebMap's Client Core
        • Angular Client
          • Introduction
          • WebMap Service
          • WebMap Interceptor Service
        • Base Components
          • Introduction
          • Components
            • Container
            • Control
            • ControlContainer
            • FormsContainer
            • Loading
            • Stub
        • Winforms Angular Components
          • Web Components
            • Base Components
              • Control Component
              • Form Container
              • Grid Component
              • Style
            • KendoUI Components
              • AdoDataControl
              • Button
              • C1TrueDBGrid
              • CheckBox
              • CheckedListBox
              • ComboBox
              • ContextMenuStrip
              • DataGridView
              • DataGridViewFlex
              • DateTimePicker
              • FileDialog
              • GroupBox
              • Label
              • ListBox
              • ListView
              • MaskedTextBox
              • MessageBox
              • NumericUpDown
              • Panel
              • PictureBox
              • PrintDialog
              • ProgressBar
              • RadioButton
              • RichTextBox
              • StatusStrip
              • Stup
              • TabControl
              • TabPage
              • TextBox
              • Timer
              • ToolStrip
              • TreeView
              • WebBrowser
              • Window
            • JQuery Web Components
          • WebMap FrontEnd Architecture
          • Migrated Structure
          • Setup
            • Front-End setup and compilation
            • Components Manual
            • Browser Support
            • Unit Test Manual
            • Development Process
            • Setup AOT/JIT Compilation
          • Decorators
            • Server Event
          • Conventions
            • Application Structure and NgModules
            • Coding
            • Components
            • Data Service
            • Directives
            • Lifecycle hooks
            • Names
            • Services
        • PowerBuilder Kendo Components
          • Base Components
            • base-component
            • column-control
            • controlcontainer
          • Data Manager Componets
            • base-data-manager
            • data-manager-control
            • data-manager-control-base
            • dw-checkbox
            • dw-column
            • dw-complexNumericMaskComponent
            • dw-compute
            • dw-date-time-edit-mask
            • dw-dropdowndatawindow
            • dw-edit
            • dw-edit-mask
            • dw-radio-button
            • dw-simple-numeric-edit-mask
            • dw-string-edit-mask
            • dw-time-edit-mask
          • Window Components
            • basemask
            • graphics
            • w-checkbox
            • w-command-button
            • w-complex-numeric-mask
            • w-date-time-edit-mask
            • w-dropdownlistbox
            • w-group-box
            • w-line
            • w-listbox
            • w-maskedtextbox
            • w-mdiclient
            • w-menu
            • w-multiline
            • w-picture
            • w-picture
            • w-radiobutton
            • w-rectangle
            • w-simple-numeric-edit-mask
            • w-single-line-edit
            • w-statictext
            • w-string-edit-mask
            • w-time-edit-mask
            • w-toolbar
            • w-toolbaritem
            • w-user-object
            • w-window
          • Services
            • DmInteractionService
          • DataManagerEvents
          • FocusManager guide
      • Api Documentation
        • WebMap Silverlight
        • WfNetC1Components
        • WebFormsComponents
      • Guides
        • Setup NPM package registry in the workspace
        • How to Setup WebMap Applications To Run Over SubDomains or WebApplications In IIS
        • Deploy several WebMap Apps in the same Server
        • Update to Angular 16
        • Appearance
          • How to change the CSS
          • How to override the style for a component
        • Component maintenance
          • How link WebMap package to the migrated Application
          • How to resolve broken reference problems with VBUC
          • How to test a local WebMap Components package
          • How to add a new component in a migrated application
          • How to update a component
          • Dynamic Control Support
          • How to add new set of component with a different provider
          • How to test your component in the playground
          • Tools
        • WMLogger
          • How to use the WMLogger's instance
          • How to change log's level
          • How to add log tags
        • Integration test
        • Setup WebMap Applications to Run Front-End And Back-End In Separates Sites
          • Setup WebMap Applications To Run Front-End And Back-End In Separates Sites in Production (IIS)
        • Setup Migrated WebMap Applications To Run Front-end & Back-end In Separates Sites (Only development)
        • Initial Set Up
          • Software to Install
          • Necessary Repositories
      • Errors
      • Version Notes
        • Client Core
        • Angular Client
        • Web Base Components
        • Winforms Angular Components
        • PowerBuilder Kendo Components
      • Licenses
        • Client Core
        • Angular Client
        • Base Components
        • PB Kendo Components
        • WFNet Kendo Components
        • WebForms Components
        • WFNet Access Components
        • WFNet Janus Components
        • WFNet C1 Components
        • Silverlight wms-framework
        • Silverlight i-components
    • BackEnd
      • WebMAP From Scratch
      • Setup
      • DCP: Desktop Compatibly Platform
        • Overview
        • Library Bundles
          • Bundle Library
            • Create an Observable Object
          • Bundle DTO
            • DTO: Data Transfer Objects
              • Creating a DTO
            • Mappers
              • Create Mappers
            • Observable Wrappers
              • Create an Observable Wrapper
            • API/Controllers
      • Architecture
      • Weaving on WebMAP
      • Glossary
      • FAQ
        • How to create a new Control
        • How to create a new Screen
        • What is the Mobilize.WebMAP.CoreServices.All?
        • What is the DesignerAttribute?
        • What is the InterceptedAttribute?
        • What is the Mobilize.Extensions.Logging.RollingFile?
        • What is the ObservableAttribute?
        • What is the Mobilize.Weaving.WebMAPExtensions.All?
      • Licenses
        • PBNet DCP
        • WebFormsDCP
        • WFNet DCP
        • CoreServices
        • CoreServicesCommon
    • Request and Response
  • SCALABILITY
    • Introduction
    • Microservices
    • Containerizing a WebMap .Net Application with Docker
    • Vertical scalability
Powered by GitBook
On this page
  • Overview of report processing in the original platform
  • Rendering in the target platform
  • ReportWatcher service

Was this helpful?

  1. PowerBuilder to .Net

Reports

This document describes the overall design of the reporting mechanism of modernized applications.

This document assumes knowledge of modernized application concepts such as DataManagerControl(TODO ADD LINK TO DATAMANAGER DOC). Also basic knowledge of concepts from the original platform is required.

Overview of report processing in the original platform

In PowerBuilder reports are DataWindows that are created for printing. Some kinds of DataWindows are usually used as reports (for example: Label, Composite) . However all other kinds of DataWindows (ex. FreeForm) could also be used as reports. The rendering process is performed in-process by the runtime environment..

In the modernized application the DataWindows are converted to DataManagers (TODO LINK TO DATAMANAGER DOC). DataManager classes are converted to C# , For example a simple DataManager looks like this:

[Mobilize.WebMap.Common.Attributes.Observable]
public partial class d_my_report
   : Mobilize.Web.DataManager, Mobilize.Web.IDataManager
{

   [Mobilize.WebMap.Common.Attributes.Intercepted]
   public Mobilize.Web.DmText name_t { get; set; }

   [Mobilize.WebMap.Common.Attributes.Intercepted]
   public Mobilize.Web.DmColumn _name { get; set; }

   ...

   public d_my_report()
   : base()
   {
      ...
      this.PrintSpecification.PrinterName = "";
      this.PrintSpecification.DocumentName = "";
      this.PrintSpecification.Orientation = Mobilize.Web.CaseExtensions.String("0");
      this.PrintSpecification.Margin.Left = 110;
      this.PrintSpecification.Margin.Right = 110;
      this.PrintSpecification.Margin.Top = 96;
      this.PrintSpecification.Margin.Bottom = 96;
      this.PrintSpecification.Paper.Source = 0;
      this.PrintSpecification.Paper.Size = 0;
      ...
      this.name_t = new Mobilize.Web.DmText();
      this.name_t.Band = Mobilize.Web.CaseExtensions.String("detail");
      this.name_t.Alignment = 1;
      this.name_t.Text = "Name:";
      this.name_t.Border = 0;
      this.name_t.Color = "33554432";
      this.name_t.X = 37;
      this.name_t.Y = 4;
      this.name_t.Height = 64;
      this.name_t.Width = 174;
      this.name_t.Name = Mobilize.Web.CaseExtensions.String("name_t");
      this.name_t.Visible = true;
      this.name_t.Font.FontFace = "Tahoma";
      this.name_t.Font.Height = -10;
      ...
      this.name_t.Background.Color = "536870912";
      this._name = new Mobilize.Web.DmColumn();
      this._name.Band = Mobilize.Web.CaseExtensions.String("detail");
...
      }
}

DataManager instances are converted at runtime to the format used for rendering the report. The following sections describe the process of converting these objects to a PDF representation of the report.

Rendering in the target platform

ReportWatcher service

Since .NET Core is a new implementation of the .NET environment, there is no binary compatibility with existing .NET assemblies. There are APIs defined in the full .NET Framework that are not compatible with .NET Core. This is true for Microsoft's ReportViewer.As described in the previous section, this is the component used to render report . This component depends on the ASP.NET WebForms infrastructure. Having a direct dependency in this control implies that the modernized application cannot take advantage of the .NET Core features. This is the reason of having an external service that take care of rendering the report. This service is called ReportWatcher.

The ReportWatcher service is a small webservice dedicated to render reports on modernized applications. It has a dependency on ReportViewer and the full .NET Framework. This service can be hosted on a server different from the one that runs the modernized application. When a report needs to be rendered, the modernized application invokes this web service with everything required to render the report (report definition and data) and returns a PDF .

More information how to configure or use this service is provided in the following sections.

PreviousData ManagerNextReport Rendering in Modernized Code

Last updated 4 years ago

Was this helpful?

A modernized application uses Microsoft SQL Server Reporting Services (henceforth referred as SRSS) reporting technology. This solution offers a lot of services for creating and interacting with reports. More information about this solution see MSDN .

The main way to use SRSS is to use a set server side web services. These services are used to render and store reports (more information see MSDN ). Modernized applications do not use these webservices and do not require using the SRSS server side process. Instead of this, modernized applications use the ReportViewer ASP.NET control to convert a report definition and data to a PDF document . This ReportViewer control is provided by Microsoft .

Microsoft reporting services solution uses the Report Definition Language (henceforth referred as RDL) for defining reports. This language is specified here: .

Modernized applications target the .NET Core development and execution environment. This environment provides flexibility and performance features such as cross platform execution, flexible deployment, modern development tools,etc. More information can be found here .

What is SQL Server Reporting Services (SSRS)?
Report Server Web Service Methods
WebForms ReportViewer Control
Report Definition Language (SSRS)
https://docs.microsoft.com/en-us/dotnet/core/about