manifoldcf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alessandro Benedetti <benedetti.ale...@gmail.com>
Subject Re: [Io Activity] Doing an update inside a delete document
Date Mon, 07 Jul 2014 12:50:49 GMT
I don't think that having multiple output connections per pipeline is
satisfying our requirement.
I need to apply some logic and then eventually send to one output connector
a delete or maybe an update.
THe custom logic will generate new RepositoryDocuments on the fly
As I wrote in the  previous mail, any idea to elegantly instantiate proper
activities ?
Thank's again for all the effort to follow my custom developments :)



2014-07-07 12:29 GMT+01:00 Karl Wright <daddywri@gmail.com>:

> Hi Alessandro,
>
> Based on your description, it would seem to me that having multiple output
> connections per pipeline would meet your design goals without any
> additional framework changes.  Since that was added in trunk and will be
> available in 1.7, I am wondering what else you can tell us that might show
> why that is not sufficient?
>
> Karl
>
>
> On Mon, Jul 7, 2014 at 6:43 AM, Alessandro Benedetti <
> benedetti.alex85@gmail.com> wrote:
>
> > As I told you before :
> > I have a custom Ouput Connector.
> > This custom Output Connector ha a collection of OutputConnectors inside.
> > So simply when I have a deleteDocument, I have to do my logic and send
> some
> > addOrUpdateDocument and deleteDocument to the OutputConnectors from the
> > collection .
> >
> > But the deleteDocument and addOrUpdate have incompatible signatures, so
> due
> > to this I can not elegantly call the addOrUpdate.
> > The main problem is the discordance of IOActivities between what i have
> in
> > my removeDocument and what I have in removeDocument and
> > addOrReplaceDocument for the generic baseOutputConnector.
> >
> > So ideally what I need it to build and IOutputAddActivity from the
> > IOutputRemoveActivity in the proper way.
> >
> > Thank you again for your attention
> >
> >
> >
> > 2014-07-07 11:04 GMT+01:00 Karl Wright <daddywri@gmail.com>:
> >
> > > Hi Alessandro,
> > >
> > > As stated I don't have a good answer for you.  If you tell me more
> > broadly
> > > what you are trying to do I may be able to propose something better.
> > >
> > > Karl
> > >
> > >
> > >
> > > On Mon, Jul 7, 2014 at 5:33 AM, Alessandro Benedetti <
> > > benedetti.alex85@gmail.com> wrote:
> > >
> > > > Hi Karl,
> > > >  thank you for the support but your solution is not possible, because
> > my
> > > > case is the following :
> > > >
> > > > *Custom Output Connector*
> > > > removeDocument is calling the addOrReplaceDocument method in a
> generic
> > > > BaseOutputConnector.
> > > > addOrReplaceDocument is calling the the addOrReplaceDocument method
> in
> > a
> > > > generic BaseOutputConnector.
> > > >
> > > > So in this scenario the only way to follow your strategy should be to
> > > > create in the BaseOutputConnector and in all the implementations the
> > new
> > > > method accepting the "in common" ancestor for the activity Class.
> > > >
> > > > But i don't want to do this, because I don't want to hack the other
> > > > Manifold code ...
> > > >
> > > > So I know that the hierarchy of activities is quite coupled with the
> > > > function they are tracking.
> > > > Which can be the most elegant solution karl in your opinion to
> satisfy
> > > this
> > > > requirement ?
> > > >
> > > > Right now in the removeDocument I use a EmptyOutputAddActivity
> > implements
> > > > IOutputAddActivity ( custom class)
> > > > But would be great to achieve the same using some standard manifold
> > > > structure.
> > > >
> > > > Cheers
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > 2014-07-02 11:31 GMT+01:00 Karl Wright <daddywri@gmail.com>:
> > > >
> > > > > Hi Alessandro,
> > > > >
> > > > > You cannot just cast because there are different services in each
> > > > > interface.  However, they are derived from common interfaces.  For
> > > > example,
> > > > >
> > > > > public interface IOutputAddActivity extends
> > > > > IOutputQualifyActivity,IOutputHistoryActivity,IOutputCheckActivity
> > > > >
> > > > > public interface IOutputRemoveActivity extends
> IOutputHistoryActivity
> > > > >
> > > > >
> > > > > The only one in common is IOutputHistoryActivity, so as long as
> your
> > > > > addOrReplace method is calling IOutputHistoryActivity methods only,
> > you
> > > > can
> > > > > write a second method that accepts just IOutputHistoryActivity and
> > call
> > > > > that from addOrReplace AND from deleteDocument.
> > > > >
> > > > > Karl
> > > > >
> > > > >
> > > > > On Wed, Jul 2, 2014 at 6:13 AM, Alessandro Benedetti <
> > > > > benedetti.alex85@gmail.com> wrote:
> > > > >
> > > > > > 2014-07-02 11:04 GMT+01:00 Karl Wright <daddywri@gmail.com>:
> > > > > >
> > > > > > > Hi Alessandro,
> > > > > > >
> > > > > > > The "activities" metaphor is simply to make available
> appropriate
> > > > > > framework
> > > > > > > services to specific connector methods.  The metaphor is
good
> for
> > > > > > > ManifoldCF because it allows services to be added in new
> releases
> > > > > without
> > > > > > > upsetting backwards compatibility etc.
> > > > > > >
> > > > > > > If you have a "deleteDocument" implementation that is trying
to
> > > call
> > > > an
> > > > > > > "addOrReplaceDocument" method, this can *only* work if
the
> > services
> > > > you
> > > > > > are
> > > > > > > using in the addOrReplaceDocument method do not include
any of
> > > those
> > > > > that
> > > > > > > are not in IOutputDeleteActivity.  If that is the case,
you
> > should
> > > be
> > > > > > able
> > > > > > > to write a common method which accepts the appropriate
common
> > > parent
> > > > > > > interface of IOutputAddActivity and IOutputDeleteActivity.
 If
> > not,
> > > > you
> > > > > > > will have to rethink how you are doing this.
> > > > > > >
> > > > > >
> > > > > > Ok, assuming I don't want to include any further services.
> > > > > > I have in the deleteDocument, the IOutputDeleteActivity but
the
> > > > > > addOrReplaceDocument is taking the IOutputAddActivity.
> > > > > > Which is the proper way to instantiate IOutputAddActivity from
> > > > > > the IOutputDeleteActivity ?
> > > > > > Because they are different interfaces and i don't know exactly
> > which
> > > > > > implementation arrives there, should I do a hardcoded casting
?
> > > > > > Or what else?
> > > > > > Thank you very much for your time,
> > > > > >
> > > > > > Cheers
> > > > > >
> > > > > >
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Karl
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On Wed, Jul 2, 2014 at 5:17 AM, Alessandro Benedetti <
> > > > > > > benedetti.alex85@gmail.com> wrote:
> > > > > > >
> > > > > > > > Hi guys,
> > > > > > > > I'm trying to implement a specific logic in a custom
output
> > > > connector
> > > > > > > > where, under specific conditions, in the deleteDocument
> method
> > is
> > > > > then
> > > > > > > > called an AddOrUpdate method.
> > > > > > > >
> > > > > > > > This can happen when the deletion of a document  causes
the
> > > update
> > > > of
> > > > > > > other
> > > > > > > > documents already indexed.
> > > > > > > > I know is a very specific use case, but let's see
if there
> is a
> > > > > > solution
> > > > > > > > ...
> > > > > > > > So far no problem until I reach the Activities management
...
> > > > > > > > I found the hierarchy of this objects really confusing,
with
> a
> > > lot
> > > > of
> > > > > > > > interfaces and different inner classes sparse in the
code.
> > > > > > > >
> > > > > > > > Furthermore it appears to be really hard to create
an
> > > > > > > *IOutputAddActivity*
> > > > > > > > object where you have a IOutputDeleteActivity.
> > > > > > > >
> > > > > > > > What can be the best way to instantiate correctly
an
> > > > > > > > *IOutputAddActivity *inside
> > > > > > > > the DeleteDocument method *?*
> > > > > > > > Why this activities objects that seems a sort of
> > logging/tracking
> > > > > > feature
> > > > > > > > is such coupled with the logic ?
> > > > > > > >
> > > > > > > > Thank's for the help
> > > > > > > > --
> > > > > > > > --------------------------
> > > > > > > >
> > > > > > > > Benedetti Alessandro
> > > > > > > > Visiting card : http://about.me/alessandro_benedetti
> > > > > > > >
> > > > > > > > "Tyger, tyger burning bright
> > > > > > > > In the forests of the night,
> > > > > > > > What immortal hand or eye
> > > > > > > > Could frame thy fearful symmetry?"
> > > > > > > >
> > > > > > > > William Blake - Songs of Experience -1794 England
> > > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > --------------------------
> > > > > >
> > > > > > Benedetti Alessandro
> > > > > > Visiting card : http://about.me/alessandro_benedetti
> > > > > >
> > > > > > "Tyger, tyger burning bright
> > > > > > In the forests of the night,
> > > > > > What immortal hand or eye
> > > > > > Could frame thy fearful symmetry?"
> > > > > >
> > > > > > William Blake - Songs of Experience -1794 England
> > > > > >
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > --------------------------
> > > >
> > > > Benedetti Alessandro
> > > > Visiting card : http://about.me/alessandro_benedetti
> > > >
> > > > "Tyger, tyger burning bright
> > > > In the forests of the night,
> > > > What immortal hand or eye
> > > > Could frame thy fearful symmetry?"
> > > >
> > > > William Blake - Songs of Experience -1794 England
> > > >
> > >
> >
> >
> >
> > --
> > --------------------------
> >
> > Benedetti Alessandro
> > Visiting card : http://about.me/alessandro_benedetti
> >
> > "Tyger, tyger burning bright
> > In the forests of the night,
> > What immortal hand or eye
> > Could frame thy fearful symmetry?"
> >
> > William Blake - Songs of Experience -1794 England
> >
>



-- 
--------------------------

Benedetti Alessandro
Visiting card : http://about.me/alessandro_benedetti

"Tyger, tyger burning bright
In the forests of the night,
What immortal hand or eye
Could frame thy fearful symmetry?"

William Blake - Songs of Experience -1794 England

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message