On 2 April 2014 08:09, Dileepa Jayakody <[email protected]> wrote:
> Hi All, > > After doing some background reading on Reputation object modeling [1], (good to hear) > I > have extended my class diagram to describe the reputation analysis model in > my application : http://yuml.me/c97453ec > > There are some discrepancies between this diagram and the description below... > An entity Not sure if having an entity called "entity" is a particularly good idea; could get confusing... > has a reputation The diagram shows the "entity" entity as having many reputations. > which describes it's value. EmailContact, Email > are the 2 entity objects in my application. > The diagram shows EmailContact and Email as having (an association with) an "entity", rather than being (implementing) entity. But I think the latter is probably what you want; Entity is an interface and EmailContact and Email implement them. > Reputation is an interface implemented by ReputationObject class. > The diagram doesn't show this, it shows an association. In yuml.me, think that is shown using RepuationObject -^ Reputation Also, ReputationObject isn't a particular great name. Why have Reputation as an interface at all; as I understand it there's likely only one impl. > Reputation has a particular context/domain in which it isearned (eCommerce, > films, technical forums etc ), Reputation *->1 Context > in this case the context is email > communication. The reputation's value is represented by the ReputationValue > object which is calculated based on a certain criteria (In my case the > criteria are People associated with the email, topic and actions in the > email). Criteria defines the required parameters and the > ComputationAlgorithm to be used to calculate reputation value. > > The reputation value is calculated by the particular ComputationAlgorithm > using the parameters given by the criteria. This is where the > implementation specific stuff comes in for calculation. Mahout > recommendation algorithms, Drools rules are implementations of such > ComputationAlgorithms. > > >From an implementation standpoint, my first pass would be to implement ComputationAlgorithm as an enum. That way it can be polymorphically dispatched to. Overall, I like the way that the domain is getting richer. But I do still worry pragmatically about where these entities are all to be persisted, and how to they are sync'ed. Perhaps you could extend the diagram and use stereotypes to indicate for each entity whether its native persistence is in Isis, or Mahout, or gmail, or somewhere else. Could also indicate if types are entities or value types. HTH Dan > [1] Adrian Paschke, Rehab Alnemr, Christoph Meinel, The Rule Responder > Distributed Reputation Management System for the Semantic Web > >
