Application/Repository structure

Actually, this is what we are commonly doing with many of our application

development groups.

You are also describing your own internal "Framework" that you want to have.

Sounds

like a good plan to me. Now for implementation, at the "higher" level, you

probably

have services that other middle or lower levels what to reference - therefore,

check

into the possibility of creating a reference partition and have the lower

levels that

need the services reference the service. This is explained more deeply in the

Forte System Management Guide. We are successfully doing this.

There is a multitude of information out there regarding Forte Frameworks and

this info may be helpful as you design yours or you may decide you need

or want one that's already out there. But I think you probably already are

aware of this. I'm just stating it in case you may not.

These are just a few quick thoughts. If you need more detailed info, email

me.

Thanks,

Peggy Adrian

Eli Lilly and Company

pla@lilly.com

- Forwarded by Peggy Lynn Adrian/AM/LLY on 02/03/98 09:46

PM

MARK NICHOLS <AID9F21@DPA084R2.STATE.IL.US> on 02/03/98 09:52:14 AM

Please respond to MARK NICHOLS <AID9F21@DPA084R2.STATE.IL.US>

To:kamranamin@yahoo.com

cc:

Subject: Application/Repository structure

Hello All -

I am curious if anyone has developed an approach to housing multiple

applications within a single repository. Our first production Forte projet

resulted in over 20 Forte Projects each with it's own collection of supplier

plans. Obviously we are in danger of having circular reference problems and

when we compile service objects we get client code included from the supplier

plan links.

With the advent of our second project we are feeling that this stucture needs

some major revamping. We have undertaken an initiative to restructure this

application so that it exists in three Forte projects only: one each for

Windows, Objects and Services. The supplier plan links are also hugely

reduced: Windows are supplied by Services or Objects, and Services are

supplied by Objects.

What we are trying to come to grips with is, a structure to allow future

development initiatives to fit into this structure easily. Our current feeling

is that we need to have three layers of these 3 projects within our deveopment

repository. The topmost layer in our repository would house the enterprise

wide objects that are common to all types of applications. The middle layer

would house windows, services, and objects common to an application type. For

example: all workflow applicaitons might inherit from workflowWindows,

workflowObjects, and workflowServices; while a payroll application and a

personnel application would inherit from hrWindows, hrObjects, and hrServices;

sharing those objects that were common to both. The final layer of this

stucture would be the distributable applications (IE PayrollApp, PersonnelApp,

WorkflowApp), which would inherit from the middle layer.

How does this idea compare with what other people have done or ar doing? Are

we headed off into the right direction? Are there any white papers on this

subject specific to Forte?

Thanks

--

/\/\ark /\/ichols

Senior Consultant, MSF&W Inc., Springfield, Illinois

voice: (217) 524-1774 vmail: (217) 698-3535 x 421

<aid9f21@dpa084r2.state.il.us> <mnichols@msfw.com>

Views expressed are mine unless otherwise noted.

--

"We have met the enemy, and they are us!" - Pogo

[3862 byte] By [] at [2007-11-25 5:02:02]
# 1

There are two issues at play here. First, there is the overall supplier

pattern. The simple structure you have described makes a lot of sense, and

follows the reccomendations consistently made throughout Forte materials.

The one extension I would make is to break apart services into "Policy" and

"Persistence" layers, which would become plan groups, like the "Windows"

and "Business Objects". Also, you will probably want to have multiple

projects for each layer, but the overall supplier pattern would look like

this:

-> means "supplies"

Biz -> Windows

Biz -> Policy

Biz -> Persistence

Persistence -> Policy

Policy -> Windows

Persistence -> Windows (This one gets some arguments that it makes an

application 2-tier.)

DB Library -> Persistence

Display Library -> Windows

So what would go in each group? A good example would be the Stock Trade

application from the Intro training class. With the exception that there

is only one services project, the supplier pattern is the same as the one

shown above. If you were to distinguish between Policy and Persistence,

then the TraderManager would be Policy, and the CustomerService would be

Persistence.

As for the multiple applications within a single development repository:

Don't do it. I have seen the results of this approach, and they are not

pretty. Your repository will bloat, your developers will have access to

more code than they need, people will modify things that they should not,

and there will be a single bottleneck for development of all applications.

An integrate by one developer will prevent all other developers from

updating during the (longer) integrate.

Instead, I reccomend an approach akin to supplier plans. Your 3 groups of

classes could be described as:

1. Enterprise Wide Components

2. Domain Components

3. Application Implementation

I recommend 3 groups of repositories for these components. There should be

one repository for components that are system wide, one repository for each

domain, and one repository for each application. The code from one layer

will be included in a lower layer, either through code import or

(preferably) a library. That way, code would be distributed from higher

layers, but not modified in lower layers. One idea behind this is that

components of the first type would change rarely. Once determined, core

business classes, basic windows, and the like may change, but not very

often. The second layer may change more frequently, and the third layer

will likely be quite volatile. For each repository at the top 2 levels,

there should be one senior developer who determines what changes are made,

when they are made, and how the changes are distributed. This gatekeeper

metaphor may sound dogmatic and inflexible, but it prevents headaches.

Also, most of the administration can be automated.

The one revision to this would be use of reference partitions. The reason

for this is that reference partitions require that object ids (maintained

internally by Forte) match between the referencer and the referenced. In

that case, you should use the deployment repository to make sure that

object ids are in sync.

All of this looks at lot better on a white board or in a good free-form

presentation tool.

Let me know if you have any questions.

Regards

CSB

At 02:52 PM 2/3/98 GMT, MARK NICHOLS wrote:

>Hello All -

>

>I am curious if anyone has developed an approach to housing multiple

applications within a single repository. Our first production Forte projet

resulted in over 20 Forte Projects each with it's own collection of

supplier plans. Obviously we are in danger of having circular reference

problems and when we compile service objects we get client code included

from the supplier plan links.

>

>With the advent of our second project we are feeling that this stucture

needs some major revamping. We have undertaken an initiative to restructure

this application so that it exists in three Forte projects only: one each

for Windows, Objects and Services. The supplier plan links are also hugely

reduced: Windows are supplied by Services or Objects, and Services are

supplied by Objects.

>

>What we are trying to come to grips with is, a structure to allow future

development initiatives to fit into this structure easily. Our current

feeling is that we need to have three layers of these 3 projects within our

deveopment repository. The topmost layer in our repository would house the

enterprise wide objects that are common to all types of applications. The

middle layer would house windows, services, and objects common to an

application type. For example: all workflow applicaitons might inherit from

workflowWindows, workflowObjects, and workflowServices; while a payroll

application and a personnel application would inherit from hrWindows,

hrObjects, and hrServices; sharing those objects that were common to both.

The final layer of this stucture would be the distributable applications

(IE PayrollApp, PersonnelApp, WorkflowApp), which would inherit from the

middle layer.

>

>How does this idea compare with what other people have done or ar doing?

Are we headed off into the right direction? Are there any white papers on

this subject specific to Forte?

>

>Thanks

>

>

>--

>/\/\ark /\/ichols

>Senior Consultant, MSF&W Inc., Springfield, Illinois

>voice: (217) 524-1774 vmail: (217) 698-3535 x 421

><aid9f21@dpa084r2.state.il.us> <mnichols@msfw.com>

>

>Views expressed are mine unless otherwise noted.

>--

>"We have met the enemy, and they are us!" - Pogo

>

>

>

>

>

>

--

Curtis Bragdon, Senior Consultant, Forte Software

curtisb@forte.com

Voice Mail: (510) 986-3807

Paging: (888) 687-6723

"I've seen dozens of triggering towns." - Richard Hugo

at 2007-6-29 9:22:23 > top of Java-index,Application & Integration Servers,Integration Servers...