Sometimes it happens like you developed an AIF Service in
Microsoft Dynamics AX and not able to test. Reason can be anything. Consider a
scenario where you need to send AX data outside using standard AIF services but
don’t know how to send.
This article explains you how to run a read operation for an
AIF Service to send data from Microsoft Dynamics AX to your destination folder
using File System Adapter. This article may answer below questions:
Using X++ codes how to call a service operation for
Microsoft Dynamics AX 2012 AIF?
How to call or execute read operation in Microsoft Dynamics
AX 2012?
How to send data outside Microsoft Dynamics AX 2012 using Outbound?
How to use standard Microsoft Dynamics AX 2012 AIF Services?
Applied on: Dynamics AX 2012 R2
Prerequisite: X++; MorphX; Basic programming knowledge, Basic AIFTarget audience: AX programmers
Assumption: Outbound port is configured properly. The person has the basic idea about AIF.
Here I used a standard
service call VendVendTableService and read operation of it to send Vendor data
outside.
Below job is to select a
vendor record and send to Queue Manager.
static void
aifOutBoundServiceCall(Args _args)
{AxdSendContext axdSendContext = AxdSendContext::construct();
AifEntityKey aifEntityKey = AifEntityKey::construct();
Map keyData;
AifConstraintList aifConstraintList = new AifConstraintList();
AifConstraint aifConstraint = new AifConstraint();
VendTable vendTable;
select firstOnly
vendTable
where vendTable.AccountNum == "V-1001";
keyData =
SysDictTable::getKeyData(vendTable);
aifEntityKey.parmTableId(vendTable.TableId);aifEntityKey.parmRecId(vendTable.RecId);
aifEntityKey.parmKeyDataMap(keyData);
axdSendContext.parmXMLDocPurpose(XMLDocPurpose::Original);
axdSendContext.parmSecurity(false);aifConstraint.parmType(AifConstraintType::NoConstraint) ;
aifConstraintList.addConstraint(aifConstraint) ;
//To handle an error it can be checked
if outbound port is configured. This is optional.
AifSendService::submitDefault( classnum(VendVendTableService),aifEntityKey,
aifConstraintList,
AifSendMode::Async,
axdSendContext.pack());
}
Below logic can be used to check whether Outbound port is
configure or not properly. It’s not mandatory but nice to have.
boolean canSendXML(){
boolean ret;
AifActionId actionId;
AifEndpointList endpointList;
AifConstraint aifConstraint = new AifConstraint();
AifConstraintList aifConstraintList = new AifConstraintList();
actionId
= AifSendService::getDefaultSendAction(classnum(VendVendTableService),
AifSendActionType::SendByKey);
if (actionId)
{aifConstraint.parmType(AifConstraintType::NoConstraint);
aifConstraintList.addConstraint(aifConstraint);
endpointList = AifSendService::getEligibleEndpoints(actionId, aifConstraintList);
if (endpointList.getEndpointCount()>0)
{
ret = true;
}
}
return ret;
}
static void
aifOutboundExecutoinJob()
{new AifOutboundProcessingService().run();
new AifGatewaySendService().run();
}
After execution of above job below is the output.
No comments:
Post a Comment