The developers can consume local or remote data by using both raw sql queries or consume the data as business objects. Each business object has a name and attributes and maps to a single database table. There is not support for business objects inheritance.

The Business Object Editor allows the developer to describe each type of data in terms of a business object. Each module can have multiple business objects defined and all the business objects within the module forms the data schema of the module. The data schema information described in the Business Object Editor is used:

  • during compilation to generate javascript code for each business object ( class, members, methods ,etc). It can be used runtime.
  • by the ORM(object-relational-mapping) engine to automatically generate sql queries against the mobile database, based on the database schema defined
  • runtime by the server-side data engine to automatically create, provision and populate mobile databases
  • runtime by the developer to explore the business objects meta information

Business Objects namespace

During the code generation the system will generate a piece of javascript code for each business object defined within the Business Object Editor. The developer can use the business objects to manipulate in-memory the data and also to consume/manipulate data from the mobile database

Let’s assume we have a business object with name Item ,which points to a table with name SL_Item.

The Item business object has the following members:

Name Data Type Is Primary Key
code String Yes
title String No
dateCreated DateTime No
dateModified DateTime No

During the code generation pahse the system will create a special javascript namespace, where all business object types will be placed. The default business object namespace is like this:

$ma.bo.[CODE] //where the CODE string is replaced with the actual code of the current mobile functional module.
//If we assume that the current module have the following code: SLA, then the full business objects namespace will be:
$ma.bo.SLA
//We can create an instance of this business object like this:
var oneItem = new $ma.bo.SLA.Item();
oneItem.title="new item";
alert(oneItem.title);//shows the item's title

In this case the alert function will display ‘new item’ on the screen.

Working with a single business object instance

Using the business object definition from above, we can create a new instance in the memory of the mobile device like this:

var oneItem = new $ma.bo.SLA.Item();
oneItem.code = "123"
oneItem.title = "item1";
oneItem.dateCreated = new Date();
oneItem.dateModified = new Date();

We can save (insert) the new business instance instance in the mobile database like this:

oneItem.add(function(){alert("added")}); //executes insert-sql against the mobile database

We can fetch the same business object instance from the mobile database like this:

//we must supply the primary key values as they are defined in th business object definition
$ma.bo.SLA.Item.fetch('123',function(anotherItem){
if(anotherItem!=undefined){
$ma.uiManager.alert("#messageLabel").html("item was found");
}
else{
$ma.uiManager.alert("#messageLabel").html("item was not found");
}
});

After we have fetched the business object instance from the mobile database, we can modify some members and save the instance again in the database using the following syntax:

anotherItem.dateModified = new Date();
anotherItem.update(function(){alert("updated")});

We can delete the business object instance from the database using the following syntax:

anotherItem.del(function(){alert("deleted")}); //executes delete-sql against the mobile database

Working with array of business object instances

Sometimes we will need to fetch a number of business object instances ‘filtered’ by some custom conditions.

$ma.bo.SLA.Item.fetchAll("[DateCreated]<='2010-12-31 12:00:00' and [title] like '%car%'",'[title]',25,function(items){
alert(items.lenght+'items were selected!')
});

The code will try to fetch up to 25 rows from the mobile database stored in table SL_Item (see the business object definition) , but only records with dateCreated field before ‘2010-12-31 12:00:00’ and title containing ‘car’ will be returned

The ‘where’ argument of the function is actually the where clause of the sql SELECT STATEMENT sent to the mobile database.
The ‘order’ argument of the function is actually the order clause of the sql SELECT STATEMENT sent to the mobile database.
The ‘limit’ argument of the function is actually the limit clause of the sql SELECT STATEMENT sent to the mobile database.

The developer can refer the business object members (instead of field names ) in the where/order expressions wrapped within square brackets. The ORM engine will replace the members with the right field names , before sending the sql statement for execution.

You can use the selected array of items like this:

$ma.bo.SLA.Item.fetchAll("[dateCreated]<='2010-12-31 12:00:00' and [title] like '%car%'","",function(items){;
var itemsListHtml = '';
for(i in items) {
itemsListHtml+=items[i].code+'.'+items[i].title+'<br\>';
}
$("#myItemsList").html(itemsListHtml);
});

Note that the fetchAll method is asynchronous method and it is important to pass callback function which is invoked once the fetching is completed and the records are passed as function argument.

Each row within the returned array will contain the members as defined in the business object editors.
Also each of the instances within the array is a ‘real’ business object, so it can be used as such:

items[0].dateModified= new Date();
items[0].update(function(){alert("updated")});

Last Updated: Dec 1, 2015

We provide public releases of our products once a year or more and commit to 12 months support for all public releases. We also provide releases to support the new versions of Microsoft Dynamics NAV and Microsoft Dynamics AX within 12 months after a new version of the ERP is released.

We envision the support as a major component of our effort to provide our customers with mission critical software solutions. We provide support services to customers in order to guarantee their business continuity. Our customer shall report issues or other cases, which requires support. The reporting is performed by authorized personnel from the Customer’s side via the standard support channels described below.

The support is provided in order to:

  • Solve current problems reported by authorized representatives of the Customer on occasion and in connection with Dynamics Mobile
  • Diagnose problems in connection with the standard system functionality
  • Diagnose problems in connection with the functionality customized by Dynamics Mobile team
  • Analyze and eliminate of any “defect” – a mistake in the program code of functionality, whcih affects the Client’s operations

The support services are only provided in response to a support request submitted by authorized personnel from the Customer’s side via any of the support channels:

  • -e-mail: support@dynamcsmobile.com
  • -phone: 00359 2 817 33 63

We provide different response times to support requests based on the request priority as follows:

Priority Reaction time Description
Critical to 2 hour Causes business process block.
Medium up to 8 hours Affects the business process as there are no work around actions.
Low up to 2 business days Low impact issues and requests, which does not affect the system.