all pages

Space Index

0-9 ... 0 A ... 10 B ... 7 C ... 6 D ... 14 E ... 5
F ... 4 G ... 5 H ... 15 I ... 0 J ... 1 K ... 0
L ... 3 M ... 5 N ... 6 O ... 7 P ... 15 Q ... 0
R ... 32 S ... 4 T ... 11 U ... 22 V ... 0 W ... 12
X ... 0 Y ... 0 Z ... 0 !@#$ ... 0    

0-9

A

Page: About the PhoneBook tutorial
DELETE ME
Page: advanced re-motion mixins -- dessert wax revisited
Let's say we want to build our own configuration from scratch for mixing a floor wax to a dessert topping, as demonstrated in the first exercise of this tutorial – re-motion mixins basics -- the 'Uses' attribute and the 'ObjectFactory'. To this end, we cr
Page: advanced re-motion mixins -- mixin configurations
The previous pages of this tutorial cover how most programmers use re-motion mixins most of the time. This page gives you some background information and shows how to use re-motion mixins dynamically, i.e. how to mix classes at run-time in an ad-hoc fashi
Page: advanced re-motion mixins -- potential for confusion
As pointed out earlier on this page, for the fluent interface to work, we must build an intermediate representation of the mixin configuration called the builder. Do not confuse the builder for the mixin configuration. What you build with chained methods
Page: advanced re-motion mixins -- removing items, scoping of mixin configurations
Mixin scopes are useful for mixing at run-time and limiting the "reach of action" for certain mixins. If nothing else, this is eminently useful for testing. This page explains how to construct and use mixin scopes. The Hotel mixin sample's Hotel.Tests pro
Page: AGPL
The following re-motion enterprise components are licensed by the AGPL. (Or, actually, dually licensed. The AGPL is one of two options here.) re-vision re-flow re-strict (if used as a web-service instead of a library. See re-strict licensing). See also re
Page: all pages
Page: An ACTING LESSON for your pet parrot -- working with 'Base'
What if we want a really professional stage animal for theatrical performance? Then it is important to speak LOUD – all uppercase, that is. We implement LOUD by overriding the Say () method and uppercasing the argument string s. This in turn requires acce
Page: An acting lesson for your pet parrot -- working with 'This'
We have introduced the Parrot class hierarchy on the wiki-page re-motion mixins basics -- what about sub-classes of the target class?. For the following example we use only the base class, i.e. Parrot. Note that Parrot has a Say (string s) method. (What w
Page: ASP.NET for people who did not bother until now
With substantial input from Martin Schwarzbauer. A quick patch for the impatient ASP.NET neophyte This section is a brief introduction to the most important concepts of ASP.NET. Large volumes have been written about ASP.NET, and most of the more comprehen

B

Page: Backstage, meta, shop floor
Reader requirements: uigen.exe what uigen.exe does How the PhoneBook and templates are related Maintaining uigen.exe and uigen.exe templates The PhoneBook innovation cycles Upgrading to a new re-motion version Upgrading the templates to a new re-motion ve
Page: Bidirectional 1-1 relation
The bidirectional relationship between a Person and its PhoneNumbers clearly is an 1:m relationship, as indicated by the PhoneNumbers property's type – ObjectList<PhoneNumber>. Bidirectional 1:1 relationships are declared more or less in the same way, wit
Page: Bidirectional 1-n relation
If you look at the [ DBBidirectionalRelation ] attribution in both the Person and the PhoneNumber class, you will see that they are mutually complementary: bidirectional-endpoints.png The first parameter of the [ DBBidirectionalRelation ] attribute is the
Page: bindable domain object
A bindable domain object is a domain object that also exposes the IBusinessObject interface. (If you don't know what this means, read Domain object vs. business object first.) Thus a bindable domain object has two useful traits: re-store can persist it re
Page: BOC
DELETE ME
Page: Building re-motion
For building re-motion, you need Visual Studio 2008. re-motion depends on third-party libraries, but they are part of the distribution: log4net http://logging.apache.org/log4net/ Castle DynamicProxy http://www.castleproject.org/ For detailed instruction a
Page: business object
DELETE ME

C

Page: Calling _Pick location_
Person objects not only have a FirstName and a Surname property, but also an address property pointing to another domain object – an instance of class Location. The EditPersonForm gives the user a GUI to edit particular Person objects. In this case, we ar
Page: canonical project structure
DELETE ME
Page: client transaction
DELETE ME
Page: client transaction and the unit of work
If you look at the Miss Quackfaster http://en.wikipedia.org/wiki/Emily_Quackfaster example for the unit of work, be aware that, at the same time, behind the scenes, client transactions were created for each new form (by re-call). These client transactions
Page: Code generation in re-motion
re-motion makes good use of program generation and comes with three command-line program generators: dbschema.exe generates a database schema for persisting domain object instances uigen.exe generates a ASP.NET-application from domain object classes wxege
Page: complete interface
Taken from the source code documentation. This class attribute indicates that an interface acts as a complete interface for a class instantiated via ObjectFactory. A complete interface combines the API of a target type with that of its mixins. For example

D

Page: dbschema.exe
dbschema.exe inspects domain object assemblies to find domain object classes, their properties and attributes and generates the database schema - tables and views. As the PhoneBook tutorial explains, a domain object class essentially is a set of propertie
Page: dbschema.exe and remote machines
The original content of this wiki page has been copied from the PhoneBook tutorial. It might or might not be in sync with it at the time you are reading this. Please note that dbschema.exe will refuse to run from remote machines (.NET policy). If you get
Page: determining the mixin configuration
Determining the mixin configuration at startup by inspecting assemblies is the default behavior in re-motion mixins. Other options exist; a deeper discussion on re-motion mixins configurations can be found here: advanced re-motion mixins -- mixin configur
Page: discarding scope
DELETE ME
Page: domain assembly
The assembly that implements the domain of your application, i.e. contains your subclasses of DomainObject (or, BindableDomainObject). Such subclasses are called domain object classes or domain classes. The domain assembly can be inspected by dbschema.exe
Page: domain class
DELETE ME
Page: domain object
DELETE ME
Page: domain object assembly
DELETE ME
Page: domain object class
DELETE ME
Page: domain object instance
DELETE ME
Page: domain object vs. business object
The terms "business object" and "domain object" are mutually exchangeable in common understanding in enterprise computing. Note that wikipedia links to the same article for both terms: http://en.wikipedia.org/wiki/Domain_object http://en.wikipedia.org/wik
Page: Domain objects not derived from BindableDomainObject
Error message: Execution aborted: The type 'PhoneBook.Domain.Location' does not have the 'Remotion.ObjectBinding.BusinessObjectProviderAttribute' applied. Parameter name: type This message is probably misleading, because the most likely cause is that you
Page: domain, domain class, domain assembly -- the big picture
domain-classes-assembly-big-picture.png You program what your application is all about in the "domain". The entirety of the domain object classes constitutes the domain. Domain object classes (a.k.a. domain classes) are derived from re-motion's base-class
Page: Duplicate directories (trees) and master directories
For practical reasons, that is, reasons that have nothing to do with software engineering, duplicates of directory trees must be maintained: the re-motion assembly directory the template tree The re-motion assembly directory is needed for both the uigen.e

E

Page: embel -- rationale and limitations
embel.py has two major advantages when compared to merging with SVN branches: no manual setup required (i.e. you don't need to recreate source- and target-projects as branches) "idempotence", i.e. you can re-run embel.py for a given source- and target-pro
Page: embel -- room for improvement
more detailed exceptions (currently no indication is given whether begin- or end markers are missing in the source or the target) embellib.py could be entirely generic if we move the kBegin..., kEnd... identifiers to embel.py. This would require new unit-
Page: embel documentation
This part of the wiki assumes that you are familiar with uigen.exe, uigen.exe templates and the PhoneBook tutorial. embel overview Using embel.cmd and embel.py How embel.py works embel -- rationale and limitations embel -- room for improvement unicoder.py
Page: embel overview
"embel" is short for "embellishing the PhoneBook web application". embel puts the PhoneBook tutorial's embellishments back into the application after uigen.exe has created a new application from the domain. Why would anyone do such a crazy thing? Answer:
Page: EnterFreud -- domain object and client transaction basics
All sample code is organized as static methods of the Program class. The first and probably the simplest is EnterFreud. It creates a Location instance to accommodate Dr Freud a Person instance representing Dr Freud a PhoneNumber instance for Dr Freud Here

F

Page: Failure to remove a stale PhoneBook.Web project
Error message: UIGen error: OBLXE0202: FileAlreadyExists: C:\PhoneBook\PhoneBook.Web\PhoneBook.Web.csproj This happens if you try to generate your PhoneBook web client application again without removing the existing PhoneBook.Web directory first. In this
Page: FAQ Mixin
Can re-motion mixins do anything that extension methods can't? With extension methods, you can't mix classes with properties to a target class, because extension classes are static and can't provide state. What's more, extension methods are not dynamic in
Page: Forgetting one or more sides of a bidirectional relation
The original content of this wiki page has been copied from the PhoneBook tutorial. It might or might not be in sync with it at the time you are reading this. If you forget one of the DBBidirectionalRelation attributes, you get one of two error messages,
Page: Forgetting to compile
The original content of this wiki page has been copied from the PhoneBook tutorial. It might or might not be in sync with it at the time you are reading this. This evergreen even bites old-timers occasionally: if you fix something in your PhoneBook.Domain

G

Page: Getting a virgin machine ready for a re-motion demo
Deployment on the "S0023 laptop computer". That computer came with Windows Vista 32bit Visual Studio 2008 MSSQL Server 2008 Tortoise SVN Development\Remotion Development\Prototypes I had to do the following checkout the entire Remotion-Contrib directory T
Page: Getting re-motion
Binaries Go to the download site http://re-motion.org/builds/ Sources Get the sources via subversion from our subversion repository https://svn.re-motion.org/svn/Remotion/ Ten Minutes Build For the latest version, you need Visual Studio 2010. Older versio
Page: Globalization remarks
Based on a novel by Michael Ketting The MultiLingualResources attribute and classes You can specify more than one MultiLingualResources attribute for a class. Each attribute associates the class with a resource file. If you derive more classes from the at
Page: Glossary
Acta Nova Acta Nova is the biggest re-motion project. For non technical information, go to https://www.acta-nova.eu https://www.acta-nova.eu bindable domain object One of the most important base classes for binding and persistance business object see doma
Page: GPL
DELETE ME

H

Page: Hints on how to implement pessimistic locking for re-store
Optimistic locking is favorable for smallish objects. However, for larger objects, optimistic locking poses a problem. A user might invest a lot of work into modifying an object before learning that he cannot save his work, because he lost the race for co
Home page: Home
re-motion in a nut-shell DDD Framework for .NET Web Applications powerful components for data entry and data storage two modern technologies to increate the .NET development experience. open source a framework made by excellent developers for excellent de
Page: Hotel mixin sample
Hotel mixin sample -- introduction Hotel mixin sample -- overview Hotel mixin sample -- design Hotel mixin sample -- Components, slices
Page: Hotel mixin sample -- accommodation mixin
(The accommodation mixin includes basic billing) This slice of the software remembers who has been accommodated in which room keeps track of consumption of beverages (beer and soda) Each week and each occupied room is represented by an instance of Accommo
Page: Hotel mixin sample -- Components, slices
Components interact and build on each other, but some can be safely removed without impairment of the rest of the software. Here is a diagram of the dependencies: FIXME ILLU Hotel mixin sample -- repositories Hotel mixin sample -- reservation mixin Hotel
Page: Hotel mixin sample -- design
Slices The list in the introduction reveals the use-case slices, modules expressing the logic for each use-case. Each slice is a separate project in the sample code. Each slice is a separate project in the sample code. Hotel.Base is more or less a naked s
Page: Hotel mixin sample -- discount mixin mixin
Guests who show up for the 3rd time get a 10% discount. (Values can be configured by modifying const|s in the source-code.) This slice is an extension to the accommodation and billing slice (see FIXME). The method CheckOut (see above) computes the price o
Page: Hotel mixin sample -- introduction
Aspect-oriented programming (AOP) gives the programmer facilities for slicing and dicing logic that go beyond class hierarchy and composition. This article introduces (re-motion) mixins as an alternative to AOP. We decompose a toy domain into use-case sli
Page: Hotel mixin sample -- overview
The Mixin Hotel is a sample application for Barbara and Manuela, two concierges who are overwhelmed by scribbled notes. Four use-case slices constitute the application: reservation system – managing (future) reservations for rooms billing – the guest's co
Page: Hotel mixin sample -- queue mixin mixin
In our toy-world of the Mixin Hotel, it happens that all rooms are not only occupied, but also often reserved in advance; interested parties and their reservations must be sent away. However, often reservations are canceled, so it is a good idea to put pe
Page: Hotel mixin sample -- repositories
The common base-class for all repositories is implemented in the sub-project Hotel.Repository. It is a simple generic type with the type of the aggregated instances as type parameter. The generic interface IRepository<T> exposes three methods: - T Add (T
Page: Hotel mixin sample -- reservation mixin
The first slice of the software manages reservations, essentially built around a repository of ReservationInfo instances. ReservationInfo is modeled around Babara's and Manuela's index cards with names, weeks and room numbers. When receiving a reservation
Page: How embel.py works
The python code for the embel python script is split in two parts: "utility" functions are kept in embellib.py the actual work is done by embel.py calling those functions The separation has nothing to do with generalization of the utility library. Both th
Page: How to implement pessimistic locking in re-store
DELETE ME
Page: How treecomp.py works
python's dircmp class treecomp.py uses the python standard library filecmp, dedicated to the purpose of comparing files and directories. Part of filecmp is a class named dircmp for comparing two directory trees. In filecmp jargon, these two directory tree

I

J

Page: Junction objects
Database programmers use junction tables to implement m:n relations. (wikipedia http://en.wikipedia.org/wiki/Junction_table.) Junction objects follow the same logic as junction tables. A junction object contains two object lists, one for the n-side, one f

K

L

Page: LGPL
DELETE ME
Page: Linq and domain objects (Location class)
The way Linq works can be seen in the listing of the complete GetLocations method in Location: public static Location[] GetLocations() { var query = from l in QueryFactory.CreateLinqQuery<Location>() select l; return query.ToArray(); } This roughly corres
Page: login peculiarity
Login in confluence is obstinate for some pages with certain punctuation characters in the page's title (like braces). So if you can't login by clicking 'login', you are being victimized by punctuation. Here is an illustration: ntlm-login-problem.png In t

M

Page: Maintaining uigen.exe and uigen.exe templates
For real-world applications, uigen.exe is used only a few times. Since it is not a round-trip tool, uigen.exe is invoked only for building prototypes. As soon as one prototype has reached a halfway satisfactory maturity, developers take it from there and
Page: Mind the SQL!
DELETE ME
Page: Mixin cross-referencing tool
Based on a novel by Patrick Größ Overview The mixin cross referencer ("MixinXRef") is a tool for generating a browsable report (HTML). The report aids understanding of large architectures that use many mixins. The source can be found in the re-motion cont
Page: More about client transactions
client transactions and the concept of the unit of work are closely related. You can read more about this topic here: client transaction and the unit of work See also re-call and client transactions Why use sub-transactions?
Page: More about transaction scopes
An older version of re-store required the programmer to discard the client transaction explicitly, thereby handing over the transaction and its domain object instances to the garbage collector. This is what the API for discarding a client transaction look

N

Page: NEW IN 1.13.26! Changing the entire master configuration
Beginning with version 1.13.26, re-motion mixins supports the replacement of the entire default master configuration with your own. This works along the lines of setting the active configuration. Use the static method MixinConfiguration.SetMasterConfigura
Page: New Shimmer
In a seminal sketch on the US comedy show Saturday Night Live, a couple has a debate on whether New Shimmer is a floor wax or a dessert topping. Chevy Chase - obviously a salesman for the product - enters the room and explains: New Shimmer is both. You ca
Page: NewObject and GetObject (Location class)
The base class DomainObject (or BindableDomainObject, in this case) have generic protected static methods for creating and retrieving domain object instances for a given class. DomainObject.GetObject<T> fetches an object from the database DomainObject.New
Page: newversion.cmd
newversion.cmd replaces the re-motion assemblies in a given project for those from a new version. This tool assumes that the (PhoneBook) project's assemblies are stored in the Remotion\net-3.5\bin\Debug subdirectory. The tool uses the unzipper 7z.exe to u
Page: No DLLs (or no files at all) in asmdir
Error message: Execution aborted: Argument rootAssemblies is empty. This happens when there are domain library assemblies in the directory specified by the /asmdir parameter. The most likely cause (at least in the practice of the author) is to Clean the b
Page: No PhoneBook.Domain.DLL in the asmdir directory
Error message: Execution aborted: Index was outside the bounds of the array. Yes, it is a misleading error message. The directory specified with the /asmdir switch does not contain any .DLLs with domain object classes.

O

Page: Object list
DELETE ME
Page: Object persistence framework
DELETE ME
Page: Objects in perma-URLs
re-motion supports passing the IDs of domain objects in URLs, so that you can send around pages like these as links and have the recipient see exactly what you see: see-what-you-see.png Sending around pages associated with a particular object can be very
Page: Of what class is the instance the object factory returns?
Note that in this example, there is no mixed class DessertWax (derived from DessertTopping and FloorWaxMixin). The mixed class is created by the ObjectFactory as soon as needed, upon first instantiation of our mixed class for the dessert wax. Looking at t
Page: On re-bind's data source controls
Data source controls shield the retrieval and interfacing of data from the display of that data. ASP.NET 2.0 provides all sorts of data sources, for example: An SqlDataSource provides tabular data stored in an SQL database. A GridView or FormView can bind
Page: OPF
DELETE ME
Page: Other tools
newversion.cmd replacer.exe svn-del.exe

P

Page: page function
DELETE ME
Page: Persistence
DELETE ME
Page: Persistence with re-store
DELETE ME
Page: Persisting objects in tables
With a tip of the hat to Stefan Wenig, whose diagrams I lifted from his slides. The overview in the previous What is re-motion? chapter briefly explains that three methods are popular when storing object instance data in relational database tables: single
Page: PhoneBook project structure
The phonebook project is structured like most re-motion projects at rubicon. We call this the canonical project structure. Three sub-projects constitute a canonical re-motion project (or, actually, a canonical VS 2008 solution): a domain project with all
Page: PhoneBook tutorial
The PhoneBook tutorial (a.k.a. "the illustrated primer") demonstrates how to build a simple re-motion application and discusses important re-motion concepts. The PhoneBook tutorial can be downloaded here https://www.re-motion.org/download/PhoneBook-Tutori
Page: PhoneBook walk-through
Going over the PhoneBook tutorial takes a couple of days, because it is "constructive". The tutorial is an instruction of how to build the PhoneBook web application. This walk-through is analytical. It explains how the PhoneBook web application is built –
Page: PhoneBook.Domain -- learn to declare domain object classes
There is one file for each domain object class: Location.cs Person.cs PhoneNumber.cs What's more, we have Country.cs is with enums for countries used by the Location class. The role of the following files is not explained in this walk-through, this sample
Page: PhoneBook.Domain -- relationships
The Location class used as example so far has no property referencing other domain object classes. In domain terms: a Location instance does not know who lives there. This knowledge works the other way around: It is the Person instance that knows where it
Page: PhoneBook.Sample -- learn what makes domain object classes tick
The PhoneBook.Sample sub-project contains code for exercising the domain object classes without a GUI. Program.cs contains most of the code discussed here App.config contains the important database connection info Celebrities.cs instantiates Location, Per
Page: Pick location and WxeGen.exe
The best way to understand what wxegen.exe generates is to look how a re-call function is used first. Page Calling _Pick location_ introduces the transition from the calling EditPersonForm (Arnold Schwarzenegger) to the called PickLocation form. As a prog
Page: Pick location's re-call header
A re-call header is a comment snippet with XML for WxeGen.exe to read and process. The re-call header annotates the class constituting the re-call function. The re-call header for Pick location looks like this: pick-location-re-call-header.png As you migh
Page: Pick location, the page function
This page is part of the discussion on how wxegen.exe and re-call work. For best results, read wxegen.exe first. Calling _Pick location_ – a brief explanation of what the user sees of Pick location and what it does Pick location's re-call header – how the
Page: PickLocation's Call methods
public static Location Call(Remotion.Web.ExecutionEngine.IWxePage currentPage, Remotion.Web.ExecutionEngine.IWxeCallArguments arguments) { PickLocationFunction function; if ((currentPage.IsReturningPostBack == false)) { function = new PickLocationFunction
Page: Properties and property attributes (Location class)
A domain class is - first and foremost - a set of typed properties. These properties require annotations, as explained on this related page: domain object class. Our Location includes string properties Street Number City String properties should be attrib

Q

R

Page: re-call
Of all re-motion components, re-call is the most subtle, and its benefits are not obvious. In a nutshell: re-call gives you the programmer convenience of modal dialogs, known from desktop applications. Look at the illustration of a vintage computer system
Page: re-call and client transactions
re-call is more flexible than is visible in the example. re-store does not depend on re-call. re-call creates client transactions for each form the user opens. This, however, is just the default behavior for what programmers typically want, not a requirem
Page: re-call function
DELETE ME
Page: re-call header
DELETE ME
Page: re-call page
DELETE ME
Page: re-call page (function) synonyms
DELETE ME
Page: re-call page-functions
DELETE ME
Page: re-form
re-bind - the faces of your domain objects re-bind is the face of your domain object and every object that implements the IBusinessObject interface. Key Features Data binding Generate your pages from your domain source code Illustration Each data type has
Page: re-mix
re-mix enables developers to use mixins in .NET application. This mixins library is open source software (LGPL). If you are new to mixin technology, the wikipedia article http://en.wikipedia.org/wiki/Mixins provides you with a good overview about the back
Page: re-motion API documentation
DELETE ME
Page: re-motion components
Components The following components constitute the re-motion web framework: name purpose license hands on lab re-store object persistence, transactions LGPL download https://www.re-motion.org/community/LinkClick.aspx?fileticket=DUGFVM66QvE%3d&tabid=69 re-
Page: re-motion contrib repository
The re-motion contrib repository contains all the projects that are not part of re-motion's main assemblies. These "contributions" currently include the PhoneBook project the uigen.exe project The corresponding repositories are located under https://svn.r
Page: re-motion licensing
re-motion is dual-licensed under the LGPL/AGPL open source licences (see details below) as well as a commercial license. The definitive source regarding the open source licensing of re-motion is always the licensing information given in the re-motion sour
Page: re-motion mixins basics -- accessing target class members in a mixin class
re-motion mixin provides access to members of the target class with the property This (note the upper-case 'T'), as in This.SomeTargetClassMethod () This.SomeTargetClassProperty () Access to base methods of the target class is provided by the property Bas
Page: re-motion mixins basics -- duck typing
Duck typing in dynamic languages What advocates of "dynamic" (dynamically typed) languages like about them is duck typing. In python, for example, you can pass and return values of any type, the functions working with them don't care at compile type: def
Page: re-motion mixins basics -- instantiation with parameters
re-motion in general uses parameter lists for passing parameters for constructors to the object factory. The mechanism is explained in the PhoneBook tutorial for NewObject<T> (section NewObject<T> with parameters). For every class for which you want to ha
Page: re-motion mixins basics -- overriding mixin methods
Having a target class overriding a mixin's method is easy to implement – just use the OverrideMixin attribute. In the following code sample, the programmer is impatient with the OnThePhoneMixin's Wait method and writes his own for the Parrot class. This o
Page: re-motion mixins basics -- overriding target methods
Since a target class is not necessarily designed to be extended by a mixin class, a mixin class might have better ideas on how to implement properties and methods in the target class. In our example, the FloorWaxMixin might desire to override the target c
Page: re-motion mixins basics -- the 'CompleteInterface' attribute
We can make Chevy Chase' New Shimmer skit even more funny by adding a shaving cream to the mix, giving our civilization a shaving dessert wax: public interface IShavingCreamMixin { void LubricateBeardStubbles (); } [Extends (typeof (DessertTopping))] publ
Page: re-motion mixins basics -- the 'Extends' attribute
In practice, you probably won't use the Uses attribute very often. Mixins are a good way to extend framework classes (re-motion classes, for example). This works best when the framework classes don't even know that they are extended, when no modification
Page: re-motion mixins basics -- the 'Uses' attribute and the 'ObjectFactory'
New Shimmer – a dessert topping AND a floor wax! A classic example for multiple inheritance is based on a Saturday Night Live parody ad starring Chevy Chase: New Shimmer. Is New Shimmer a dessert topping? Is it a floor wax? The answer is: both! So we have
Page: re-motion mixins basics -- the generic 'Mixin' type
So far, the mixin classes in our dessert wax samples were completely orthogonal. No method in DessertTopping needs access to members in FloorWax and vice versa. You probably DO want to have mixins that access members in the target class. See next (in this
Page: re-motion mixins basics -- what about sub-classes of the target class?
Classes derived from the target class "inherit" all mixins from the target class. In section re-motion mixins basics -- the generic 'Mixin' type we will make extensive use of a Parrot class. Many types of parrots exist – the clever grey parrot, the colorf
Page: re-motion mixins front matter -- READ ME
re-motion mixins are part of re-motion The re-motion mixins library is part of the re-motion web framework. There is currently no single assembly that contains only mixin functionality that can be used independently. If you want to use mixins in your proj
Page: re-motion mixins TypeInitializationException
You get this exception when you want to use the re-motion API and a re-motion assembly can't be loaded. This typically occurs if you use the re-mix library in your application, but don't use the rest of re-motion. You can force the load by invoking Framew
Page: re-store
This page assumes that you have understood the overview of this section the concept of domain objects (when in doubt, read wikipedia http://en.wikipedia.org/wiki/Domain_object basic concepts of O/R-mapping re-store persists domain objects re-store is re-m
Page: re-strict dictionary and overview
re-strict is re-motion's security module. Group and group type A group is an instance of a certain group type. Examples: A company might have several research groups code-named after famous Viennese Cafes: "The Sperl Group", "The Drechsler Group", "The Wo
Page: re-strict licensing
DELETE ME
Page: replacer.exe
replacer.exe simply replaces a given string for another given string in a given file. The file is overwritten by the new derivate. replacer.exe is written in C#, namely, this line: File.WriteAllText (args[0], File.ReadAllText (args[0]).Replace (args[1], a
Page: Repositories -- sample vs. production
The design smell is that we use three separate repositories (or four, if you include the accommodation history dictionary) and three different data-types. They share nothing: how-the-repositories-are-implemented-here.png In a real repository pattern imple
Page: Rollback vs. discard
So far, we have used "discard" as the alternative to "commit". If you or your program does not like modifications, the program simply skips the Commit() and the changes to domain object data are not permanently stored in the persistence store. This is a c
Page: rubicon
rubicon is a Viennese software company. rubicon employs more than 50 people, most of them software developers (Homepage http://rubicon.eu/en/Home/Default.aspx). Acta-Nova http://www.acta-nova.eu/an/ is rubicon's e-government framework, based on re-motion,

S

Page: sample uigen.exe configuration file
<?xml version="1.0" encoding="utf-8" ?> <!-- ATTENTION! Only ABSOLUTE PATHS are supported by uigen.exe --> <!-- DO NOT USE RELATIVE PATHS OR YOUR APPLICATION WILL BREAK --> <applicationGenerator template="\PhoneBook\Remotion\UIGenTemplates\TabbedEditor\Ta
Page: SEC
DELETE ME
Page: Superficial PhoneBook test
click on each tab (to see "New"s) click on "List" on each tab do we have icons? (clearly obsolete for an unembellished PhoneBook application) do the lists look complete? (i.e. have all columns? Globalized columns?)
Page: svn-del.exe
svn-del.exe removes all .svn directories from a copy of a development – the PhoneBook project, for example. This tool can be used for turning a copy of the PhoneBook project into a .zip file for distribution deploying the PhoneBook on a web server for rem

T

Page: Tech Notes
Backgrounders Persisting objects in tables A general primer on O/R-mapping, independent from re-motion. ASP.NET for people who did not bother until now In order to understand re-call, you should know about the difference between Server.Transfer and Respon
Page: Testing the PhoneBook web application
Steps in the panel are for an embellished PhoneBook app only. run a Superficial PhoneBook test Testing Location NEW: enter a street and a zip code into a blank Location form, press Cancel NEW: enter a street and a zip code into a blank Loation form, press
Page: The DBTable attribute (Location class)
The [ DBTable ] attribute controls where class instances are persisted. The domain class attributed with [ DBTable ] and all their children get their own class. This mechanism is explained briefly here: FIXME, a more comprehensive discussion is the sectio
Page: The re-motion mixins Web Tutorial
re-motion mixins basics re-motion mixins front matter -- READ ME re-motion mixins basics – the 'Uses' attribute and the 'ObjectFactory' re-motion mixins basics – the 'Extends' attribute re-motion mixins basics -- instantiation with parameters re-motion mi
Page: treecomp.py -- rationale and limitations
Rationale We have not used an off-the-shelf tool for the following reasons: we have not found a command line tool with source code python's filecmp.dircmp API (http://www.python.org/doc/2.5/lib/dircmp-objects.html http://www.python.org/doc/2.5/lib/dircmp-
Page: treecomp.py documentation
This part of the wiki assumes that you are familiar with the PhoneBook innovation cycle (FIXME). treecomp.py overview using treecomp.py How treecomp.py works treecomp.py -- rationale and limitations
Page: treecomp.py overview
treecomp.py compares two directory trees and identifies differences between them. It is designed with a single purpose in mind, and this is comparing the PhoneBook template tree to the re-motion template tree. Modifying/debugging templates is usually done
Page: Trouble Shooting
Problem Class ..., FormPage ...: contains property "..." which does not exist in class in any formmode Soluton: Check FormsConfigurationFiles When using Mixins, check if all properties are declared in the interface
Page: trouble-shooting dbschema.exe
The original content of this wiki page has been copied from the PhoneBook tutorial. It might or might not be in sync with it at the time you are reading this. Please note that even if dbschema.exe does not report problems, you might run into problems when
Page: trouble-shooting uigen.exe
Failure to remove a stale PhoneBook.Web project No DLLs (or no files at all) in asmdir Using a uigen.exe in a directory different from the domain assembly directory Domain objects not derived from BindableDomainObject No PhoneBook.Domain.DLL in the asmdir
Page: Typos
The original content of this wiki page has been copied from the PhoneBook tutorial. It might or might not be in sync with it at the time you are reading this. If you get the specification for the property at the other side of a relation wrong, the compile

U

Page: uigen.exe
uigen.exe is a command line tool for generating a re-motion web application from domain object classes, as found in one or more domain object assemblys. As the PhoneBook tutorial explains, a domain object class essentially is a set of properties (and attr
Page: uigen.exe configuration file
The uigen.exe config file is the configuration file for uigen.exe. It specifies "placeholders" and their values, which uigen.exe uses in the templates. You can find the sample uigen.exe config file here: sample uigen.exe configuration file. As always, it
Page: uigen.exe project
History Until 2009-07 the uigen.exe project was part of the re-motion project at https://svn.re-motion.org/svn/Remotion/trunk https://svn.re-motion.org/svn/Remotion/trunk. In 2009-07 the uigen.exe project has been moved to https://svn.re-motion.org/svn/Re
Page: uigen.exe templates
DELETE ME
Page: under the hood of re-motion mixins -- front matter, hand-waving
The following wiki pages explain how classes and composites are constructed for mixing. The author is not particularly fond of UML, but has decided to use it anyway. Reasons: simple things are simple in UML we need only simple illustrations here for these
Page: under the hood of re-motion mixins -- mixins based on 'Mixin-TThis'
The wiki page re-motion mixins basics -- the generic 'Mixin' type uses the parrot/phone example for illustrating the use of the generic Mixin<TThis> type. Here is the example as UML. It is not much different from the previous example (Pretend is actually
Page: under the hood of re-motion mixins -- mixins based on 'Mixin-TThis-TBase'
If we want to access base members from the target class in the mixin class, we must use the generic Mixin<TThis, TBase> type, i.e. we must provide a parameter for TBase. As the wiki page re-motion mixins basics -- the generic 'Mixin' type explains, "for t
Page: under the hood of re-motion mixins -- the simplest case -- 'DessertTopping' uses 'FloorWaxMixin'
Here is an UML diagram of "DessertTopping uses FloorWaxMixin; FloorWaxMixin implements IFloorWaxMixin". This is what re-motion mixins finds in the mixin configuration: simple-dessertwax.png [ The sample is introduced in FIXME. ] re-motion mixins derives a
Page: unicoder.py
Unicoders purpose Visual Studio 2008 can transparently handle unicode, i.e. developers can edit files with it without being aware how those files are encoded. Since programming is a collaborative effort and tastes (or requirements) vary, we have very litt
Page: unicoding
I stored the same text file in various encodings with notepad (a fine tool for unicode diagnostics). I read in those files in python, as plain 8-bit streams. No surprises there: python-unicode.png Here is a breakdown of the BOMs (http://en.wikipedia.org/w
Page: Unidirectional relation
For unidirectional relations no annotations at all are necessary for re motion to automate the mapping to the database in a meaningful way. re-motion simply takes a .NET declaration in the Person class like Location Location { get; set; } to mean "there i
Page: unit of work
A unit of work is roughly understood here as: a user action involving one or more domain objects these domain objects are referencing each other the involved domain objects are committed to the database together (if the user desires it and clicks Save ins
Page: Upgrading the templates to a new re-motion version
Duplicate directories (trees) and master directories Incremental changes There are many reasons for modifying templates, but the most typical case is an upgrade to a new re-motion version (see the previous step, Upgrading to a new re-motion version). Sinc
Page: Upgrading to a new re-motion version
Upgrading to a new version of re-motion involves these steps: replace the old set of assemblies (let's say 1.13.6.2) with the new set of assemblies (let's say 1.13.13.2) overwrite all the old references for the new ones in each of the three subprojects Ph
Page: Using a uigen.exe in a directory different from the domain assembly directory
Error message: Execution aborted: Could not load file or assembly 'PhoneBook.Domain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. This happens if you forget the advice from t
Page: using dbschema.exe
After declaring and compiling your domain (i.e. your domain object classes), you use dbschema.exe to derive an sql-script from it. This sql-script in turn sets up your database for persisting instances of the domain object classes. The canonical way to de
Page: Using embel.cmd and embel.py
embel.cmd and embel.py require the same two command line parameters: the source (embellished) web project's directory path the target (new template) web project's directory path Example of how to use embel.cmd: embel.cmd c:\PhoneBook-Embellished\PhoneBook
Page: Using the re-motion wiki
About this wiki This wiki is an Atlassian Confluence http://www.atlassian.com/software/confluence/ wiki, with a free license Atlassian gives to open source projects. Be nice Decent behavior, please. Even when using a pseudonym, don't write anything you wo
Page: Using this wiki as an introduction to re-motion
For a gentle introduction to re-motion, read the PhoneBook tutorial and do the exercises. For a quick start, go over the following pages, in the order in which they are listed. (We assume that you have read these introductory pages on the community websit
Page: using treecomp.py
treecomp.py is located in the Development\Remotion-Contrib\PhoneBook\trunk\tools directory. It accepts two parameters on the command line: the new directory. This will be the path to the PhoneBook template tree the old directory. This will be the path to
Page: using uigen.exe
As the PhoneBook tutorial explains, uigen.exe is a fairly robust tool as soon as you got the configuration and the setup right. uigen.exe is picky in that It insists on absolute paths in the uigen.exe configuration file. A consequence is that if uigen.exe
Page: using wxegen.exe on the command line
wxegen.exe is not supposed to be used by the programmer directly. wxegen.exe is a build step in the build process in your re-motion web project. wxegen.exe is run automatically whenever you rebuild your project (typically while embellishing the web applic

V

W

Page: web client application
DELETE ME
Page: Web execution engine
DELETE ME
Page: What uigen.exe does
uigen.exe generates a complete Visual Studio ASP.NET project from a re-motion domain, i.e. one or more assemblies containing the domain object classes constituting the domain. uigen.exe gets a path to a directory, inspects all assemblies in it and checks
Page: Why use sub-transactions?
You might wonder why the scheme of root- and sub-transactions is so complicated in first place. Why not have a single transaction for a session? Why can't we store data in the database immediately whenever a user clicks Save? The example of Miss Quackfast
Page: Working with XML queries and the query manager
This page probably does not do much for you The query manager has been with re-motion from its very beginning, and it works very well. However, the recent introduction of re-linq technology into re-motion (see re-linq made the query manager obsolete for a
Page: writing re-call headers
Elements and attributes in the re-call header As explained in the wxegen.exe overview, a re-call header specifies page-local variables for a re-call page/re-call function. A typical declaration looks like this (printed without the leading comment //): <Wx
Page: Wrong baseDirectory
A typical mistake here is to give dbschema.exe a wrong baseDirectory, that is, one with no DLLs or none with DomainObject subclasses. This will give you the error message: Execution aborted: Argument classes is empty. If you get that error message, make s
Page: WXE
DELETE ME
Page: wxe function
DELETE ME
Page: wxe header
DELETE ME
Page: wxe page
DELETE ME
Page: wxegen.exe
wxegen.exe is to re-call what dbschema.exe is for re-store and uigen.exe is for re-bind – a tool for automating programming chores. In constrast to the latter two generators, wxegen.exe is not called by the programmer, at least not usually. wxegen.exe doe

X

Y

Z

!@#$