XAF: Enhancements to existing modules, Entity Framework and performance (Coming soon in v15.1)

XAF Team Blog
28 May 2015

Notifications Module - Officially Shipping

The eXpressApp Framework's Notifications Module (which first shipped as a CTP in v14.2), will officially ship in v15.1 and can now be used in production environments. This update includes a refactored API to simplify its use, addition of new features, improved stability and performance.

We appreciate all the great feedback you provided to us as it helped us cover even more use-cases with this module.


            cid:image001.jpg@01D08F37.E74B7640


Here are a few of the new features we've included in the Notification Module:

  • Ability to open an editable DetailView for the notification record.
  • Unobtrusive notifications when only the number of items changes in the status bar.
  • Ability to display all or only postponed items.
  • Improved processing performance.


Workflow Module - Entity Framework Support

The Workflow Module integrates Windows Workflow Foundation (WF) 4.0/4.5 support into XAF. WF is a workflow management framework designed to assist you in creating more manageable, workflow-enabled applications.  By leveraging WF functionality, the Workflow Module allows you to automated long-running business processes within your XAF application - where the intermediate steps are hours, days or weeks apart. The module allows users to modify the automated processes without writing any code or visualizing complex business processes.

With v15.1, you can now integrate our Workflow Module when using Microsoft ADO.NET Entity Framework. To achieve this, we have implemented EF-compatible versions of workflow entities like EFWorkflowDefinition, EFWorkflowInstance, EFTrackingRecord, EFStartWorkflowRequest, etc., and performed other required R&D and testing work.

            cid:image002.png@01D08F37.E74B7640

Additional Enhancements to XAF's Web and WinForms UI, its Core and Performance

The ASPxDocumentViewer control is now used for report previews in ASP.NET applications (we've deprecated the old Report Viewer control.) By using this new report viewer, cascading parameters and Drill-Down report types are now supported within XAF ASP.NET applications:

              cid:image003.png@01D08F37.E74B7640


Delayed data loading for detail forms has been implemented forWinForms apps. It’s best to demonstrate this with a short video (note that an artifical pause was intentionally added to emulate loading a large amounts of data). You can manually enable this mode via the DelayedDetailViewDataLoading property of the XafApplication class, which can be set either in code or via the Application Designer. Technically in this mode, the DetailView form is displayed nearly instantly, without any data in controls and then data asynchronously retrieved from the database and the controls (e.g., editors display actual data values and the related Actions are updated) are updated accordingly. While this does not really speed things up, it helps to achieve a better UX and perception, as a user receives instant feedback, which may be useful for very complex forms. Take special note that when you enable this mode, the DetailView.CurrentObject will not be immediately available when ViewControllers are activated. Your code should take this situation into account. Our own code already handles this mode well – you can see that the standard Delete Action is activated after data loading is complete.

WinForms apps can now place Actions within the status bar. The easiest way to do this is to set the Category property of your Action to “Notifications”. For instance, this way the Show Notifications Action (the one that displays a “bell”) from the Notifications module is implemented. In addition, review the attached picture and see how I moved (without writing any code and by just using the Model Editor and its ActionDesign | ActionToContainerMapping node) the other built-in Refresh command into the status bar. Alternatively, you can make a custom template as per this document and manage placement via the XAF BarManager or RibbonControl designers.


            cid:image006.png@01D08F37.E74B7640

Another WinForms enhancement is for developers using advanced ribbon menus within their applications. It's now possible to place multiple Action Containers within a single RibbonPageGroup (watch video) and also make it possible to separately configure different menu modes for SingleChoiceActions placed within the same group. Only the required part of Actions from a single RibbonPageGroup can be mapped to the Application Menu or Status Bar. This capability is best illustrated with a short video. You can see a "View" RibbonPageGroup that originally contained two Action Containers: "View" and "Reports". We then add only the "View" container into the Application Menu. There will be more documentation on making these customizations once v15.1 is out.             

We now include a much simpler solution to open a non-persistent object's List View directly from the navigation bar or from custom Actions. The idea is to declare a non-persistent class and decorate it with the DomainComponent and DefaultClassOptions attributes...Then, handle the NonPersistentObjectSpace.ObjectsGetting event and populate the e.Objects collection as required. That's it. Subscribing to this event can typically be done on the ObjectSpaceCreated or ListViewCreated events of the XafApplication class. Internally, the new NonPersistentObjectSpace entity is automatically provided for such non-persistent ListView through NonPersistentObjectSpaceProvider, which is registered among other ORM providers at startup. See a complete example in this Support Center ticketTake special note that in WinForms you can create non-persistent objects with the New Action and navigate to the DetailView of a non-persistent record, make changes and they will automatically be reflected in the source ListView (all changes will obviously disappear after reopening the ListView). See this short video for more info.

We've reduced the number of web browser requests to the server for Web apps in the following scenarios: a) when opening a page for the first time; b) when refreshing a browser page via F5; c) when displaying a popup window. In addition, with several optimizations to the underlying types info system, we've cut startup time by~10-15%.

Hopefully you'll find all of these enhancements useful. Tell us what you think - we want to hear from all our XAF users!

5 comment(s)
Saif Khan
Saif Khan

Wow! Dennis, these are amazing additions. The use of the ASPxDocumentViewer control for report previews in ASP.NET applications is indeed an important one. I cant wait for the day when you do away with the popup and perform a page transition instead.

28 May, 2015
Nate Laff
Nate Laff

Been using XAF for many, many years as you know... and these 'advanced ribbon' features went right over my head. I have no idea what you're talking about there or how it's different :P

28 May, 2015
Nate Laff
Nate Laff

also, I was following the ticket to show non persistent objects in a list view, but, now I don't remember why I wanted it ;) must have moved on from that one!

28 May, 2015
Dennis (DevExpress Support)
Dennis (DevExpress Support)

@Saif: Thanks for your feedback!

Would you please elaborate a bit more on the problems with the current popup window you faced? BTW, it is possible to customize this popup to provide a different appearance and behavior; e.g., sliding instead of showing it at the center (learn more here...).

2 June, 2015
Dennis (DevExpress Support)
Dennis (DevExpress Support)

@Nate: Thanks for your comments! Basically, these ribbon features bring greater flexibility for menu customizations which several of our clients asked for.

2 June, 2015

Please login or register to post comments.