on 01-09-2006 11:17 AM
Hello,
Is it possible (and how) to control an upload syncbo. For example, can you say that a specific syncbo(MAM25_005 - Time confirmation) not to synchronize. (Not send to the MI-server).
Kind regards,
Patrick Willems
We do something like this in our own Synchronize method
(The BO Names have been changed)
private void Synchronize() {
SmartSyncRuntime ssr = SmartSyncRuntime.getInstance();
SyncManager sync = SyncManager.getInstance();
SyncBoOutDeltaFacade delta = ssr.getSyncBoOutDeltaFacade();
SyncBoDeltaRequestFacade req = ssr.getSyncBoDeltaRequestFacade();
SyncBoDescriptorFacade descF = ssr.getSyncBoDescriptorFacade();
SyncBoDescriptor GoBo = descF.getSyncBoDescriptor("GO_BO");
SyncBoDescriptor NoGoBo = descF.getSyncBoDescriptor("NO_GO_BO");
SyncBoDeltaRequest goreq = req.getSyncBoDeltaRequest(GoBo);
SyncBoDeltaRequest nogoreq = req.getSyncBoDeltaRequest(NoGoBo);
delta.setSendType(GoBo, SyncBoOutDeltaSendType.SEND_DIRECT);
delta.setSendType(NoGoBo, SyncBoOutDeltaSendType.NO_SEND);
sync.synchronizeWithBackend();
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello Jo,
I have implemented yout suggestion for instance level. After I create the syncbo I set the sendtype to NO_SEND. Till so far no problem.
But after I synchronize and look at the status, the status is set to SEND.
Also an another problem. When I stop and start the tomcat server, the status is also set to SEND.
How can I prevent to set the status to SEND. (from my 2 problems site of view)
Patrick
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
hello patrick,
I forgot to mention that the value set thru
SyncBoOutDelta.setSendType as well as
SyncBoOutDeltaFacade.setSendType methods is
NOT persisted.
>But after I synchronize and look at the status, the
>status is set to SEND.
This is by design. The instance level send type values
will be set back to their default values as defined in
the SyncBo metadata.
>Also an another problem. When I stop and start the
>tomcat server, the status is also set to SEND.
Same reason as described above.
>How can I prevent to set the status to SEND.
If you want all your delta not uploaded definitely,
set your SyncBo attribute suppressUpload="true" in the
metadata.
Another way is by using the SyncBoOutDeltaListener.
However, the use of listeners is not recommended anymore
due to performance reasons. Still you can use them.
Implement a SyncBoOutDeltaListener that will be notified
by the framework during sync. And this registered
listener will be the one to set the sendType into the
outDelta instance that conforms to your criteria during
the notification.
Hope this helps.
Regards
Jo
hello jo,
I can see that you control the syncbo at sync time. Is it possible to control the syncbo before the sync is take place.
For example: You create a time confirmation and set something is that syncbo which tells the delta not to sync that syncbo?
Patrick
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
hello patrick,
the SyncBo does not store the send type info into its
every instance.
> Is it possible to control the syncbo before the sync is
> take place.
yes you can.
for descriptor level, you may suppress all out deltas
for a specific SyncBo and you can set this prior to your
client's synchronization. likewise, for instance level,
you can use the API i described; i.e after you have
inserted new time confirmation SyncBos, you can get the
delta iterator and set the send type for every instances.
after then you can invoke the sync button...
now, if you mean during the SyncBo design time, you can
set the SyncBo attribute suppressUpload="true" in your
metadata and this suppresses all delta uploads for that
SyncBo all through out.
regards
jo
hello patrick,
which MI version and patch level are you working on?
API-wise there are 2 levels on which you can suppress
the delta upload - instance level and descriptor level.
1.SyncBoDescriptor level (MI2.5 SP13 & later)
The SyncBoDescriptor level is added into SP13 for
performance consideration. You can set you SyncBo delta
send type by using the API.
SyncBoOutDeltaFacade.setSendType(SyncBoDescriptor, SyncBoOutDeltaSendType)
2) SyncBo instance level (2.1 & 2.5 SP12)
You have to use the following APIs
SyncBoOutDeltaFacade.getAllDelta():MeIterator
//loop into the iterator
//descriptor
SyncBoOutDelta.getSyncBoDescriptor():SyncBoDescriptor
//synckey
SyncBoOutDelta.getSyncKey():Object
//set send type
SyncBoOutDelta.setSendType(SyncBoOutDeltaSendType);
//loop end
You need to retrieve the MeIterator of all the outDelta
instances and loop into it. Check on every instance's
descriptor and/or the synckey if necessary then set
the instance send type.
The parameter SyncBoDescriptor is the descriptor
of your SyncBo and SyncBoOutDeltaSendType is your delta
upload send type which could only be of the following
values:
NO_SEND - suppress the upload
SEND - send the delta according to the defined send type in the SyncBo metadata
SEND_DIRECT - send the delta synchronously
Take note that from 2.5 SP13, the instance level is
deprecated and the instance level send type value will
be disregarded if the the descriptor level send type is
set.
so in your case, to suppress MAM25_005 e.g.
//2.5 sp13 later
SyncBoDescriptor mam005Desc = descriptorFacade.getSyncBoDescriptor("MAM25_005");
SyncBoOutDeltaFacade.setSendType(mam005Desc , SyncBoOutDeltaSendType.NO_SEND);
//2.1 & 2.5 sp12 below
SyncBoDescriptor mam005Desc = descriptorFacade.getSyncBoDescriptor("MAM25_005");
MeIterator outDeltaIt = SyncBoOutDeltaFacade.getAllDelta();
while(outDeltaIt.hasNext()){
SyncBoOutDelta outDelta = (SyncBoOutDelta)it.next();
if(outDelta .getSyncBoDescriptor()==mam005Desc)
outDelta.setSendType(SyncBoOutDeltaSendType.NO_SEND);
}
regards
jo
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
96 | |
6 | |
5 | |
5 | |
5 | |
5 | |
4 | |
4 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.