Custom Inbound AIF Service in Microsoft Dynamics AX 2012
OVERVIEW
Application
Integration Framework (AIF) services are used to communicate with external
systems or applications. Microsoft Dynamics AX 2012 has the following types of
services:
1.
Document services
2.
Custom services
3.
System services
An AIF service can be Inbound or Outbound.
An Inbound service is used when you want to send data to an external system and
Outbound services are used when you want to retrieve data. This tutorial will
guide you in creating Custom Inbound AIF services in Microsoft Dynamics AX
2012. Custom services are used when:
1.
The complexity of the entities is
relatively low.
2.
When you want to have full control of
the service contract.
3.
When data contracts needs to be
shared with different entities.
PRE-REQUISITES
1.
Microsoft Dynamics AX 2012
2.
AIF services must be installed and
configured on IIS
IMPORTANT CONCEPTS
1.
Service operation
Service
operations are class methods that expose any business logic in a service. To
define a service operation, add the SysEntryPointAttribute attribute
at the top of a method. Any existing method can be converted to a service
operation by adding this attribute at the beginning of the method.
&absp;
Note: The service operation name cannot include Create, Find, Update or Delete. These names are reserved to be used by AIF Document services. AX will make an exception when they are called from a client.
&absp;
Note: The service operation name cannot include Create, Find, Update or Delete. These names are reserved to be used by AIF Document services. AX will make an exception when they are called from a client.
2.
SysEntryPointAttribute
SysEntryPointAttribute defines
the authorization checks that will be performed when a method is called from
the server. This attribute must be set on all the service operations. If the
value is “true”, it means that authorization checks will be performed for all
the tables accessed in the method and if set to “false”, no authorization
checks will be performed.
3.
AifCollectionTypeAttribute
AifCollectionTypeAttribute is
used when you want to use a collection as a return type or in a parameter of a service
operation. This attribute defines the type of data a collection contains.
SCENARIO
As
part of this tutorial the service will return the list of customer Information
in Dynamics AX.
Steps
1.
First we will create a new class
which will contain Service operations.
2.
Open AOT. Go to Classes and create a
new class. Let’s name it ShyamCustomerServiceDemo.
3.
Set the RunOn property of the class to Server. This will make sure the class always executes
on the server.
4.
Add a new method and name it as getCustomerList.
This method will query customers’ names and return a Type list string. Write
the following code in the method:
[SysEntryPointAttribute(true),AifCollectionTypeAttribute('return', Types::String)]
public List getCustomerList()
{
CustTable custTable;
List list = new
List(Types::String);
//select all
customers
while
select * from
custTable where
custTable.CustGroup =='20'
{
//add
customer name in the list
list.addEnd("Customer
Name: " + custTable.name());
list.addEnd ("Customer
Account Num: " + custTable.AccountNum);
list.addEnd("Cust
Group: " + custTable.CustGroup);
list.addEnd("Cust
Currency: " + custTable.currencyName());
list.addEnd("Payment
Terms: " + custTable.PaymTermId);
list.addEnd("-------");
}
return
list;
}
|
5.
The SysEntryPointAttribute tells
AX that this method is a service operation method.
6.
Now we will create a new service and
add the above created service operation to it.
8.
Name it as ShyamCustomerServiceDemo.
9.
Open the properties of the newly
created service and select the ShyamCustomerServiceDemo class
in the Class field.
10.
Now expand the ShyamCustomerServiceDemo service
node and add a new Operation by right clicking on Operations and selecting Add Operation.
11.
All service operations present in the
class will be listed. Select the getCustomerList service
operation by checking the Add field
in the grid and press OK.
12.
The next step is to create a service
group and deploy the service to the Inbound Port.
13.
Go to Service
Groups, right click and select New Service
group.
14.
Name it as ShyamCustomerServiceDemoGroup.
15.
Set the AutoDeploy to Yes (Service
will start automatically when AOS is started) and set the Description asCustomer
name service.
16.
Right click the newly created service
group and select New Service Node Reference.
17.
In the newly created service node,
set the Service property to ShyamCustomerServiceDemo. The Name property will automatically default to the Service name.
18.
Now right click the service group and
select Deploy Service Group.
19.
A success message will appear if the
service group is successfully deployed.
20.
To verify it, go to System
administration à Setup à Services and Application Integration
Framework à Inbound ports.
21.
The Service group name ShyamCustomerServiceDemoGroup will
appear here as Port name with
a green check mark. This shows that service group is deployed and active. If a
red ‘x’ is appearing, select Activate from
the action pane to activate the port.
22.
The WSDL URI is
the URL of the service which can be used by external systems to access the
service.
23.
To test whether the service is
running properly, open the Visual
Studio Command Prompt by going to All Programsà Microsoft Visual Studio 2010 à Visual Studio Tools à Visual Studio Command Prompt.
24.
Write wcftestclient and
press enter. WCF Test Client will open.
25.
Now, go to File àAdd Service.
26.
In the Add Service dialog box, paste
the WSDL URI of the port and press OK.
27.
The WCF Test Client will open the
service with the list of operations available.
28.
Double click the getCustomerList. It
will open the operation details in the right hand side pane.
29.
Click the Invoke button. The result of the service will
appear in the Response pane.
Comments
Post a Comment