A. Bekiaris's Blog
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
Το Ιστολόγιο
Αρχική Σελίδα
Ετικέτες
13.2
ace.c9
AdditionalViewControlsProvider
anonymouslogin
AOP
application framework
aspect-oriented programming
AspxTreeListEditor
AuditTrail
BaseImpl
BDD
Blogging
breaking changes
C#
Code Generation
Code Quality
CodeDom
CodeRush
CodeSmith
Continous Integration
Cookies
Core.Web
Core.Win
CQL
CThru
dashboard
DataStoreAttribute
DBMapper
Design Patterns
Devexpress
DictionaryDifferenceStore
DomainComponents
DSL
DX
DxCore
Dynamic Types
EasyTest
Email
Entity Framework
events
ExcelImporter
eXpand
FormsAuthentication
IO
Logic
MemberlevelSecurity
Merging
ModelArtifactState
ModelDifference
Montly_News
MSpec
navigation
NBehave
NCaousel
NCover
NDepend
open source
performance
PivotChart
PostSharp
propertypathfilter
ProvidedAssociation
refactor
RememberMe
reports
Resharper
runtime members
Scheduler
Scripting
Security
source code
SqlDbMapper
statemachine
SubVersion
survey
TDD
Templating
TestDriven
Thumbnails
ToolTips
TortoiseSVN
training
TreeListEditors
TypeMock
v10
Validation
video
view inheritance
ViewController
ViewVariants
Visual Studio plugins
WCF
WebSitePark
WF
WorldCreator
WorldCreator2
Xaf
Xaf Tips
Xpo
XVideoRental
Πλοήγηση
Αρχική σελίδα
Ιστολόγια
Συζητήσεις
Εκθέσεις Φωτογραφιών
Αρχειοθήκες
Ιστορικό Δημοσιεύσεων
Ιανουάριος 2019 (1)
Οκτώβριος 2018 (1)
Αύγουστος 2018 (1)
Ιούνιος 2018 (1)
Μάρτιος 2018 (1)
Αύγουστος 2017 (2)
Απρίλιος 2016 (1)
Ιούλιος 2014 (1)
Ιούνιος 2014 (1)
Απρίλιος 2014 (1)
Δεκέμβριος 2013 (1)
Νοέμβριος 2013 (7)
Οκτώβριος 2013 (6)
Σεπτέμβριος 2013 (4)
Αύγουστος 2013 (4)
Ιούλιος 2013 (7)
Μάιος 2013 (2)
Απρίλιος 2013 (2)
Μάρτιος 2013 (1)
Φεβρουάριος 2013 (2)
Ιανουάριος 2013 (5)
Δεκέμβριος 2012 (3)
Νοέμβριος 2012 (3)
Σεπτέμβριος 2012 (1)
Αύγουστος 2012 (2)
Μάιος 2012 (1)
Απρίλιος 2012 (1)
Μάρτιος 2012 (2)
Ιανουάριος 2012 (2)
Δεκέμβριος 2011 (4)
Νοέμβριος 2011 (1)
Σεπτέμβριος 2011 (5)
Αύγουστος 2011 (5)
Ιούνιος 2011 (1)
Απρίλιος 2011 (2)
Μάρτιος 2011 (1)
Φεβρουάριος 2011 (2)
Ιανουάριος 2011 (2)
Δεκέμβριος 2010 (3)
Νοέμβριος 2010 (3)
Οκτώβριος 2010 (3)
Σεπτέμβριος 2010 (8)
Αύγουστος 2010 (6)
Ιούλιος 2010 (1)
Μάιος 2010 (3)
Απρίλιος 2010 (5)
Μάρτιος 2010 (9)
Φεβρουάριος 2010 (5)
Ιανουάριος 2010 (3)
Δεκέμβριος 2009 (3)
Νοέμβριος 2009 (8)
Οκτώβριος 2009 (11)
Σεπτέμβριος 2009 (8)
Αύγουστος 2009 (8)
Ιούλιος 2009 (10)
Ιούνιος 2009 (21)
Συνδρομές
RSS 2.0
Atom 0.3