Tips&Tricks HomeToolbox HomeComplex Controls HomeNeat Solutions HomeFoxtools HomeFoxQuill HomeVFPX Projects HomeMiscellaneous HomeWindows API HomeNews HomeBasics Home 

FoxQuill 2011FoxQuill another VFP Framework

FoxQuill is my homegrown framework I am working with amongst others. Within the next months (from March, 2014 on) I will expose some very interesting insights here. Starting with some challenging FoxQuill Base Classes I will show you the whys and wherefores of my design. Be warned, this will not be a VFP beginner's lecture but I'm afraid, there won't be much of them still out there today…
 


Table of Content  Table of Content
 
FoxQuill an Overview

FoxQuill an Overview

This is a short introduction of what we are going to talk about in this section of my blog. This is no "all about another VFP framework" but what is so special about the FoxQuill framework and why I decided to do it just that way.
 
 
Core Components

Core Components

I will overview the Core Components of FoxQuill which will be discussed in detail in my upcoming posts. You will find a lot of them being helpful examples for the statements I posted a long time ago (22 OOP Design Rules).
 
 
The Factory

The Factory

FoxQuill is a data-driven framework, so is the The Factory component! The Factory belongs to FoxQuill's Core Components ensuring highest flexibility in object creation even at runtime!
 
 
The GPStore

The GPStore

Data-driving an application, or an application framework, needs a lot of tables! The General Purpose Store belongs to FoxQuill's Core Components simplifying the handling of meta data used by all other Core Components like the Factory, the Workflow, and the Matrix, just to name a few of them. The GPStore radically simplifies data handling of application related (meta-)data!
 
The Construct

The Construct

Object-Pooling is nothing new. FoxQuill's Object-Manager called The Construct raises application-internal object hosting and maintenance to the next level. With the aid of The Construct developers are able to change any application aspect dynamically (even at runtime!) without re-coding!
 
The Matrix

The Matrix

FoxQuill supports dynamic, table-driven object creation and composition at runtime. Thus, FoxQuill has to support dynamic messaging, too! FoxQuill's Unified Object Messaging system is called The Matrix which enables the developer to control any aspect of object collaboration even at runtime!
 
The Workflow

The Workflow

FoxQuill supports dynamic, table-driven behavior not only at the class-instance level but also at the application level. "Hot gluing" all framework components together at runtime and controlling them is the business of The Workflow engine. Naturally, the Workflow also is completely table-driven and supports the concept of task-oriented application design.
 
The Kernel

The Kernel

Bringing all Core Components together is realized by The Kernel. The Kernel component also is called the FoxQuill Core. It can be compared to an electric control cabinet in the real world, or the program kernel of UNIX operating systems. The re-using developer will not change any Kernel aspect programmatically, but through simple table-based configuration, if at all. Compiling the Kernel into an VFP App/Exe, then starting it, will lead to some kind of application hosting service running. This App-Host Instance can then be commanded to load and execute any kind of further APPs/EXEs that were build upon FoxQuill's Base Classes.
 
Libraries & Tools

Libraries & Tools

All of the above things are build upon a rock-solid bunch of framework classes called The FoxQuill Libs. Nobody should feel forced to use them but may stay with the own set of base classes. As I said before, this blog is no advertisement that wants to lead you to buy my system. Quite the contrary, it would be more satisfying if it would lead you to re-think and re-work your own classes. The FoxQuill Libs went a long way through everlasting refactoring. At the moment they will be refactored a last time to become My Final VFP Version. The classes in the final FoxQuill Libs will be ready to be migrated to other languages pretty easily (using special tools for that job).
 
FoxQuill will become FoxQuill.NET

FoxQuill will become FoxQuill.NET

Some thoughts and insights dealing with my VFP framework (OffSiteLink www.foxquill.de still not available today) and its future transition into the .NET world. At the moment I’m enhancing and trying to migrate it to the .NET platform. At the same time I am learning C# – what a mess :-) Sometimes I think I am to old to start all over again learning another programming language. On the other hand, I do believe that this challenge will also be a damn good chance to create very interesting things for todays 'melting' VFP community…

7 comments:

  1. I'm so happy you're going to continue this blog item! I've been waiting and hoping you would continue. Keep up the good work!

    ReplyDelete
  2. @TRH: Thank you for your supporting comment! And, YES, I do continue this blog item! At the moment I'm busily refactoring parts of the FoxQuill Kernel. I' also adding new functionality to the GPStore - I'm trying to make it a fully functional Object-Database(!). I hope this will be the final VFP version, then :-)

    ReplyDelete
    Replies
    1. Excellent! Your blog is one of the ones I just leave open in a tab for weeks, it really is the best vfp resource for the intimate details of FoxPro.

      I'm very much looking forward to your customizations to the _foxcode table that you alluded to in an earlier post. I can find no good resources on truly customizing it the way I want...

      Can't wait!

      Delete
  3. @TRH: Nice to hear that from you! Alas, I'm afraid I didn't remember that I've ever talked about "_foxcode.dbf" in any of my posts! Or, did you mean "_foxuser.dbf"? I have some interesting things to tell about some of the Debugger-related entries made in _foxuser.dbf and other undocumented record-types but I haven't found any noticeable (intimate:-) things about the (mis-)use of _foxcode.dbf because I didn't touched it for a while. I'm running my own Intellisense support based on the My-Class included in the Sedna-files...

    Let me know the post you are referring to!

    ReplyDelete
  4. @THR: Sorry, I meant "FoxUser.dbf" and "FoxCode.dbf" without the leading underscore.

    ReplyDelete
  5. Hi Burkhard! I wonder if that's what it was. i tried searching your blog but couldn't find what I rememeber reading. It must be the customizations of the Sedna extensions that your referred to here. I just remember you referring to using object references like '21.4.6.8.12' and making them readable through some intellisense magic.

    Oh, I found it. This is the line:

    "Okay, you’re right, that looks pretty cryptic! But, using some custom intellisense functions make the whole thing as clear as any “verbose” name approach."

    from your post on hierarchical ordering here: http://myvfpblog.blogspot.com/2011/05/hierarchical-table-order-part-i.html

    This was all I was trying to refer to. :-D

    Cheers again Burkhard!! I don't want to sound like such a fanboy, but this blog really has the best stuff!! I can't wait for more!

    ReplyDelete
  6. @THR: Yes, you're right. Now I remember what you were talking about. Well, implementing custom Intellisense behavior is no rocket-science, although, it's pretty weird. I recommend studying THOR sources; one can find a lot of intellisense stuff under ThorTools -> Code ->IntellisensX...

    ReplyDelete