Hi Jacopo,

Deprecating the PartyRole would mean definitely going against the data
model book in such a very fundamental domain (Party) would it not?

Every entity in that book serves a purpose which you explained yourself.
Furthermore, reporting on all roles past and present in all kinds of
contexts is very easy through PartyRole instead of scavenging data from a
hundred different places.

I also think PartyRole is used for security to allow attaching the party to
different contexts only if they are allowed to play that role.

My 2 cents

Taher Alkhateebn
On Oct 12, 2014 8:10 AM, "Jacopo Cappellato" <
jacopo.cappell...@hotwaxmedia.com> wrote:

> Hi Mansour,
>
> I will start with one example.
> Let's say that in OFBiz we have two companies (i.e. two PartyGroup), "ABC
> inc" and "CDE inc", that run two different stores selling goods to their
> customers; the only way to represent that a given person "John Black" is
> customer of "ABC inc", but not of "CDE inc", is using a party relationship:
> "John Black is a customer of the seller ABC inc". Now suppose that John
> Black is also an employee of "CDE inc"; we can represent it with another
> party relationship: "John Black is an employee of the employer CDE inc".
> The "party role" entity should be used to specify what are the roles that
> a party can play. In our example, for John Black we would have two roles:
> "customer" and "employee".
>
> Summary:
> * "party role": the roles that a given party *can* play
> * "party relationship": the actual roles played by a given party (with
> respect to other parties).
>
> Unfortunately in OFBiz, most of the screens and services are not
> implemented considering "party relationships" but only "party roles". This
> simplification is a weakness of the current implementation.
> For example, a screen that lists all the "customers" doesn't make much
> sense if you don't specify the company that is selling goods. Currently, if
> in OFBiz a party has the role of "customer" then the system considers the
> party is a customer in all the relationships.
>
> In my opinion we should refactor this by:
> a) deprecating the party role entity
> b) modify the existing code that is using party roles to use party
> relationships
> c) use an _NA_ party id to specify party relationship that apply to all
> parties
> d) in order to do #b we will need to specify, in most of the applications,
> the company in which the logged in user is connected: in this way if a user
> is associated to "ABC inc", in the "find customer" screen she will only see
> parties that are customers of "ABC inc"
> e) (optional) normalize the from/to positions in PartyRelationship by
> sorting them by role type id (this would simplify lookups etc)
>
> I hope it is useful information and I didn't add more confusion.
>
> Jacopo
>
> On Oct 11, 2014, at 11:57 PM, Mansour Al Akeel <mansour.alak...@gmail.com>
> wrote:
>
> > I consulted the Data Model Resource Book to refresh my memory about
> > the modelling for the roles and relationship for Party.
> >
> > In ofbiz, we have PartyRelationship between two parties. So each party
> > ID is used as a key, combined with the relationship type. The book
> > mentions on page 42, that when customizing the model, it's recommended
> > to draw the relationship between party roles.
> >
> > The part that I find confusing is, if we have the two party IDs in the
> > party_role entity, why don't we create the relationship between two
> > party roles, instead of duplicating the information in the
> > party_relationship entity ? For example, currently we have,
> >
> > party_relationship:
> > - from party id
> > - to party id
> > - from role type id
> > - to role type id
> > - start date
> > - end date .....
> >
> > Can't we just use,
> > party_relationship:
> > -from role
> > - to role
> > - party relationship type
> >
> > assuming John has the role of developer. IBM has the role of employer.
> > We can use the directly in the party relationship. Using the current
> > model, we need to add the role_type to the party_relationship. If John
> > is no longer a developer, then we need to update in two entities, the
> > party_relationship, and the roles.
> >
> > I am not sure I understand the description in the book, and the design
> in ofbiz.
> >
> > Can someone kindly clarify the picture for me ??
> >
> > Thank you.
>
>

Reply via email to