<?xml version="1.0" encoding="UTF-8"?><umlet_diagram><element><type>com.umlet.element.base.Class</type><coordinates><x>10</x><y>780</y><w>350</w><h>100</h></coordinates><panel_attributes>thunderforce.sforce::Cache -- -writeBackEnabled: boolean -- +Cache(backingStore: BidirectionalAPI) +setWriteBackEnabled(enabled: boolean) +isWriteBackEnabled(): boolean</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>500</x><y>950</y><w>170</w><h>90</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>20;70;150;70;150;20</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>10</x><y>980</y><w>510</w><h>120</h></coordinates><panel_attributes>thunderforce.sforce::BidirectionalAPIEventManager -- -listeners: array<function> -- +addDataChangeListener(listener: function): void +removeDataChangeListener(listener: function): void +getDataChangeListeners(): array<function> +fireDataChangedEvent(change: integer, old: sOjbect, new: sObject): void</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>390</x><y>780</y><w>500</w><h>190</h></coordinates><panel_attributes>thunderforce.sforce::BidirectionalAPIPoller -- -entityRefreshIntervals: array<EntityRefreshInterval> -backgroundRefreshEnabled: boolean -- +PollingBidirectionalAPI(backingStore: API) +refreshEntity(entityName: string): boolean +refreshAllEntities(): boolean +setEntityRefreshIntervals(invervals: array<EntityRefreshInterval>): void +getEntityRefreshIntervals(): array<EntityRefreshInterval> +setBackgroundRefreshEnabled(enabled: boolean): void +isBackgroundRefreshEnabled(): boolean</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>650</x><y>410</y><w>160</w><h>140</h></coordinates><panel_attributes>lt=<<.</panel_attributes><additional_attributes>20;20;140;20;140;120</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>680</x><y>530</y><w>220</w><h>80</h></coordinates><panel_attributes>thunderforce.sforce::Salesforce -- -sessionId: string -- +Salesforce() +getSessionId(): String</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>310</x><y>700</y><w>290</w><h>100</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>270;20;270;60;20;60;20;80</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>10</x><y>630</y><w>510</w><h>100</h></coordinates><panel_attributes><< interface >> thunderforce.sforce::BidirectionalAPI -- +addDataChangeListener(listener: function): void +removeDataChangeListener(listener: function): void +getDataChangeListeners(): array<function></panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>10</x><y>20</y><w>660</w><h>560</h></coordinates><panel_attributes><< interface >> thunderforce.sforce::API -- +getBatchSize(): integer +getOrganizationId(): string +getServerUrl(): string +setAssignmentRuleHeader(rule: string): void +setBatchSize(size: integer): void +setDebuggingHeader(debug: string): void +setEmailHeader(header: string): void +setServerUrl(url: string): void +setTransferToUserId(userid: string): void +setUpdateMru(enable: boolean): void +login(username: string, password: string): LoginResult +describeSObject(type: string): DescribeSObjectResult +describeSObjects(types: array<string>): DescribeSObjectResult +describeGlobal(): DescribeGlobalResult +describeTabs(): DescribeTabSetResult +create(sobjects: array<sObject>): array<SaveResult> +update(sobjects: array<sObject>): array<SaveResult> +upsert(externalIDFieldName: string, sobjects: array<sObject>): array<UpsertResult> +deleteIds(ids: array<string>): array<DeleteResult> +query(queryString: string): QueryResult +queryAll(queryString: string): QueryResult +queryMore(queryLocator: string): QueryResult +retrieve(fieldList: string, sObjectType: string, ids: array<string>): array<sObject> +setPassword(userId: string, password: string): SetPasswordResult +search(searchString: string): SearchResult +getDeleted(sObjectType: string, startDate: string, endDate: string): GetDeletedResult +getUpdated(sObjectType: string, startDate: string, endDate: string): array<GetUpdatedResult> +getServerTimestamp(): GetServerTimestampResult +undelete(ids: array<string>): array<UndeleteResult> +sendEmail(messages: array<BaseEmail>): SendEmailResult </panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>710</x><y>700</y><w>40</w><h>100</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>20;20;20;80</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>350</x><y>710</y><w>60</w><h>150</h></coordinates><panel_attributes>lt=<<.</panel_attributes><additional_attributes>20;20;20;130;40;130</additional_attributes></element><element><type>com.umlet.element.base.Class</type><coordinates><x>530</x><y>640</y><w>270</w><h>80</h></coordinates><panel_attributes>thunderforce.sforce::APIDelegator -- #delegate: API -- +Delegator(delegate: API) +getDelegate(): API</panel_attributes><additional_attributes></additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>190</x><y>710</y><w>40</w><h>90</h></coordinates><panel_attributes>lt=<<.</panel_attributes><additional_attributes>20;20;20;70</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>190</x><y>860</y><w>40</w><h>140</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>20;120;20;20</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>640</x><y>560</y><w>40</w><h>100</h></coordinates><panel_attributes>lt=<<.</panel_attributes><additional_attributes>20;20;20;80</additional_attributes></element><element><type>com.umlet.element.base.Relation</type><coordinates><x>230</x><y>560</y><w>40</w><h>90</h></coordinates><panel_attributes>lt=<<-</panel_attributes><additional_attributes>20;20;20;70</additional_attributes></element></umlet_diagram>