[FRAMEWORK] Notes from Skype Meeting - 23rd Oct 2015

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

[FRAMEWORK] Notes from Skype Meeting - 23rd Oct 2015

Sharan-F
Hi Everyone

Yesterday we held a Skype call (Adrian, Ron, Taher and Myself)  to talk about the proposed Framework re-write. Please see below the main points from the meeting:

Meeting Discussions
We started by talking about our expectations. We then briefly discussed what a framework is as there are different interpretations. Our agreed definition was something around a basic central environment on top of which services, applications or even scripting could run.  

We also talked about the way that the current OFBiz framework has evolved and some of the resulting problems.  We have the opportunity to create something completely new and robust that resolves the issues we have encountered especially around dependencies.

We agreed that having a plan or roadmap would give us structure, visibility and would also keep us focussed on our end goal. We also decided that it would be good to start small and generic which would leave us open to able to  expand into other areas in the future.

What do we want to Achieve?
We had previously reviewed Adrian’s documentation  Initial Framework Vision Document and Initial Framework Design Document , and agreed during the meeting that this would be a good starting base for us. In this proposed subproject we would like to implement a framework that would initially comprise as follows:

   • Configuration.
   • Globalization (locale, time zone, currency).
   • Logging.
   • Security (authentication/authorization).
   • Actor Management (profiles, roles - required for security; Actors - people, external services) Think of UML Actor. Required to remove dependency on Party
   • Persistence (file system or database).
   • Lang package to provide classes that are fundamental to the framework
   • Services.
   • Runtime management

Initial Approach
At this stage we don’t currently have enough information to build our implementation roadmap so have agreed on an approach that will help provide that information.  The main steps are as follows:

   Expand and complete Framework Design Documentation
 


   a. We need to describe and define what is meant by each of the 9 areas mentioned above. (what is it?, what does it do?).
   b. To do this we will write the API specification for each on the wiki
       (NOTE: Even though the API spec will be include Javadoc, we want to use the wiki rather than a repository at this stage as we want to validate and agree them before any coding starts :-)
   c. We will open the API specifications for review and comments from the community, and based on feedback, do any updates
   d. Once the API specifications are agreed, we will have more information about the work involved and should be able to put together an initial version of our implementation roadmap

Initial Deliverables
   • An API Specification for each of the 9 areas including Javadoc
   • An Implementation Roadmap

Initial Milestones
   • Completion of each API specification (includes feedback and community agreement) giving a total of 9

Outstanding  Actions
   • Find out what is involved in setting up a subproject repository and mailing list for the subproject within Apache  (Sharan)
   • Continue to complete API Spec documentation including Javadoc (Ron and Taher, with Adrian for review)
   • Review organisation and structure of other frameworks for ideas to incorporate (All)

I hope that I've captured the main points so Taher, Ron and Adrian, please feel free to add or update anything that I've missed or misinterpreted.

I also hope this update has been useful in giving everyone an idea of what we are initially planning to do. Please remember that if you are interested in helping us to complete the API specification documents or have any ideas that you think it would be good to incorporate then please include your comments in the various documents. As usual all contributions are welcome!

Thanks
Sharan




Reply | Threaded
Open this post in threaded view
|

Re: [FRAMEWORK] Notes from Skype Meeting - 23rd Oct 2015

Shi Jinghai-3
Great!

-----邮件原件-----
发件人: Sharan-F [mailto:[hidden email]]
发送时间: 2015年10月24日 23:00
收件人: [hidden email]
主题: [FRAMEWORK] Notes from Skype Meeting - 23rd Oct 2015

Hi Everyone

Yesterday we held a Skype call (Adrian, Ron, Taher and Myself)  to talk
about the proposed Framework re-write. Please see below the main points from
the meeting:

*Meeting Discussions*
We started by talking about our expectations. We then briefly discussed what
a framework is as there are different interpretations. Our agreed definition
was something around a basic central environment on top of which services,
applications or even scripting could run.  

We also talked about the way that the current OFBiz framework has evolved
and some of the resulting problems.  We have the opportunity to create
something completely new and robust that resolves the issues we have
encountered especially around dependencies.

We agreed that having a plan or roadmap would give us structure, visibility
and would also keep us focussed on our end goal. We also decided that it
would be good to start small and generic which would leave us open to able
to  expand into other areas in the future.

*What do we want to Achieve?*
We had previously reviewed Adrian’s documentation   Initial Framework Vision
Document
<https://cwiki.apache.org/confluence/display/OFBIZ/Another+Framework+Vision>  
and  Initial Framework Design Document
<https://cwiki.apache.org/confluence/display/OFBIZ/A+New+Application+Framework+Design>  
, and agreed during the meeting that this would be a good starting base for
us. In this proposed subproject we would like to implement a framework that
would initially comprise as follows:

   • Configuration.
   • Globalization (locale, time zone, currency).
   • Logging.
   • Security (authentication/authorization).
   • Actor Management (profiles, roles - required for security; Actors -
people, external services) Think of UML Actor. Required to remove dependency
on Party
   • Persistence (file system or database).
   • Lang package to provide classes that are fundamental to the framework
   • Services.
   • Runtime management

*Initial Approach *
At this stage we don’t currently have enough information to build our
implementation roadmap so have agreed on an approach that will help provide
that information.  The main steps are as follows:
/*
   Expand and complete Framework Design Documentation* /

   a. We need to describe and define what is meant by each of the 9 areas
mentioned above. (what is it?, what does it do?).
   b. To do this we will write the API specification for each on the wiki
       (*NOTE*: Even though the API spec will be include Javadoc, we want to
use the wiki rather than a repository at this stage as we want to validate
and agree them before any coding starts :-)
   c. We will open the API specifications for review and comments from the
community, and based on feedback, do any updates
   d. Once the API specifications are agreed, we will have more information
about the work involved and should be able to put together an initial
version of our implementation roadmap

*Initial Deliverables *
   • An API Specification for each of the 9 areas including Javadoc
   • An Implementation Roadmap

*Initial Milestones*
   • Completion of each API specification (includes feedback and community
agreement) giving a total of 9

*Outstanding  Actions*
   • Find out what is involved in setting up a subproject repository and
mailing list for the subproject within Apache  (Sharan)
   • Continue to complete API Spec documentation including Javadoc (Ron and
Taher, with Adrian for review)
   • Review organisation and structure of other frameworks for ideas to
incorporate (All)

I hope that I've captured the main points so Taher, Ron and Adrian, please
feel free to add or update anything that I've missed or misinterpreted.

I also hope this update has been useful in giving everyone an idea of what
we are initially planning to do. Please remember that if you are interested
in helping us to complete the API specification documents or have any ideas
that you think it would be good to incorporate then please include your
comments in the various documents. As usual all contributions are welcome!

Thanks
Sharan








--
View this message in context: http://ofbiz.135035.n4.nabble.com/FRAMEWORK-Notes-from-Skype-Meeting-23rd-Oct-2015-tp4673855.html
Sent from the OFBiz - Dev mailing list archive at Nabble.com.

Reply | Threaded
Open this post in threaded view
|

Re: [FRAMEWORK] Notes from Skype Meeting - 23rd Oct 2015

Jacques Le Roux
Administrator
Thanks Sharan,

It's now totally clear to me :)

Thanks also to the other participants

Jacques

Le 25/10/2015 02:19, Shi Jinghai a écrit :

> Great!
>
> -----邮件原件-----
> 发件人: Sharan-F [mailto:[hidden email]]
> 发送时间: 2015年10月24日 23:00
> 收件人: [hidden email]
> 主题: [FRAMEWORK] Notes from Skype Meeting - 23rd Oct 2015
>
> Hi Everyone
>
> Yesterday we held a Skype call (Adrian, Ron, Taher and Myself)  to talk
> about the proposed Framework re-write. Please see below the main points from
> the meeting:
>
> *Meeting Discussions*
> We started by talking about our expectations. We then briefly discussed what
> a framework is as there are different interpretations. Our agreed definition
> was something around a basic central environment on top of which services,
> applications or even scripting could run.
>
> We also talked about the way that the current OFBiz framework has evolved
> and some of the resulting problems.  We have the opportunity to create
> something completely new and robust that resolves the issues we have
> encountered especially around dependencies.
>
> We agreed that having a plan or roadmap would give us structure, visibility
> and would also keep us focussed on our end goal. We also decided that it
> would be good to start small and generic which would leave us open to able
> to  expand into other areas in the future.
>
> *What do we want to Achieve?*
> We had previously reviewed Adrian’s documentation   Initial Framework Vision
> Document
> <https://cwiki.apache.org/confluence/display/OFBIZ/Another+Framework+Vision>
> and  Initial Framework Design Document
> <https://cwiki.apache.org/confluence/display/OFBIZ/A+New+Application+Framework+Design>
> , and agreed during the meeting that this would be a good starting base for
> us. In this proposed subproject we would like to implement a framework that
> would initially comprise as follows:
>
>     • Configuration.
>     • Globalization (locale, time zone, currency).
>     • Logging.
>     • Security (authentication/authorization).
>     • Actor Management (profiles, roles - required for security; Actors -
> people, external services) Think of UML Actor. Required to remove dependency
> on Party
>     • Persistence (file system or database).
>     • Lang package to provide classes that are fundamental to the framework
>     • Services.
>     • Runtime management
>
> *Initial Approach *
> At this stage we don’t currently have enough information to build our
> implementation roadmap so have agreed on an approach that will help provide
> that information.  The main steps are as follows:
> /*
>     Expand and complete Framework Design Documentation* /
>
>     a. We need to describe and define what is meant by each of the 9 areas
> mentioned above. (what is it?, what does it do?).
>     b. To do this we will write the API specification for each on the wiki
>         (*NOTE*: Even though the API spec will be include Javadoc, we want to
> use the wiki rather than a repository at this stage as we want to validate
> and agree them before any coding starts :-)
>     c. We will open the API specifications for review and comments from the
> community, and based on feedback, do any updates
>     d. Once the API specifications are agreed, we will have more information
> about the work involved and should be able to put together an initial
> version of our implementation roadmap
>
> *Initial Deliverables *
>     • An API Specification for each of the 9 areas including Javadoc
>     • An Implementation Roadmap
>
> *Initial Milestones*
>     • Completion of each API specification (includes feedback and community
> agreement) giving a total of 9
>
> *Outstanding  Actions*
>     • Find out what is involved in setting up a subproject repository and
> mailing list for the subproject within Apache  (Sharan)
>     • Continue to complete API Spec documentation including Javadoc (Ron and
> Taher, with Adrian for review)
>     • Review organisation and structure of other frameworks for ideas to
> incorporate (All)
>
> I hope that I've captured the main points so Taher, Ron and Adrian, please
> feel free to add or update anything that I've missed or misinterpreted.
>
> I also hope this update has been useful in giving everyone an idea of what
> we are initially planning to do. Please remember that if you are interested
> in helping us to complete the API specification documents or have any ideas
> that you think it would be good to incorporate then please include your
> comments in the various documents. As usual all contributions are welcome!
>
> Thanks
> Sharan
>
>
>
>
>
>
>
>
> --
> View this message in context: http://ofbiz.135035.n4.nabble.com/FRAMEWORK-Notes-from-Skype-Meeting-23rd-Oct-2015-tp4673855.html
> Sent from the OFBiz - Dev mailing list archive at Nabble.com.
>
>
>
Reply | Threaded
Open this post in threaded view
|

Re: [FRAMEWORK] Notes from Skype Meeting - 23rd Oct 2015

Nicolas Malin-2
In reply to this post by Sharan-F
Nice,

I will really happy to help you, I try to follow the train ;) and first
step watch this presentation :)

Nicolas


Le 24/10/2015 16:59, Sharan-F a écrit :

> Hi Everyone
>
> Yesterday we held a Skype call (Adrian, Ron, Taher and Myself)  to talk
> about the proposed Framework re-write. Please see below the main points from
> the meeting:
>
> *Meeting Discussions*
> We started by talking about our expectations. We then briefly discussed what
> a framework is as there are different interpretations. Our agreed definition
> was something around a basic central environment on top of which services,
> applications or even scripting could run.
>
> We also talked about the way that the current OFBiz framework has evolved
> and some of the resulting problems.  We have the opportunity to create
> something completely new and robust that resolves the issues we have
> encountered especially around dependencies.
>
> We agreed that having a plan or roadmap would give us structure, visibility
> and would also keep us focussed on our end goal. We also decided that it
> would be good to start small and generic which would leave us open to able
> to  expand into other areas in the future.
>
> *What do we want to Achieve?*
> We had previously reviewed Adrian’s documentation   Initial Framework Vision
> Document
> <https://cwiki.apache.org/confluence/display/OFBIZ/Another+Framework+Vision>
> and  Initial Framework Design Document
> <https://cwiki.apache.org/confluence/display/OFBIZ/A+New+Application+Framework+Design>
> , and agreed during the meeting that this would be a good starting base for
> us. In this proposed subproject we would like to implement a framework that
> would initially comprise as follows:
>
>     • Configuration.
>     • Globalization (locale, time zone, currency).
>     • Logging.
>     • Security (authentication/authorization).
>     • Actor Management (profiles, roles - required for security; Actors -
> people, external services) Think of UML Actor. Required to remove dependency
> on Party
>     • Persistence (file system or database).
>     • Lang package to provide classes that are fundamental to the framework
>     • Services.
>     • Runtime management
>
> *Initial Approach *
> At this stage we don’t currently have enough information to build our
> implementation roadmap so have agreed on an approach that will help provide
> that information.  The main steps are as follows:
> /*
>     Expand and complete Framework Design Documentation* /
>
>     a. We need to describe and define what is meant by each of the 9 areas
> mentioned above. (what is it?, what does it do?).
>     b. To do this we will write the API specification for each on the wiki
>         (*NOTE*: Even though the API spec will be include Javadoc, we want to
> use the wiki rather than a repository at this stage as we want to validate
> and agree them before any coding starts :-)
>     c. We will open the API specifications for review and comments from the
> community, and based on feedback, do any updates
>     d. Once the API specifications are agreed, we will have more information
> about the work involved and should be able to put together an initial
> version of our implementation roadmap
>
> *Initial Deliverables *
>     • An API Specification for each of the 9 areas including Javadoc
>     • An Implementation Roadmap
>
> *Initial Milestones*
>     • Completion of each API specification (includes feedback and community
> agreement) giving a total of 9
>
> *Outstanding  Actions*
>     • Find out what is involved in setting up a subproject repository and
> mailing list for the subproject within Apache  (Sharan)
>     • Continue to complete API Spec documentation including Javadoc (Ron and
> Taher, with Adrian for review)
>     • Review organisation and structure of other frameworks for ideas to
> incorporate (All)
>
> I hope that I've captured the main points so Taher, Ron and Adrian, please
> feel free to add or update anything that I've missed or misinterpreted.
>
> I also hope this update has been useful in giving everyone an idea of what
> we are initially planning to do. Please remember that if you are interested
> in helping us to complete the API specification documents or have any ideas
> that you think it would be good to incorporate then please include your
> comments in the various documents. As usual all contributions are welcome!
>
> Thanks
> Sharan
>
>
>
>
>
>
>
>
> --
> View this message in context: http://ofbiz.135035.n4.nabble.com/FRAMEWORK-Notes-from-Skype-Meeting-23rd-Oct-2015-tp4673855.html
> Sent from the OFBiz - Dev mailing list archive at Nabble.com.
Reply | Threaded
Open this post in threaded view
|

Re: [FRAMEWORK] Notes from Skype Meeting - 23rd Oct 2015

David E. Jones-2
In reply to this post by Sharan-F

Some thoughts inline...


> On 24 Oct 2015, at 07:59, Sharan-F <[hidden email]> wrote:
>
> *What do we want to Achieve?*
> We had previously reviewed Adrian’s documentation   Initial Framework Vision
> Document
> <https://cwiki.apache.org/confluence/display/OFBIZ/Another+Framework+Vision>  
> and  Initial Framework Design Document
> <https://cwiki.apache.org/confluence/display/OFBIZ/A+New+Application+Framework+Design>  
> , and agreed during the meeting that this would be a good starting base for
> us. In this proposed subproject we would like to implement a framework that
> would initially comprise as follows:
>
>   • Configuration.
>   • Globalization (locale, time zone, currency).
>   • Logging.
>   • Security (authentication/authorization).
>   • Actor Management (profiles, roles - required for security; Actors -
> people, external services) Think of UML Actor. Required to remove dependency
> on Party

Is this just the user concept, or something bigger? In a framework, IMO, there is no need for the “Party” concept, but the user concept for authc/authz is critical.

Some side notes: Apache Shiro may be very useful in OFBiz for authentication and generic authorization, and I’d highly recommend looking at the artifact-aware authorization concept in Moqui for inheritable authz specific to screens, services, entities, etc. It is hugely useful for have this configurable external to the screens, services, etc themselves… much more flexible and simplifies code.

>   • Persistence (file system or database).

This seems a little broad, files are very different in nature from database records (assume relational DB referred to here, like the Entity Engine).

A file/resource interface can be backed by a filesystem, content repository, or even database tables that mimic the structure of a filesystem with DB records. For example see the ResourceFacade and ResourceReference in Moqui:

http://www.moqui.org/javadoc/org/moqui/context/ResourceFacade.html
http://www.moqui.org/javadoc/org/moqui/context/ResourceReference.html

Because a relational database is used so much a special interface to it is well worth the effort (like the Entity Engine). There are interfaces for this in Moqui, but no need to reference them here as the generic concept is the same (even if the API and design is very different).

One thing I would recommend for the new API is a find object instead of all the find methods on the delegator, ie something like:

http://www.moqui.org/javadoc/org/moqui/entity/EntityFind.html

It might be interesting to look at a generic interface for NoSQL databases like document, graph, etc DBs. However, the APIs for these are far less consistent than for relational databases so it is very difficult (impossible?) to design a generally useful interface, ends up being the least common denominator of the various underlying DBs.

>   • Lang package to provide classes that are fundamental to the framework

This is an area where OFBiz has a lot of room for improvement, and by improvement I mean getting rid of dozens of utility classes and using existing open source libraries instead.

>   • Services.
>   • Runtime management

What does Runtime management mean?

There are some key things missing for an adequate framework to replace the one in OFBiz, including:

- User Interface

How will screens and forms be implemented? How are they mapped to web requests? There is a lot of room for improvement in OFBiz here. Having to use a bunch of files and such for a single screen is a pain (controller request and view, screen, form, menu, tree, etc… often have 3-4 files open when working on a single screen). There is also no concept of a screen hierarchy (which is very useful) in OFBiz, just a flat list of supported requests.

- Integration (and non-UI web)

This might start with using something like Apache Camel, but also needs framework support for handling incoming integration web requests that may tie to entity or service operations, etc.

- Caching

Even if this is backed by something like Ehcache it may be nice to have a framework interface for using and managing caches.

- Transaction Management

Transactions are useful for more than just DB operations, but even with just DB stuff it is useful to make it easier to handle things like synchronizations to do stuff on commit or rollback. While sometimes useful in application code it is very useful for other tools (in Moqui this includes data feeds generated based on entity data changes, the write-through per-transaction cache, etc).

- Messages and Notifications

It is helpful to have a central place to handle messages (error and otherwise) that get passed up through the various levels of the framework, and to determine if something deeper down generated an error without using exceptions (which don’t fit the service model for logic very well, especially not remote services). Notifications are handy for pushing data to users or other applications, eventually through something like web sockets or other interfaces.

Another note is the original list is more conceptual than something that should be used to organize an API… for various reasons structuring an API this way would result in some weird structures.

I’ll finish with the most important point, IMO, for any framework design: a convenient single interface for the entire framework. This makes lifecycle management and API use so much easier, plus provides a single variable space (context) for all tools that is consistently available. This interface in Moqui is the ExecutionContext (always available in screens, services, scripts, etc as simple “ec”):

http://www.moqui.org/javadoc/org/moqui/context/ExecutionContext.html

To go along with that for management a primary factory is useful, for Moqui this is the ExecutionContextFactory:

http://www.moqui.org/javadoc/org/moqui/context/ExecutionContextFactory.html

If you want static initialization you can use the Java ServiceLoader, such as in:

https://github.com/moqui/moqui/blob/master/framework/src/api/java/org/moqui/Moqui.java

And a META-INF/services file like:

https://github.com/moqui/moqui/blob/master/framework/src/main/resources/META-INF/services/org.moqui.context.ExecutionContextFactory

-David


Reply | Threaded
Open this post in threaded view
|

Re: [FRAMEWORK] Notes from Skype Meeting - 23rd Oct 2015

Ron Wheeler
My thinking about Actor is below:
Ron

On 29/10/2015 7:31 PM, David E. Jones wrote:

> Some thoughts inline...
>
>
>> On 24 Oct 2015, at 07:59, Sharan-F <[hidden email]> wrote:
>>
>> *What do we want to Achieve?*
>> We had previously reviewed Adrian’s documentation   Initial Framework Vision
>> Document
>> <https://cwiki.apache.org/confluence/display/OFBIZ/Another+Framework+Vision>
>> and  Initial Framework Design Document
>> <https://cwiki.apache.org/confluence/display/OFBIZ/A+New+Application+Framework+Design>
>> , and agreed during the meeting that this would be a good starting base for
>> us. In this proposed subproject we would like to implement a framework that
>> would initially comprise as follows:
>>
>>    • Configuration.
>>    • Globalization (locale, time zone, currency).
>>    • Logging.
>>    • Security (authentication/authorization).
>>    • Actor Management (profiles, roles - required for security; Actors -
>> people, external services) Think of UML Actor. Required to remove dependency
>> on Party
> Is this just the user concept, or something bigger? In a framework, IMO, there is no need for the “Party” concept, but the user concept for authc/authz is critical.

I am thinking that every application requires Actors.
Party is one kind of actor.
A user is an Actor.
A gayment gateway, an external SaaS application and an e-mail server are
also actors.
Actors have profiles and roles.
Profiles include all kinds of object from photos to birthdays to port
number to URLs.

If the framework offered Actors that supported profiles, this would
eliminate a lot of coding.

I am not just thinking of the framework as the base of OFBIZ ERP but
also as a general framework.

Think of the UML Actor. Actors appear in every Use Case.


>
> Some side notes: Apache Shiro may be very useful in OFBiz for authentication and generic authorization, and I’d highly recommend looking at the artifact-aware authorization concept in Moqui for inheritable authz specific to screens, services, entities, etc. It is hugely useful for have this configurable external to the screens, services, etc themselves… much more flexible and simplifies code.
>
>>    • Persistence (file system or database).
> This seems a little broad, files are very different in nature from database records (assume relational DB referred to here, like the Entity Engine).
>
> A file/resource interface can be backed by a filesystem, content repository, or even database tables that mimic the structure of a filesystem with DB records. For example see the ResourceFacade and ResourceReference in Moqui:
>
> http://www.moqui.org/javadoc/org/moqui/context/ResourceFacade.html
> http://www.moqui.org/javadoc/org/moqui/context/ResourceReference.html
>
> Because a relational database is used so much a special interface to it is well worth the effort (like the Entity Engine). There are interfaces for this in Moqui, but no need to reference them here as the generic concept is the same (even if the API and design is very different).
>
> One thing I would recommend for the new API is a find object instead of all the find methods on the delegator, ie something like:
>
> http://www.moqui.org/javadoc/org/moqui/entity/EntityFind.html
>
> It might be interesting to look at a generic interface for NoSQL databases like document, graph, etc DBs. However, the APIs for these are far less consistent than for relational databases so it is very difficult (impossible?) to design a generally useful interface, ends up being the least common denominator of the various underlying DBs.
>
>>    • Lang package to provide classes that are fundamental to the framework
> This is an area where OFBiz has a lot of room for improvement, and by improvement I mean getting rid of dozens of utility classes and using existing open source libraries instead.
>
>>    • Services.
>>    • Runtime management
> What does Runtime management mean?
>
> There are some key things missing for an adequate framework to replace the one in OFBiz, including:
>
> - User Interface
>
> How will screens and forms be implemented? How are they mapped to web requests? There is a lot of room for improvement in OFBiz here. Having to use a bunch of files and such for a single screen is a pain (controller request and view, screen, form, menu, tree, etc… often have 3-4 files open when working on a single screen). There is also no concept of a screen hierarchy (which is very useful) in OFBiz, just a flat list of supported requests.
>
> - Integration (and non-UI web)
>
> This might start with using something like Apache Camel, but also needs framework support for handling incoming integration web requests that may tie to entity or service operations, etc.
>
> - Caching
>
> Even if this is backed by something like Ehcache it may be nice to have a framework interface for using and managing caches.
>
> - Transaction Management
>
> Transactions are useful for more than just DB operations, but even with just DB stuff it is useful to make it easier to handle things like synchronizations to do stuff on commit or rollback. While sometimes useful in application code it is very useful for other tools (in Moqui this includes data feeds generated based on entity data changes, the write-through per-transaction cache, etc).
>
> - Messages and Notifications
>
> It is helpful to have a central place to handle messages (error and otherwise) that get passed up through the various levels of the framework, and to determine if something deeper down generated an error without using exceptions (which don’t fit the service model for logic very well, especially not remote services). Notifications are handy for pushing data to users or other applications, eventually through something like web sockets or other interfaces.
>
> Another note is the original list is more conceptual than something that should be used to organize an API… for various reasons structuring an API this way would result in some weird structures.
>
> I’ll finish with the most important point, IMO, for any framework design: a convenient single interface for the entire framework. This makes lifecycle management and API use so much easier, plus provides a single variable space (context) for all tools that is consistently available. This interface in Moqui is the ExecutionContext (always available in screens, services, scripts, etc as simple “ec”):
>
> http://www.moqui.org/javadoc/org/moqui/context/ExecutionContext.html
>
> To go along with that for management a primary factory is useful, for Moqui this is the ExecutionContextFactory:
>
> http://www.moqui.org/javadoc/org/moqui/context/ExecutionContextFactory.html
>
> If you want static initialization you can use the Java ServiceLoader, such as in:
>
> https://github.com/moqui/moqui/blob/master/framework/src/api/java/org/moqui/Moqui.java
>
> And a META-INF/services file like:
>
> https://github.com/moqui/moqui/blob/master/framework/src/main/resources/META-INF/services/org.moqui.context.ExecutionContextFactory
>
> -David
>
>
>


--
Ron Wheeler
President
Artifact Software Inc
email: [hidden email]
skype: ronaldmwheeler
phone: 866-970-2435, ext 102

Reply | Threaded
Open this post in threaded view
|

Re: [FRAMEWORK] Notes from Skype Meeting - 23rd Oct 2015

Sharan-F
In reply to this post by Sharan-F
Hi Everyone

Thanks for all the feedback, comments and ideas we’ve had so far.  Based on that I think that we need to tighten up the scope so that we don’t try to do everything at once.

Thank you, Adrian for doing the diagram. I think this is a good way to see the big picture.

https://cwiki.apache.org/confluence/display/OFBIZ/Potential+Framework+Sub+Project

I think it is very important to highlight that the scope of this current subproject is only the ‘foundation’ part of the framework.  If after the foundation has been implemented the community wants to continue then we can plan and implement the other pieces as the next steps.

Watching the video about API design, the key recommendation was that APIs should be simple, generic and agnostic. So what does that mean for us? I think it means we need to step back from ‘OFBiz’ during this particular analysis and design phase because we need to keep it simple. What I mean is that we need to imagine that we want to write these foundation APIs for a system that isn’t OFBiz. (Interesting thought – right?:-) So what could we put in place to make it generic enough to work with or without OFBiz?

So at this foundation level – I think it’s important that we don’t have any pre-conceived ideas about the scripting language, the business logic, the data model or even the applications that will use it because all of these are implemented in the levels above the foundation and not within the foundation itself.

I really think a minimalist approach with the foundation APIs is where we need to start, then once we have then, we can then continue on to build the implementation of our OFBiz specific requirements on top of it.

Thanks
Sharan





Reply | Threaded
Open this post in threaded view
|

Re: [FRAMEWORK] Notes from Skype Meeting - 23rd Oct 2015

Adrian Crum-3
Thanks Sharan! The link you provided doesn't work. I think this is the
page you were referring to:

https://cwiki.apache.org/confluence/display/OFBIZ/Potential+Framework+Project+for+the+Foundation+Sub+Component

Adrian Crum
Sandglass Software
www.sandglass-software.com

On 10/31/2015 2:36 AM, Sharan-F wrote:

> Hi Everyone
>
> Thanks for all the feedback, comments and ideas we’ve had so far.  Based on
> that I think that we need to tighten up the scope so that we don’t try to do
> everything at once.
>
> Thank you, Adrian for doing the diagram. I think this is a good way to see
> the big picture.
>
> https://cwiki.apache.org/confluence/display/OFBIZ/Potential+Framework+Sub+Project
>
> I think it is very important to highlight that the scope of this current
> subproject is *only the ‘foundation’ *part of the framework.  If after the
> foundation has been implemented the community wants to continue then we can
> plan and implement the other pieces as the next steps.
>
> Watching the video about API design, the key recommendation was that APIs
> should be simple, generic and agnostic. So what does that mean for us? I
> think it means we need to step back from ‘OFBiz’ during this particular
> analysis and design phase because we need to keep it simple. What I mean is
> that we need to imagine that we want to write these foundation APIs for a
> system that isn’t OFBiz. (Interesting thought – right?:-) So what could we
> put in place to make it generic enough to work with or without OFBiz?
>
> So at this foundation level – I think it’s important that we don’t have any
> pre-conceived ideas about the scripting language, the business logic, the
> data model or even the applications that will use it because all of these
> are implemented in the levels above the foundation and not within the
> foundation itself.
>
> I really think a minimalist approach with the foundation APIs is where we
> need to start, then once we have then, we can then continue on to build the
> implementation of our OFBiz specific requirements on top of it.
>
> Thanks
> Sharan
>
>
>
>
>
>
>
>
>
> --
> View this message in context: http://ofbiz.135035.n4.nabble.com/FRAMEWORK-Notes-from-Skype-Meeting-23rd-Oct-2015-tp4673855p4674035.html
> Sent from the OFBiz - Dev mailing list archive at Nabble.com.
>