Skip to Content
author's profile photo Former Member
Former Member

Problem with persistence in Generic Sync application

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

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

2 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Jan 29, 2007 at 03:27 AM

    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

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Feb 01, 2007 at 11:28 AM

    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

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.