Controlling DevExpress XtraGrid Control at runtime
24 Μαρτίου 10 09:42 πμ | tolisss | 0 σχόλια   
When I first met DevExpress I was amazed by their XtraGrid control. What a configuration monster!. Xaf exposes some of the configuration but not all. eXpand allows you to control all configurations of XtraGridControl per view as shown bellow

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: ,
The ModelArtifactState Module
22 Μαρτίου 10 11:23 πμ | tolisss | 0 σχόλια   
This one is the most complex implementation of the logic architecture cause this module is really a facade module. ActionState and ControllerState modules are hosted within it. But the implementation for each one of them as you see in the image bellow really looks alike   In order to control the different in model schema than the one that is provided bu defaul I have override the require methods of ControllerStateModule public class ControllerStateModule : ConditionalLogicRuleProviderModuleBase <TArtifactStateRule> where TArtifactStateRule : IConditionalLogicRule {         public override string LogicRulesNodeAttributeName {             get { return ControllerStateRulesNodeWrapper

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: ,
The AdditionalViewControlsProvider Module
19 Μαρτίου 10 08:51 πμ | tolisss | 0 σχόλια   
  AdditionalViewControlsProvider is a module that it only knows how to display a given control in a given position . So one could easily define an interface for the parameters needed when this behavior is implemented as public interface IAdditionalViewControlsRule : IConditionalLogicRule {     string Message { get ; set ; }     string MessagePropertyName { get ; set ; }     Type DecoratorType { get ; set ; }     Type ControlType { get ; set ; }     AdditionalViewControlsProviderPosition AdditionalViewControlsProviderPosition { get ; set ; }     bool UseSameIfFound { get ; set ; } } take a note that I inherit IConditionalLogicRule   thus logic engine can evaluate

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: ,
The Conditional Logic Module
18 Μαρτίου 10 05:00 μμ | tolisss | 0 σχόλια   
Say you want to make your rules conditional , meaning that you want your rules to be executed when certain criteria are valid for a given object. That is implemented at eXpand .ExpressApp.ConditionalLogic.dll assembly. I have extend ILogicRule interface like public interface IConditionalLogicRule : ILogicRule {     /// <summary>     /// Criteria to apply when show DetailView or filled ListView     /// </summary>     string NormalCriteria { get ; set ; }       /// <summary>     /// Criteria to apply when show ListView empty     /// </summary>     string EmptyCriteria { get ; set ; } } and create derived classes 1.from

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία:
The Logic Module
15 Μαρτίου 10 08:23 πμ | tolisss | 0 σχόλια   
Xaf architecture and especially the model part is great. What it really teach us is how to parameterized our logic/behavior/code and store that parameter in the model in the form of attributes on already existing nodes or on rule nodes see Xaf Validation system or ConditionalEditorState system. eXpand has provided a similar architecture through its ModelArtifactState module. But after you start using such “ruling” modules for some times the most “logical” question will come into your mind. How I could define a uniform way of describing a behavior in terms of an interface and apply a ruling system upon it. The above problem exactly is address by logic module. What it does ? First look at ILogicRule interface public interface ILogicRule {     string

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία:
ModelArtifactState - AdditionalViewControls breaking changes
14 Μαρτίου 10 08:09 μμ | tolisss | 0 σχόλια   
I have been pretty silent the last few weeks , but I have not been lazy so eXpand has now many more modules and features that I am going to speak about in my next posts. A Logic Module has been implemented and that lead to some breaking changes to ModelArtifactState / AdditionalViewControlsProvider modules ModelArtifactState The previous schema of ModelArtifactState rules was like < ModelArtifact >     < ConditionalControllerState IsNewNode = " True " >       < ControllerStateRule ID = " tests " TypeInfo = " DevExpress.ExpressApp.SystemModule.AboutInfo " IsNewNode = " True " />     </ ConditionalControllerState >   </ ModelArtifact >

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: , ,
New MemberLevel Security module
16 Φεβρουαρίου 10 11:22 πμ | tolisss | 0 σχόλια   
eXpand has a new module that make its easy to protect selected members from selected object instances. It does the above by checking if in the current system has been granted a eXpand.ExpressApp.MemberLevelSecurity.Win.Security.ProtectRowMemberPermission with an allow Modifier. Then it will allow you to protect selected members of an object as shown in the image above I have protected (minus sign) boths phones but not the fax (plus sign). So a user that do not have permission will see or for listviews There is also a non object instance depented permission for use as suggested by K18110 So when you create a new role you have to add the following permision by default role.AddPermission( new MemberAccessPermission ( typeof ( object ), null , MemberOperation .Read,

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: , ,
Exception handling module
11 Φεβρουαρίου 10 12:32 μμ | tolisss | 0 σχόλια   
eXpand has some time now an Exception Handling module that has not being introduced at all To install it ExceptionHandling.dll and ExceptionHandling.Win.dll or ExceptionHandling.Web.dll have to be added to your RequiredModuleTypes collection. For logging exceptions handling I am using Microsoft Enterprise Library   Logging Application Block . I m a huge fun of how well MSEL library is designed and browsing their source code is a best resource to learn. Visual Studio eXpand Project Item template has been updated with configuration files containing all sections required by MSEL MSEL has a configuration tool that helps you manage the configuration files and it is included at _third_party_assemblies eXpand folder along with other require MSEL assemblies. I have

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία:
Developing data analysis objects with the help of IO module
08 Φεβρουαρίου 10 10:12 πμ | tolisss | 0 σχόλια   
After creating PivotingChart Module I was able to really control the fluent DevExpress Pivot grid options at runtime and design more complex analysis pivoting UI writing no code and save all that “configuration” at the same database record as the analysis object. But I was still developing inside my VS and since my model was not stable yet I continuous drop the database using the DxCore addin to drop database at design time which by the way have been updated to support multiple datastores and damn I lose the designed analysis UI cause it was stored in the database Time for some IO module use I could export my analysis objects and use the following code to load the configured objects at application start up from an embedded resource public class Updater : ModuleUpdater

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: , ,
Multiple datastores support
03 Φεβρουαρίου 10 12:41 μμ | tolisss | 0 σχόλια   
  THE PROBLEM WorldCreator creates dynamic types for used within Xaf. It is doing that by compiling code templates at WorldCreator module setup method. To find those templates it has to query a persistent datastore using XPO. Now when you create a new XPO session it will check if all object types that XPObjectType table contains if are valid. So if you have used customizedtypesinfo to create runtime associations since it is called after module setup it will throw an exception complaining for invalid tables. Saying the above you understand that there is no way to open a connection to an XPO database that has records for objects with associations that have not fully defined. THE SOLUTION [ AttributeUsage ( AttributeTargets .Assembly,AllowMultiple = true )]

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: ,
New Pivoting module
01 Φεβρουαρίου 10 12:23 μμ | tolisss | 0 σχόλια   
eXpand says hi to its new Pivoting module. Show In Analysis action similar to show in reports (see also Devexpress example ) All Pivot control settings can be controled at runtime using the Pivot Settings action see for example the Pivot Options View settings view ModelArtifacteState module has been used to create a Show In Analysis , Pivot Settings   Permissions that can be applied to the Roles you want . [ NonPersistent ] public class ShowInAnalysisPermission : ControllerStateRulePermission {     public override string ControllerType {         get { return typeof ( ShowInAnalysisViewController ).FullName; }         set { base .ControllerType = value ; }    

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: ,
.NET hacking made easy
25 Ιανουαρίου 10 12:01 μμ | tolisss | 0 σχόλια   
I am in a mood this year so I decided to spend some time with a problem that I have left in the past. The problem I really wanted to use Runtime member for existent Types and also enable validation for those members. But for the reason i have describe in this post it was not possible, unless I change DevExpress source code and recompile (bad choice). DevExpress and any vendor could, for their own reasons not support your suggestion. Maybe for good or for bad I really not care, what I care is how to use Runtime member for existent Types with validation enable. So I will try a different approach I will use CThru which is an AOP open source interception framework based on the Typemock Open-AOP API to “ For any (past or future) object of type X in the system, make

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: , ,
Collaborating with Xaf and IO module
18 Ιανουαρίου 10 01:02 μμ | tolisss | 0 σχόλια   
.NET provides a lot of ways to collaborate between systems. All of them are based on data serialization. XPO is missing that, and have a client project that could not live without some generic type of serialization. So I create a simple but powerful IO engine It can serialize any object that inherits DevExpress.Xpo.XPBaseObject. It will also serialize any object that is related to the root object of serialization. To control the export engine A serialization graph can be provided . Object's properties can be serialized according to Serialization Strategy enumeration      public enum SerializationStrategy     {         SerializeAsValue = 0,         SerializeAsObject,

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: , ,
WorldCreator2 source code is out and stable
11 Ιανουαρίου 10 12:17 μμ | tolisss | 0 σχόλια   
  I have never really release a stable version through this blog of the module that allows you to create dynamic types through templating and scripting, so I am doing it now that the code is stable enough. To get the code read http://apobekiaris.blogspot.com/2009/10/how-to-get-expand-latest-version.html New Features eXpand Application Solution project item template John Pouliezos created a better design experience for all eXpand users by adding a New Project Item template. Using the above template you do not have to worry any more about setting up assembly references or registering modules/ persistent classes To install the template run the vs_setup.cmd batch file located at the root of eXpand folder after running buildall.cmd. You may want to uncomment

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: ,
eXpand presentation at XERP
21 Δεκεμβρίου 09 11:12 πμ | tolisss | 0 σχόλια   
XERP is an open source movement in order to create a .Net profitable enviroment. eXpand is serving the same goal and did a presentation of current state eXpand at 1st XERP meeting. I have demo the creation of a simple domain without writing any code. The modules used in the session WorldCreator for runtime Domain objects modelling + any custom scripting required to achieve the goal AdditionalViewsControlProvider for disaplying controls and bound them to domain objects ModelDifference module to configure the application model . ModelArtifact to make conditional a behaviour expressed by a controller  

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία:
Sneak Peak-->WorldCreator2 with Scripting and Templating
08 Δεκεμβρίου 09 01:43 μμ | tolisss | 0 σχόλια   
Based on the specs i posted here , I have created a working prototype In the video bellow I demo how you can model a classic Customer-Orders relationship at runtime modify the template of Orders property to create also a new custom readonly property that will return the first object of Orders if found. (same way you could create any teamplate e.g calculated proiperty template) You can reply in this post or through DeveXpress forums if you want to help in adding more specs and make WorldCreator a better module Technorati Tags: WorldCreator , dynamic Types , Scripting , CodeDom , Templating

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: , , , ,
Lets do BDD with MSpec and WorldCreator2
02 Δεκεμβρίου 09 03:00 μμ | tolisss | 0 σχόλια   
WorldCreator module is an excellent module and can provide dynamic types through a UI without a need of a user that knows coding. But since we all know coding I thought I move on and write some specs for WorldCreator2 . My first thoughts are to drop the reflection emit approach and go with the codedom one and support templating and scripting . So I have defined the following model and wrote 50 specs, which i am posting bellow and invite all of you to comment , suggest enhance them PersistentClassInfo Initialization, When initializing a Persis Technorati Tags: WorldCreator2 , BDD , MSpec tentClassInfo and default template exists » should assign that template to classInfo PersistentClassInfo Initialization, When initializing a PersistentClassInfo » should create

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: , ,
Xaf Tip #11 MVC architecture to overcome cyclic reference
24 Νοεμβρίου 09 01:30 μμ | tolisss | 0 σχόλια   
Cyclic reference is probably due to a flaw in design. So what? We are not perfect But we use Xaf , a model driven Application Framework from Devexpress and we can take advantage of that architecture so to overcome cyclic reference problems. I think an example is the most appropriate here. eXpand has a module called AdditionalViewControlsProvider , it can provide as the name says controls to views by setting some values on the model and since its an eXpand module it references eXpand.ExpressApp assembly (core) after I release AdditionalViewControlsProvider I release also PropertyPathFilters which is using AdditionalViewControlsProvider module to display the extra criteria but is hosted at eXpand.ExpressApp assembly (core) !!! How in the heck did I do that? Simple

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία:
BDD for Dynamic Types with mspec
19 Νοεμβρίου 09 03:43 μμ | tolisss | 0 σχόλια   
This one will be my 2nd post about mspec. The first on can be found here . I am still newbie in Mspec crazy syntax!! but have done a lot of TDD (after all BDD is TDD) , so my 1st effort of using mspec to describe all specifications (=expression of behaviors) for dynamic types module, along with some refactoring produced the following output ------ Test started: Assembly: eXpand.Tests.dll ------ ModuleCreator, When Creating Dynamic Module » should return a list of module base descenants Existe ntTypesMemberCreator, When Creating ExistentTypes CoreMembers that exist already » should not throw any exceptions ExistentTypesMemberCreator, When Creating ExistentTypes CoreMembers » should find that member through xpdictionary » should create typedattributes ExistentTypesMemberCreator,

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: , , ,
eXpand source code has moved to GitHub
19 Νοεμβρίου 09 03:25 μμ | tolisss | 0 σχόλια   
why we moved to GitHub? The main reason is speed. With Git u get the chance to work locally make your operations at your H/D and push any of those changes to GitHub anytime you want. And even that is  faster cause Git does not rely of Differences (Deltas) to work, it is just sending snapshot of the current file system. Another reason is that the tools for Gitting are pretty stable right now so there is no need to master Unit Shell in order to use it. So you can find TortoiseGit which is TortosieSvn port, Also GitExtensions are doing a very good job with Git – Visual studio integration. Another very impressive feature of GitHub is the collaboration between users. For example you may want to develop upon eXpand in your own way and without being a member of

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: ,
Dynamic types in any application?
16 Νοεμβρίου 09 01:08 μμ | tolisss | 0 σχόλια   
WorldCreator a module designed to work with Xaf can really work without it!!!! Suppose you have a non xaf application and you use Xpo as your dataLayer and you want dynamic types then WorldCreator can for sure help you. You just reference WorldCreator and eXpand .BaseImpl assemblies and use an approach similar to the specs bellow [Test] public   void Can_Create_Types_In_A_Non_Xaf_Context() {     new PersistentClassInfo(Session.DefaultSession){Name = "Test" }.Save();     var typeCreator =         new TypeCreator(             new TypesInfo( new List<Type> {                                             

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: ,
Dynamic Types and Interfaces
10 Νοεμβρίου 09 02:03 μμ | tolisss | 0 σχόλια   
Its now possible to implement existent interfaces for your dynamic types . How? Setup your InterfaceSources at your model Populate them through InterfaceInfo Listview and make your dynamic classes to implement them Technorati Tags: WorldCreator , Dynamic Types , Interfaces

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: , ,
Filtering a listview of objects according to their childs
09 Νοεμβρίου 09 02:11 μμ | tolisss | 0 σχόλια   
  The Problem 1 A common requirement in any OOP application is the ability to filter a listview of objects according to their childs in whatever level they belong. eXpand can solve the above by the use of propertypath filters. So in an Customer—>Orders--->OrderLines relationship the filter bellow are enough to filter your customer list view according to any property value of their Orders child collection with the one bellow you can filter customer list view by any property value of orderlines collection of customers orders collection In the video bellow i demo 1. the above functionality that is hosted at eXpand.ExpresApp assembly, 2. eXpand.ViewVariants module for creating views without the model editor (that is badly needed now that we can have multiple

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: , , , ,
Dynamic Type Merging
03 Νοεμβρίου 09 11:20 μμ | tolisss | 0 σχόλια   
I hope you all vote on DeveExrpess Issue that will allow us to validate runtime extended existent types. But even if you did not there is an alternative way that my friend Emilio shared with us. I want to add runtime members for my existent Customer class for which records already exist in the DB and also use the validation system You can create a new dynamic type that inherit your customer class decorate it with the MapInheritance attribute and set the MergedObjectType same as BaseType Download working sample app with source code here Technorati Tags: WorldCreator , Dynamic Types , Merging

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: , ,
Dynamic Types with WorldCreator source code is out
02 Νοεμβρίου 09 03:50 μμ | tolisss | 0 σχόλια   
WorldCreator is a xaf module that provide dynamic persistent types for your application and runtime members for your existing classes. That means that you can define dynamic types at runtime through a UI (xaf views) save them in the database and let your imagination free !!! Installation Very simple you just register the selected assemblies bellow   and add the required classes you want from .Persistent.BaseImpl At my previous post IOC by BaseImpl I have explain the use of DevExpress.Persistent.BaseImpl assembly so in the same concept eXpand now has its own eXpand.Persistent.BaseImpl that will host a default implementation of persistent interfaces used from eXpand As you can see at the above image there are to types of prefixes on those classes Persistent—>

Διαβάστε περισσότερα »

Δημοσίευση στην κατηγορία: , , ,
Περισσότερες Δημοσιεύσεις « Προηγούμενη - Επόμενη »

Search

Go

Το Ιστολόγιο

Ιστορικό Δημοσιεύσεων

Συνδρομές