cancel
Showing results for 
Search instead for 
Did you mean: 

Problem with persistence in Generic Sync application

Former Member
0 Kudos

Hi:

We are developing an application which runson SAP Mi 2.5, SP 18,

Windows Mobile 5.0 and Generic Sync for PDAs.

We need persistence in our application. We tried with persistence API but

we found a problem and we send a message to SAP. Until we can solve

this issue we must implement persistence in other way to satisfy our customer requierements

Since now,we have implemented persistence with files but the performance of this solution does not meet our customer requirements (the search of data in the PDA is very slow).

We are thinking in another solution, which consists on using

Syncbos.Using this alternative, before making a generic sync, and

executing the code shown below:

SmartSyncRuntime.getInstance().getSyncBoDescriptorFacade

().getAllSyncBoDescriptors()

the returned syncBOS are those which I have defined in XML. On the

contrary, after making a generic sync, executing the same code, the

returned syncbos ARE NOT those whic I have defined in XML. The only

return that I get is the MIAUTH.

Any other ideas?

Thanks

Kind Regards

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

hi satur,

there are some things to take care if you want to use the persistence layer of the

SmartSync layer from your GenericSync app.

first, you have to let the MI client think that your application is using the

SmartSync functionality. this can be achieved by just including a dummy metadata

meRepMeta.xml file in the war archive during the deployment process. once the

MI client framework sees this during the installation, it will set a flag on the MSD

that your app is a smartsync.

second, if your app is considered a smartsync, MI will generate the delta request

and upload messages for your data if ever you have your SyncBo defined in the

metadata. Since you don't want such functionalities to be ON, i would suggest to

mark all your SyncBo as local ones; i.e. using attributes suppressDownload=true

and suppressUpload=true. this way, the MI framework will skip creating the requests

and delta upload messages for your app during the synchronization process.

third, your application has to have the syncEventListener implementation to get

notification when the Sync button (or event) was initiated. if you don't want your

app to be notified, you may just add synchronization button within your application

that will call your data manager to prepare your containers (i.e. retrieving the newly

inserted syncbo, modified syncbos and the list of deleted ones -> genericSync

containers) and to call the synchronizeWithBackend method.

fourth, you need to have the inboundProcessor that will parse your data and insert

them a SyncBo into your local database.

having tried this but i guess it might work...

regards

jo

Former Member
0 Kudos

Hi Satur,

The creation of SyncBos are a two step process. First they have to be created in the middleware using the transaction MEREP_SBUILDER. After you have created all the syncBos you have to create an MCD(Mobile component descriptor) using the transaction MI_MCD. After this is created the XML can be generated using MEREP_SBUILDER. Using this XML you can create an application war file. Now the middleware knows that you have just created a <b>smart sync</b> application. You can use SyncBos only with smart sync applications. When you deploy a smart sync application on the client the framework reads the XML and creates tables in the client. When you deploy a generic sync application the framework does not read the XML and hence the tables are not created.

SmartSyncRuntime.getInstance().getSyncBoDescriptorFacade

().getAllSyncBoDescriptors().

The reason the above method is giving you MIAUTH is because it is a Framework SyncBo present in every client. It is used for authentication purposes.

Maybe you can throw some light how how you have implemented persistence in Generic Sync?

Best Regards,

Karthik