List of Features in Windward

Designer

Template Debugger

The designer has a full-featured debugger that you can use to debug the processing of a template, including viewing all variables, the result of each tag being processed, etc. This includes the ability to single step and place breakpoints.

List Imported Templates

Lists all templates imported in the generation of a report.

Data Count

When you run a template and it is using way too much data, generating a gigantic report, this makes it easy to discover why. This tool provides a quick summation of the number of rows of data each forEach tag in the template will return. And it provides how much time it took for the datasource to return that data.

This provides a quick verification that the amount of data returned is what is expected. It also quickly shows which queries are pulling down more data than you expected.

Datasource Connection Debugger

When the connection to your datasource is failing (sometimes SQL connection strings can be very difficult to get right), this provides a powerful tool to show all issues with a failing connection. It also provides a set of all properties that can be set for the connection with the ability to adjust all of them. On failure, it provides all information from the underlying connector about why the connection failed.

Select Debugger

When you create a query (select) that fails, the select debugger provides you full information on why the select is considered invalid by the underlying datasource. This makes it easy to determine what is wrong and then correct it. And on success, the debugger displays the data returned by the select, so you can verify it is not only valid, but also correct.

Error & Warning Handler

You can set specific handling for errors & warnings, either on a per-tag basis, or on the report in full. This provides you a way to continue generating a document if an error or warning is not fatal for the generation.

Generate Code

The Generate Code tool in the designer allows you to open an existing template and, with a click of a button, automatically create a window with the code needed to run your current template with all data sources and variables. Simply copy this code and paste into your application's code in the appropriate place. You now have Windward integrated into your application.

You only need to do this once. You do not do this for each template. Instead, where it has explicit files for the template and output, change that to parameters you pass to this code. Same for the parameters passed to Windward. This example uses explicit values to show you what to substitute in where.

Tag Tree

Displays of all the tags in the template, structured as they are placed in the template. This provides a simple & intuitive way to see the structure of your template. Also provides the capability to go to any tag and/or see the properties of any tag.

Engine

Verify Template

The verify tool scans the template and reports any problems with the tags. Provides a way to easily go to and fix any problem tag.

Designer

Processes Embedded DOCX, PPTX, & XLSX Objects

If a DOCX, PPTX, or XLSX file is embedded as an object in a DOCX, PPTX, or XLSX template (any combination), that embedded template will be processed as a sub-template, applying the same datasources and passing in all tag vars in scope. That is then included in the generated report.

Engine

Footnotes & Endnotes can Have Tags

You can place tags in pretty much any part of a template, including in footnotes & endnotes.

Document Locking Supported in DOCX & XLSX

Any parts of a DOCX or XLSX (PowerPoint does not support this) file that are locked in the template, will be locked the same in the output.

Processes Embedded DOCX, PPTX, & XLSX Objects

If a DOCX, PPTX, or XLSX file is embedded as an object in a DOCX, PPTX, or XLSX template (any combination), that embedded template will be processed as a sub-template, applying the same datasources and passing in all tag vars in scope. That is then included in the generated report.

Pixel Perfect PDF Output

Office does not fully specify how it lays out a page, which makes it impossible for any product to render PDF identical to Office. Windward has a mode where the engine will call Microsoft Office or SharePoint (for running on Java) to perform the PDF layout.

Word Form Fields are Form Fields in PDF Output

Any form fields in a Word template are written as form fields in PDF & DOCX output. In addition, the value in the form can be populated from your data.

PDF 401 Supported

PDF 401 output is fully supported. This requires you use the option where Windward calls Office to generate the PDF file.

PDF/A Output Supported

Generated PDF output can be set to be PDF/A.

Designer

Access Providers for all File Based Datasources

All URL & file operations, including reading a file based datasource (XML, JSON, OData, etc.) use a Windward access provider. Access providers exist for all the common protocols (file servers, basic, digest, OAuth2, etc.). And if you need something different, you can write your own access provider - once. And it then handles any access of files using that protocol. (ref: Ohana)

The key value here is if you need to write your own access provider. If so, you write it once and it is then used anywhere Windward needs to access your datasource using your protocol. And of course, if you use one of the standard protocols, we have it covered.

Engine

Access Providers for all File Based Datasources

All URL & file operations, including reading a file based datasource (XML, JSON, OData, etc.) use a Windward access provider. Access providers exist for all the common protocols (file servers, basic, digest, OAuth2, etc.). And if you need something different, you can write your own access provider - once. And it then handles any access of files using that protocol. (ref: Ohana)

The key value here is if you need to write your own access provider. If so, you write it once and it is then used anywhere Windward needs to access your datasource using your protocol. And of course, if you use one of the standard protocols, we have it covered.

All Data Placed in Report can also be Written to data.xml File

If set, when a report is generated, all data placed in the generated report is also written to a data.xml file. That file is then included in the generated DOCX, PPTX, or XLSX report.

Ad-hoc Filters can be Applied to Tag Selects

Windward provides a simple mechanism to run Ad-hoc reports. If you have a template designed to generate a sales summary for a location, you can use this API to then set it to a rangle of locations, change the date range, etc. When generating a report, lists of values or select criteria can be passed to the engine to have it apply that ad-hoc query in the select for the identified tag.

This does not require designing the template to handle any combination of Ad-hoc queries. The Windward Engine will adjust the queries on the fly as you specify.

Process Multiple Datasources Simultaneously

Windward enables you to build a document by applying multiple datasources to the template simultaneously. When Windward is merging the data into a template, it process the template handling each tag in order, and each tags can pull from different datasources. (As opposed to processing all of one datasource, then processing the next.)

This allows the select in a tag to use data from another datasource in its select. For example, if you are pulling customer information from one datasource, you can then pull data from the sales datasource using the customer ID of the customer presently processing to pull the sales information for that customer. Additional details ...

Designer

SQL Schema

SQL Schema is a method to reduce the schema of a database to just the tables/columns of interest. It also speeds up loading the database. Only needed for databases with a large schema - and a life saver for gigantic schemas.

Color Coding in the Select Editor

The query editor has color coding and type ahead to help in writing queries for advanced queries that the wizards cannot do. Or ifyou just prefer writing queries direct.

Define Variables to use in the Template

Define all variables that will be passed in when run in production. With the defined variables, they can then be used in a drag/drop manner when crafting queries in the wizards.

SQL Select Wizard - Automatic Joins

The SQL Wizard will automatically determine the joins between tables in the select (if the database metadata has the foreign key - primary key relationships).

Select Wizards

The select or query is how you specify what data to use in a tag (a tag is how you apply your data in the template). The select wizards, one each for SQL, JSON, XML, Salesforce, & OData, make it east to specify these queries, even if you don't know the query language. It is a combination of selecting the data you want from a tree displaying the structure of your data and then selecting from menus to specify what specific data you want.

The wizard then writes the query for you on the fly showing you the data it will return. This makes it clear as you craft the query what data you are requesting. This provides an easy, intuitive, & clear means to query your data.

Designer

PODs

First you select any content in a template, from a single character, to multiple pages including charts, bitmaps, tables, and more. Save this selected content as a POD. You can save as many of these PODs as you wish to a POD collection file. And you can have multiple POD files.

You then can use these POD collections yourself and/or provide them to others for their use. When designing a template, you can now drag & drop any POD into a template and you've now got that same content. With this one person can create all the building blocks needed to create templates and other template designers can then create their templates by merely dragging & dropping those PODs.

Data Bin

The data bin is a tree of your datasource's schema (metadata). This is the elements in your data. From it you can drag & drop elements onto the template creating either an out tag(specific element) or a table (multiple elements). This is a very quick way to place tags in your template.

Designer

Tags are Color Coded

Tags are color coded in the template by type, making it easy to visually identify them.

Bitmap Tags are Bitmaps

Out and Import tags, when they are rendering bitmaps, display in the template as an Office picture (bitmap). And as it's a picture, you see in the template exactly what you will get in the output.

Engine

Chart Tags are Charts

Chart tags are Office charts. The data is populated from selects. All properties of the chart you set directly in Office as you would for any other chart. And as it's a chart, you see in the template exactly what you will get in the output.

ForEach Tags can be Row or Column Major

A forEach tag (repeat once for each row of data) can be row or column major. Use column major when you have a variable number of columns based on your data.

Pass in any Number of Parameters

There is no limit to the number of parameters you can pass in to generate a report. There is no limit to the number of parameters you can use in any select.

Designer

Access Provider is Used for Importing Any File

All file operations, including reading an imported file, use a Windward access provider. Access providers exist for all the common protocols (file servers, basic, digest, OAuth2, etc.). And if you need something different, you can write your own access provider - once. And it then handles any access of files using that protocol. (ref: Ohana)

The key value here is if you need to write your own access provider. If so, you write it once and it is then used anywhere Windward needs to read files using your protocol. And of course, if you use one of the standard protocols, we have it covered.

Engine

Can Read Imported Files from a .zip File

You can specify a file to import using  "filename.zip!data.xml" where it will then read the file data.xml from the filename.zip.

Imported Template Can be Set to Match the Parent Styles

In an imported sub-template, if its properties for a style (ex. Normal) differ from the parent template's properties for the style, the use in the sub-template can be set to either use the properties in the sub-template, or the properties in the parent.

You set to retain when you don't want the child template's styling to change when imported. You set to use the parent when you want the styling of the imported template to match the styling in the parent.

Any explicit styling is always retained. This only impacts styling set by styles.

Access Provider is Used for Importing Any File

All file operations, including reading an imported file, use a Windward access provider. Access providers exist for all the common protocols (file servers, basic, digest, OAuth2, etc.). And if you need something different, you can write your own access provider - once. And it then handles any access of files using that protocol. (ref: Ohana)

The key value here is if you need to write your own access provider. If so, you write it once and it is then used anywhere Windward needs to read files using your protocol. And of course, if you use one of the standard protocols, we have it covered.

Tags in Imported Templates are Processed

An import tag in your template imports a sub-template (or picture). The imported template is processed as though it was inserted in-line at that point. All tags in the imported template are processed. All variables in scope at the import point are available to the sub-template. Because your child templates are live, you can build documents from a selected set of child templates. And these child templates can be placed in multiple parent templates, conditionally if you want.

Designer

Bitmap Tags are Bitmaps

Out and Import tags, when they are rendering bitmaps, display in the template as an Office picture (bitmap). And as it's a picture, you see in the template exactly what you will get in the output.

Change Tracking

OK, this is another case of it's all Office. We're just along for the ride. You can turn on change tracking, add comments, etc. to the template providing a record of who changed what in the template.

Access Providers for all File Based Datasources

All URL & file operations, including reading a file based datasource (XML, JSON, OData, etc.) use a Windward access provider. Access providers exist for all the common protocols (file servers, basic, digest, OAuth2, etc.). And if you need something different, you can write your own access provider - once. And it then handles any access of files using that protocol. (ref: Ohana)

The key value here is if you need to write your own access provider. If so, you write it once and it is then used anywhere Windward needs to access your datasource using your protocol. And of course, if you use one of the standard protocols, we have it covered.

Engine

Access Providers for all File Based Datasources

All URL & file operations, including reading a file based datasource (XML, JSON, OData, etc.) use a Windward access provider. Access providers exist for all the common protocols (file servers, basic, digest, OAuth2, etc.). And if you need something different, you can write your own access provider - once. And it then handles any access of files using that protocol. (ref: Ohana)

The key value here is if you need to write your own access provider. If so, you write it once and it is then used anywhere Windward needs to access your datasource using your protocol. And of course, if you use one of the standard protocols, we have it covered.

Engine

Conditional Formatting

You can set conditional formatting on the content of any out tag. This is similar to the conditional formatting in Excel but this works for all output (DOCX, PPTX, & HTML as well as XLSX). And it can be applied to the added data anywhere, not just in a cell.

130 Macros (Functions)

Windward includes over 130 macros (including 95% of the macros in Excel). You can also include your own custom macros.

Engine

Excel References are Adjusted to Match Output

Any references (A1:D6) are adjusted in the generated XLSX output to now be the new range based on the inserted data. This includes the case of a range inside a forEach loop, where the range will be adjusted for each set in each iteration of the forEach.

What does this mean? Say you have =SUM(C4:C4) in a cell. And when you generate the template the row 4 has become the rows 4 ... 15 when the data is inserted. Then that cell will now have =SUM(C4:C15). This is important because if you then change the value in cell C7, the SUM() will adjust to match this change. In short, this give you live worksheets.

Pivot Tables Adjusted in Output

Any pivot tables in an XLSX template are carried over to the XLSX output. The ranges in the pivot ranges are adjusted to match the generated output. So your final XLSX will have pivot tables set as expected in the generated file.

This makes creating an XLSX workbook with pivot tables trivial.

Download the free trial or contact us

Want to learn more? Need a demo? Why not start a free trial?
With no hidden implementation fees, it's a breeze to start with Windward.
Contact our friendly Sales Team at sales@windward.net or call 1-303-499-2544.
We can’t wait to help you with your document automation needs!

For over 10 years, Windward has lead the industry with our world-class document generation platform that creates visually stunning, data-powered documents designed exactly the way users want and are created in a fraction of the time and cost compared to existing solutions. Proudly located in Boulder, Colorado, Windward Studios is the premier solution for developers and business users adding reporting and document generation capabilities to their applications in over 70 countries around the world.

© 2019 Windward Studios Inc.