Uncategorised

eXpand is the first open source project based on the DevExpress eXpressApp Framework (XAF). The eXpressApp Framework ships with DXperience Universal and can be evaluated free of charge (30 day trial) at: https://www.devexpress.com/ClientCenter/Downloads.

eXpand framework was started and is led by Tolis Bekiaris. Tolis has made a huge contribution to XAF over the years receiving great recognition from DevExpress and the whole XAF community. In April 2011 Tolis was honoured to be hired as Technical Evangelist for DevExpress frameworks!

The eXpand  Framework is an extension of XAF and operates within the Microsoft Public License (Ms-PL). Although XAF is not an open source product it can be purchased directly from DevExpress.

The eXpandFramework team have extended the capabilities of the eXpressApp Framework to include 61 cutting-edge assemblies containing tools and modules that target numerous business scenarios

The main idea behind eXpand is to offer as many features as possible to developers/business users  through a declarative approach (configuring files rather than writing code). Please go through each of the following brief descriptions and find out how eXpand can help you accomplish your complex development tasks with easy declarative programming. Below you can see some descriptions and screenshots of our basic modules (screenshots taken from eXpand FeatureCenter application that comes along with the download). In the folder Demos you can find a list of demos like XVideoRental, SecurityDemo, MiddleTier, Workflow and installation helper solutions for each module. 

Examples of those modules include (in the two right columns you can see the supported platform): 

Module Name Description windows aspnet
ModelDifference Model managment Y Y
Dashboard Enables native XAF dashboard collaboration and integrates the Dashboard suite Y Y
WorldCreator Design runtime assemblies Y Y
Email  Send emails using bussiness rules from application model without coding (see http://goo.gl/Hkx6PK) Y Y
JobSheduler Acts as a wrapper for the powerfull Quartz.Net, providing a flexible UI for managing Jobs at runtime Y Y
WorkFlow Contains workflow related features (Scheduled workflows) Y Y
DBMapper Map 14 different types of databases at runtime into worldcreator persistent objects  Y
IO Export & Import object graphs Y Y
ExcelImporter Imports Excel, csv files. Y Y
MapView  Google Maps integration for XAF web apps. Blog posts.  Y
FileAttachments  Provides support for file system storage as per E965
Scheduler  Please explore the XVideoRental module found in Demos/XVideoRental folder (Blog posts) Y Y
Reports  Please explore the XVideoRental module found in Demos/XVideoRental folder Y N
Chart   Please explore the XVideoRental module found in Demos/XVideoRental folder Y N
PivotGrid   Please explore the XVideoRental module found in Demos/XVideoRental folder Y N
HtmlPropertyEditor   File upload and configuration through Application Model N Y
Import Wizard Universal module for importing excel files into any XAF application. Y N
Core Support multiple datastore , calculable properties at runtime ,dynamic model creation,control grid options, datacaching, web master detail, view inheritance etc. Y Y
WorkFlow Extends  XAF's workflow module to support schedule and on object changed workflows Y Y
AuditTrail Configures XAF Audit Trail module using the Application Modules. (see Declarative data auditing)
StateMachine Enhance XAF's statemachine module in order to control transitions using permissions Y Y
ModelAdaptor   Designed to apply component configurations and uses the Logic architecture  Y
Logic Define conditional architecture Y Y
ModelArtifact Parameterize Controllers & Actions Y Y
AdditionalViewControlsProvider Decorate your views with custom controls Y Y
MasterDetail XtraGrid support for master-detail data presentation using the model. Y N
PivotChart Enhance analysis procedures / controls Y Y
Security Provides extension methods, authentication providers, login remember me, custom security objects  Y
MemberLevelSecurity Conditional security for object members. Y N
FilterDatastore Filter data at low level Y Y
Wizard Design wizard driven views Y N
ViewVariants Create views without the use of model editor Y Y
Validation More rules , permission validation, warning/info support, Action contexts etc Y Y
ConditionalObjectViews Allows the conditional navigation to your detailviews/listviews-->Merged with ModelArtifact Y Y
EasyTests Custom command and extensions for EasyTest see http://apobekiaris.blogspot.gr/search/label/EasyTest Y Y
ExceptionHandling Log exceptions to numerous listeners / datastore Y Y
TreelistView Enhance hierarchy controls, map XtraTreeList options to model Y Y
NCarousel Loads images asynchronously and displays them using a configurable carousel listeditor N Y
Thumbnail Configurable through model module for displaying images N Y
CodeRush Addins Enhance Model Editor, Explore Xaf Errors, Drop Database at design time, ProjectConverter invocation - -
  1. Dashboard module
    Blogs:
    http://apobekiaris.blogspot.gr/search/label/dashboard
  2. Model Difference
    Extends XAF by adding great new features for example;
    • the ability to generate runtime members for your objects, 
    • creating Application/Role/User models in the database, 
    • storing your web cookies in the database, 
    • handling of external application models, 
    • combine end user modifications with application model, 
    • support for multiple models at design time,
    Blogs:
    http://apobekiaris.blogspot.com/search/label/ModelDifference
    1 2
  3. WorldCreator
    Creates dynamic persistent assemblies. The XAF user interface allows us to create an assembly without writing a single line of code. Advanced users can even use c# scripting and create new code generation templates.  
    Blogs:
    http://apobekiaris.blogspot.com/search/label/WorldCreator

    3 
  4. JobScheduler
    For those who are not familiar with the concept of job scheduling, here is some background information. Also, there is great Quartz tutorial, which provides an excellent introduction.
    Blogs:
     http://apobekiaris.blogspot.com/search/label/JobSceduler
  5. DBMapper
    DBMapper has the same functionality as SqlDbMapper however is based on the powerful XPO . Thus  DBMapper module is capable of transforming into WorldCreator persistent classes the following list of databases: Access, AdvantageAdaptive Server Anywhere, Ase, DB2FireBirdFireBirdSqlSqlServerCeSqlServerODP OraclePersasizeSqlPostgreSqlSQLiteVistaDB  
  6. SqlDbMapper
    Can map any sql database into WorldCreator persistent classes and connect to it on the fly. This allows the user to take advantage of Xaf's strengths when mapping a legacy system with just a few clicks. Also we can use the dynamically generated code for your design time requirements  
    Blogs:
    http://apobekiaris.blogspot.com/search/label/SqlDbMapper

    4
  7. Import Export Module
    Provides collaboration between a xaf application and another system by allowing you to create object serialization graphs. The complexity of a graph can be configured using either UI or design time attributes. Changing object keys and choosing serialization strategies are straightforward as seen in this screenshot.
    Blogs:
    http://apobekiaris.blogspot.com/search/label/IO

    5
    6
    7
  8. Import Wizzard
    Universal module for importing excel files into any XAF application.
    Blogs:
    http://mdworkstuff.blogspot.gr/search/label/wizard
    Import Wizzard Preview
  9. AdditionalViewControlsProvider
    Allows us to place a Win or Web control in any given position in its respective XAF view and control its visibility, text decoration, font, height, width, etc. using conditional model rules.
    Blogs:
    http://apobekiaris.blogspot.com/search/label/AdditionalViewControlsProvider
    8 9
  10. ModelArtifactState
    Apply conditional logic to the artifacts of your model (Controllers, Actions). It means that you can enable,disable,hide,execute etc. at many contexts or combination of them  
    Blogs:
    http://apobekiaris.blogspot.com/search/label/ModelArtifactState


    10
  11. MasterDetail Enables conditional master detail functionality over your list views. It operates at any level!!
    Blogs:
    http://apobekiaris.blogspot.com/search/label/MasterDetail
     
    11
  12. StateMachine
    Enhance XAF's statemachine module in order to control transitions using permissions
    Blogs:
    http://apobekiaris.blogspot.com/search/label/Xpandstatemachine  
  13. PivotChart Using it you can connect your analysis objects with any object and display/position them at any view. A big number of pivot features are also supported  . Controlling Pivotgrid options is also available at runtime 
    Blogs:
    http://apobekiaris.blogspot.com/search/label/PivotChart

    12 image
  14. Security
    Blogs:
    http://apobekiaris.blogspot.gr/search/label/Security 
  15. MemberLevelSecurity
    Extends object type based security system with a conditional member based one 
    Blogs:
    http://apobekiaris.blogspot.com/search/label/MemberlevelSecurity
    13 14
  16. Logic
    Provides the architecture / engine upon many of eXpand modules have been designed (AdditionalViewControlsProvider, ModeArtifactState, MasterDetail, ConditionalDetailViews) . Very valuable to the developers that want to implement a conditional modules
    Blogs:
    http://apobekiaris.blogspot.com/search/label/Logic 
  17. Core modules
    The features here are endless . Some interesting features are multiple datastore support, create calculable properties at runtime, dynamic model creation, GridView,GridColumn options…etc
    Blogs:
    http://apobekiaris.blogspot.com/search/label/Core.Web
     http://apobekiaris.blogspot.com/search/label/Core.Win
    DataCaching 
  18. ConditionalObjectView Allows the conditional navigation to your detailviews / listviews
    15
  19. ViewVariants End user can design views at runtime
    Blogs:  
    http://apobekiaris.blogspot.com/search/label/ViewVariants
    16
  20. Validation
    Blogs
    http://apobekiaris.blogspot.com/search/label/Validation
    http://t.co/9q4eMAnO (warning/Info)

     
  21. WizardUI 
    Enables designing of wizard views using the model editor
    image image
    image image
  22. TreelistView 
    Enable recursive filtering and viewing for your listviews ,map XtraTreeList options to model, support for conditional appearance module
    Blogs: 
    http://apobekiaris.blogspot.com/search/label/TreeListEditors 
  23. ExceptionHandling
    Using Microsoft Enterprise Library can really help you see what's going on when an exception is raised, by storing your exception to any of the trace listeners provided with MSEL, or to your data store or to a different datastore taking also a screenshot of the application at the time of the exception
    Blogs: 
    http://apobekiaris.blogspot.com/search/label/Exception%20Handling 
  24. FilterDatastore
    Extend security strategy to filter data at low levels. System administrators can configure what your users are authorized to view. UserFilter, SkinFilter providers are supplied as examples. The configuration of the providers is done from the model editor
    Blogs: 
    http://apobekiaris.blogspot.com/search/label/FilterDataStore 
  25. CodeRush Addins
    Model Editor: Overrides any VS crashing problems, support multiple design time models and speed ups navigation through its search facility 
    DropDatabase: Using a keyboard shortcut allows you to drop the databases your application is connected to at design time 
    ProjectConverter: Runs project converter for the current open solution 
    Explore Xaf Errors: Using ReSharper stack trace explorer and a keyboard shortcut you can explorer xaf errors

    image image

    Blogs:
    http://apobekiaris.blogspot.com/search/label/DxCore
    http://apobekiaris.blogspot.com/search/label/Visual%20Studio%20plugins
    http://apobekiaris.blogspot.com/search/label/CodeRush 
  26. NCarousel
    Web skinable listeditor based on JCarousel. Image loading is asynchronous , multiple editor with different configurations is allowed
    ?ncarouseleditor
     Blogs:
     http://apobekiaris.blogspot.com/search/label/NCaousel
  27. Thumbnail
    Configurable web thumbnail list editor that wraps images into special styling so they can be auto aling in the page with out problems.
    thumnailsEditor
    Blogs:
    http://apobekiaris.blogspot.com/search/label/Thumbnails
  28. Workflow
    Blogs
    http://apobekiaris.blogspot.com/search/label/XpandWF
  1. Excelmporter
    excelimporter.win
    excelimporter.web

    Blogs
    http://apobekiaris.blogspot.gr/search/label/ExcelImporter
For feedback, questions, suggestions etc. please use the forums.

18.1.3.1

This version.is compiled against XAF 18.1.3.

Bugs:

  1. Xpand Solution Wizard uses DXGalleryWizard instead of XAF solution wizard.
  2. AutoRefreshListView does not work for NestedListViews.
  3. Worldcreator throws on load if ReportsV2 is installed.
    Link
  4. Projects do not load outside Xpand root folder.

17.2.7.4

This version.is compiled against XAF 17.2.7.

New features:

  1. New FileBrowsePropertyEditor added in System.Win.
    Link.

Bugs:

  1. Visual Studio eXpandFramework New Project templates issues
    Link.
  2. Relative path support for the VSIX LoadFromProjectReferences command.
  3. AuditTrail exceltion at start when IntermediateClassInfo in certain cases.
  4. Strong sign is missing in ExcelImport modules.

17.2.7.2

This version.is compiled against XAF 17.2.7.

New features:

  1. Introduce Timeout attribute to avoid throwing when long tasks such as database backups.
  2. ExcelImporter
    a) Support VisibleInExcelMapAttribute, VisibleInListView,VisibleInLookupListView,Browsable for controlling the display of the mapped fields.
    b) Support CreateAlways, UpdateOrCreate, SkipOrCreate importing strategies.
    c) AutoImporting support (Win only).
    d) Validation context supported.
  3. Audittrail module blanket support (dont audit anything unless I told you to audit something)
    Link.
  4. XpandNavigationItemAttribute allow to Setup the node Id
    Link.
  5. VSIX configure command shortcuts from package options, to avoid conflicts with existing assigments.

Bugs:

  1. Excel importer Exception When DisplayName is set.
    Link.
  2. ExcelImporter does not parse the file if IOException on open
    Link.
  3. ExcelImporter propertyname lookup does not reflect selected type
    Link
  4. MasterObjectViewController does not initialize conrrectly in certain cases.
  5. AutoScrollGridListEditorController fails to scroll when server mode.
  6. Restore VSIX build.
    Link

Breaking Changes:

  1. VSIX source upgraded to VS2017, the compiled package though works for both VS2015, VS2017
  2. All Xpand custom permissions are disabled from the middle-tier.
    Link1, Link2

17.2.7.1

This version.is compiled against XAF 17.2.7.

New features:

  1. All projects switched to latest C# version.

Bugs:

  1. Improve NavigationContainerController event subscription to avoid exception in certain cases.
    Discussion

  2. RefreshObjectViewController throws in Windows if custom view before MainWindow
    Discussion

     

17.2.6.2

This version.is compiled against XAF 17.2.6.

New features:

  1. The StorageMapper requires a source and a target objectspace and it will copy a collection of objects and their graphs from one objectspace to the other. Hosted in IO module.
  2. The ExcelImporter module.

Bug Fixes:

  1. Login problems with non admin in the WCF demo
    Discussion

Breaking Changes:

  1. To recompile the framework now you need VS Build Tools 2017. (Can be installed without VS2017).

17.2.6.1

This version.is compiled and EasyTested against XAF 17.2.6. No extra features or bug fixes

17.2.5.2

This version.is compiled against XAF 17.2.5.

New features:

  1.  Declarative support for orhapned collections with the use of the DatasourceCriteria attribute.
    EasyTest
  2. Enable multiple usage for the ModelMergedDifferenceAttribute.
    Discussion.

  3. Helper extension method IsOutdated to detected locked (XPO) objects.

  4. Added UpdateListEditor Controller extension method in Xpand.ExpressApp, Xpand.ExpressApp.Win assemblies. You can use this controller to lock the Grid from the platform agnostic module when you want to update a large number of objects.
  5. Added TakeLast linq extension method, which enumerates once. The method is added in Xpand.Utils assebmly so it is available everywhere.

  6. Added NestedListViewNonPersistentObjectSpaceController in Xpand.ExpressApp assembly for providing non persistent support
    EasyTest, model.
  7. Added ActiveDocumentViewController exposing an event to get notified when in MDI Tabbed enviroment the active view/page change. The controller added in Xpand.ExpressApp, Xpand.ExpressApp.Win assemblies so you can use it from your platform agnostic modules.
    EasyTest
  8. IModelObjectView attributes to configure an auto refresh interval in certain cases (root/nested/mdiTabbed views)
    EasyTest, model

Bugs:

  1. Vsix package results in VS hanging for certain types of projects and the Xpand ModelEditor did not list all projects. Now there is better logging for the exceptions, avoiding those locks and the ModelEditor lists everything.
  2. Disable PermissionProviderStorage caching when manager is invalid e.g on components that use REST
    Discussion.

Breaking Changes:

  1. XpandUnitOfWork used from XpandObjectSpaceProvider supported comming only changed properties through the ISupportChangedMembers interface which is now removed. The XpandUnitOfWork has now build-in and pre-enabled support for this case as per Security: Persist changed properties only when saving a changed business object record.
  2. GoogleTranslation provider is removed as Google no longer support this service for free. Bing is now the default provider. 
    Discussion
  3. The ModifyLayout property for the OverallCustomizationAllowedPermission will be applied by default only to Xpand Roles. For other Security Roles you must use the OverallCustomizationAllowedAttribute or some other way to create the ModifyLayout property manually.
    Discussion

17.2.5.1

This version is compiled against XAF 17.2.5.

New features:

  1. IO module: Support for POCO objects as SerializationGraphs. 
    https://goo.gl/9obcTg

 

How to use an eXpand module with an existing XAF application

eXpandFramework in Scott Hanselman

How to debug eXpandFramework

Instalation

Get eXpandFramework from the download page

  • The installer  adds the assemblies in the GAC, adds components in the toolbox includes the sources, adds a registry entry @ HKLM/Software/Wow6432Node/Microsoft/.NetFramework/AssemblyFolders/Xpand and installs the Xpand.VSIX package.

    You can install a module by performing any of the following actions.
    a) Drag & drop from the toolbox on a module designer. (The first time you open the toolbox it will populate all components and it may take some time.)
    toolbox
    b) Use the eXpandFramework Solution Wizard to create a new solution.
    solutionwizard

    The Wizard first will display the XAF solution wizard allowing to configure your XAF solution.
    xafwizard

    When the XAF wizard will finish and depending on your configuration a popup form will allow you to choose which eXpandFramework modules you wish to install.
    expandpopu

    If you have an existing solution Xpand.VSIX adds an entry to the related menu that will display the same module chooser form.
    addXpand
    c) Add the module in the requiredModuleTypes collections. For e.g say you want to register the WorldCreator module you need to add this line in your WinModule.Designer.cs,
    this.RequiredModuleTypes.Add(typeof(Xpand.ExpressApp.WorldCreator.Win.WorldCreatorWinModule));
    registering the agnostic platform WorldCreator can also be done similarly in your Module.Designer.cs but is optional. You will be notified in details what you have to do If further actions required by the compiler.


  • Nugget packages do not provide a design time support so you need to register manually the modules you want as described previously.
    The nugget packages also include the symbols (pdb files) which link to the online repo so you do not need the sources in order to debug the framework.
  • VSIX package contains VS commands, menus, tools, templates for working with XAF and eXpandFramework (optional).
  • The libs contained a pre-compiled version of all assemblies along with the symbols which are linked to the online repo so you do not need to get the sources for debugging the framework.
  • The sources may differ a bit from the online repro as they are optimized from the buildserver. So we recommend you use them from the download page instead of github unless you know what you are doing.

OverView

eXpandFramework follows XAF best practices so everything you know already about XAF (modules,controllers, propertyeditors etc) are avaliable as well here under a similar folder structure. So, instead of spending our limited recourse to doument what you already know about XAF artifacts we chose to make new implementations and assure a stable framework . The source code is open sourced and by exploring it a bit is easy to tell what is supported from each module. In addition you may also get a brief from the blogposts linked to each module in www.expandframework.com

For example an overview of the framework can be obtained by browsing the next links (note that the links point to 17.1 branch and you may need to change it to see future branches):

System Modules

Shared Libs (referenced from all modules)

Extra Modules  (This link lists all modules and you can explore its one seperately, similary to the next links)

    ModelDifference Module

    ModelDifference Module Win

    ModelDifference Module Web

    Dashboard

    WorldCreator

The above links are just an indication and not a complete list of what is included in the framework. Feel free to explore the rest and ask questions in the public forums.

All eXpandFramework artifacts are mapped to the XAF model allowing you to declaratively control them. 

To get a taste of how much eXpandFramework will enrich your model compare the next screenshots.

Model Options

 

 

 

ListView

 

 

 

DetailView

 

 

 Mapped Controls 

 Finally the project is actively devloped and supported, feel free to use the public forums for bugs, suggestions, questions etc.. 

Contribute to eXpand

eXpand is an open source project and contributions from the community are essential to its growth and success. Contributing to the eXpand Project is easy and you can give as little or as much time as you want. Anyone can contribute on any level, even newcomers can contribute to eXpand. Here are just a few ways you can get started:

Answer/Ask Questions in the eXpand Forums

eXpand forum users helping one another is one of the cornerstones of our community. Registering on the forum is quick and easy, and you can get started right away helping people just like you.

Write a Tutorial or Documentation

The eXpand Documentation Wiki is a living Web site for help documentation, tutorials, walkthroughs, and other helpful resources. You can help it grow by writing about anything you think might help other users, novice or expert.  Everyone that is registered at our forums has been given permissions to edit/post on our wiki

Write Code!

Code contributions in its various forms are very welcome - check our list of ideas! Link to Uservoice.
SourceCode GitHub: http://github.com/eXpand/eXpand

Test or Add a Comment to an Issue Report

We are always looking for more people to test patches, find and fix bugs, and help clarify issue reports. If you have programming skills, we recommend you inquire about joining the eXpand Dev Team by contacting This email address is being protected from spambots. You need JavaScript enabled to view it..

Contribute in Other Ways

There are a number of other ways both individuals and companies can contribute to the eXpand Project. To discuss these options, This email address is being protected from spambots. You need JavaScript enabled to view it..