On Oct 12, 2014, at 7:22 AM, Taher Alkhateeb <[email protected]> wrote:

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

Please read my follow up email where I have clarified what I meant with 
"deprecation".

> 
> 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.

This simplicity is in fact a weakness of the current applications that prevents 
you from using (most of) them in a multi divisional setup.

Jacopo

> 
> 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" <
> [email protected]> 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 <[email protected]>
>> 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