OverviewThe rule synchronizes recently checked-in files to the locations where their previous revisions have been replicated. The idea is that if a previous version of the file has been replicated to a given site, there is a strong probability that the new version of the file will also need to be replicated on that site. Performing this replication preemptively before a user requests it enhances performance. The replication of the files occurs only once the rule has been executed. Note:
The
lxFile table definition in the database needs to be up-to-date
(run the MQL upgrade command if this is not the case).How the Rule WorksPredictive replication is enabled by adding a When the rule is executed, the FCS synchronization server will scan all the entries in the event monitor. If the entry is older than the validity duration or does not match any valid data, it is removed. If the business object of the entry does not have revisions or if its revisions files are not replicated, the entry is removed. Otherwise, the FCS synchronization server follows the business object revision chain backwards (starting from the BO on which the file has been checked-in) until a stop condition is reached. Stop conditions are:
In the last case, the FCS synchronization server searches all the sites where files with the same format are replicated, and replicates the newly checked-in file to those sites. To detect newly checked-in files, a new type of event for
the business object must be created in the event monitor: the event type
ExampleThe new DTD of the XML rule file is: <!DOCTYPE syncrules [ <!ELEMENT syncrules (predictivesyncrule, syncrule+ ) > <!ATTLIST syncrules locale CDATA ""> <!ELEMENT syncrule ( store , source , dest , ( (daily, concurrency? , zip? , (query?|buslist?|formats?)) | (weekly, concurrency? , zip? , (query?|buslist?|formats?))| (monthly, concurrency? , zip? ,(query?|buslist?|formats?))| (delay, concurrency? , zip? ,(query?|buslist?|formats?))| (size, concurrency?, zip?,formats?))) > <!ATTLIST syncrule name CDATA #REQUIRED > <!ELEMENT predictivesyncrule ((daily|weekly|monthly|delay), predictivefetcher, concurrency? )> <!ATTLIST predictivesyncrule name CDATA #REQUIRED > <!ELEMENT predictivefetcher (eventmonitorname, depth?, validityduration? )> <!ATTLIST predictivefetcher name CDATA #REQUIRED > <!ELEMENT eventmonitorname (#PCDATA)> <!ELEMENT depth (#PCDATA)> <!ELEMENT validityduration (#PCDATA)> <!ELEMENT daily (synctime) > <!ELEMENT weekly (synctime) > <!ELEMENT monthly (synctime) > <!ELEMENT size (syncsize) > <!ELEMENT delay (syncdelay) > <!ELEMENT synctime (#PCDATA)> <!ELEMENT syncsize (#PCDATA)> <!ELEMENT syncdelay (#PCDATA)> <!ELEMENT zip EMPTY> <!ELEMENT concurrency (#PCDATA)> <!ELEMENT buslist (class , param+ )> <!ELEMENT class (#PCDATA)> <!ELEMENT param (#PCDATA)> <!ATTLIST param name CDATA #REQUIRED value CDATA #REQUIRED> <!ELEMENT query ( predicate ) > <!ELEMENT predicate ( and | or | attribute* ) > <!ELEMENT and ( or | attribute* ) > <!ELEMENT or ( and | attribute* ) > <!ELEMENT attribute EMPTY> <!ATTLIST query lang (ipml) #REQUIRED> <!ATTLIST predicate type CDATA #REQUIRED> <!ATTLIST attribute name CDATA #REQUIRED> <!ATTLIST attribute value CDATA #REQUIRED> <!ATTLIST attribute operator CDATA #REQUIRED> <!ELEMENT dest (#PCDATA)> <!ELEMENT source (#PCDATA)> <!ELEMENT store (#PCDATA)> <!ELEMENT formats (#PCDATA)> ]> Here an example of an XML file using the <?xml version="1.0"?> <syncrules> <predictivesyncrule name="ExampleRule"> <delay> <syncdelay>00:30</syncdelay> </delay> <predictivefetcher name="revisionbased"> <eventmonitorname>checkinmonitor</eventmonitorname> <depth>6</depth> <validityduration>10</validityduration> </predictivefetcher> <concurrency>2</concurrency> </predictivesyncrule> </syncrules> where:
|