Epicor Backend 101

5 Likes

Thanks Nathan and Jose,

Does the resulting dataset keep the data tables separate as opposed to one data table with fields in a single row? Similar to how the BAQResults would be with a BAQ Report?

JOE ROJAS
Epicor Applications Manager
VENTION MEDICAL + DESIGN & DEVELOPMENT
DIRECT: 508.597.1392 x1625 | MOBILE: 774.826.9245

1 Like

Kind of crude, but am I getting close?

1 Like

Right separate Data Tables like RDD’s do

1 Like

This is a VEEERY simplified view… but this is what happens (roughly)

Client Front End -> Implements Adapters -> which in Turn implement Service Contracts -> which are the Contracts to the WCF Services -> Which perform the back end logic…

For Example
User Opens Customer Entry and Types in a CustID which triggers a call to GetCustomerData in the Transaction object instance of the Customer Entry Form

That does some VERY basic checking (or a LOT of checkig depending on the method), sets the status bar to “Retrieving Data” then it calls the Customer.GetByCustID

It , in turn does some basic checking as well, it sees if you have implemented a BeforeAdapter call and if so it executes that code (Customization Layer) and then calls the service contract for the Customer.GetByCustID

The GetByCustID Contract makes a call across the network to the Customer.Service hosted on IIS

This Service responds and runs the call through the Customer which is used amongst other things to trigger BPMs and do a BUNCH of other stuff, the Facade eventually invokes the Customer.GetByCustID method
which actually contains the business logic to get the Customer Data…this method runs several DB commands and stored procedures to get back the Customer Data that you expect and it returns it back… the sausage un-rolls the same way it was built… Data is passed back to the Facade, and then back to the Contract across the wire and then Back to the Adapter and eventually back to the Transaction where a bunch of forms events are triggered to let the UI know they now have data.

and… that was a lot of typing hopefully that makes sense and hopefully I didn’t miss / mis-speak anywhere, forgive me if I did I am doing 32 other things.

6 Likes

I agree with Jose’s commentary. The new 10.1.600 BAQ for Reports is the way to go. I would assume all new internal reports will be built on this tech. (My personal preference)

2 Likes

Other than the authentication, authorization, data filtering, tracing, serialization tricks, connectivity retrying, exception hydration and rehydration, a few dozen other framework details no one thinks about until it breaks :slight_smile:

2 Likes

Thank you @josecgomez and @Bart_Elia! This definitely gives me a good base understanding to build on. Now let’s see what I can do with it :confused:

I’m off to break my instance of Epicor :smiling_imp: :upside_down: :head_bandage:

1 Like