Farklı entegrasyon ihtiyaçlarını karşılamak, mantıksal sınama sonuçlarına göre farklı entegrasyon akışları uygulamak ya da bir hesaplama sonucunu döndürmek gibi işlemleri yapabilmek adına Node.js Worker altyapısını kullanabilirsiniz. Worker altyapısında JavaScript veya TypeScript kullanabilirsiniz. Node.js Worker altyapısı sürekli güncelleme ve gelişim içerisindedir. Yeni özelliklerden haberdar olmak için bu makaleyi takip edebilirsiniz.
Bir worker geliştirmeden önce DEXA'nın nasıl çalıştığını anlamak geliştireceğiniz scriptlerin nasıl işleneceğini anlamak ve temel kavramlara hakim olmak adına önemlidir. Bu makaleye devam etmeden önce
DEXA Nasıl Çalışır? makalesini okumanız önerilir.
Dexa.js Kütüphanesi
DEXA Node.js Workerlarında yapılan işlemlerin DEXA ile entegre edilmesi ve hazır sunulan entegrasyon özelliklerinin kullanılabilmesi için worker scriptlerinde dexa.js kütüphanesi kullanılmalıdır.
Dexa Helpers
DEXA'da yer alan ayarlara erişmek, çağırılan query ile ilgili işlemler yapmak vb. temel fonksiyonları barındıran helperlardır.
Worker scriptlerinizde require kullanarak kütüphaneye erişim sağlayabilirsiniz.
var dexa = require('../dexa');
Configuration
Worker içerisinden DEXA ayarlarına erişmek için kullanılır.
var dexaConfig = dexa.configuration();
Worker içerisinden DEXA'ya istek gönderen kullanıcının HTTP Request Header'larına erişmek için kullanılır. Authorization header'ı kullanılarak Devoplus API'a kullanıcı adına erişim sağlanabilir.
var authorizationHeader = dexa.headers().Authorization;
Message
Worker'ı tetikleyen Data Exchange Request'e ait bilgilere erişmek için kullanılır. Message parametreleri ile ilgili daha detaylı bilgiye
"DEXA Nasıl Çalışır?" makelesinden erişebilirsiniz.
{
"MessageGuid": "536183a2-3f10-4e06-9413-ffcffcfce487",
"QueryStoreType": 4,
"QueryStoreKey": "FunctionTest1",
"Parameters": {
"CompanyCode": "1",
"OfficeCode": "D",
"WarehouseCode": "D101",
"PickingDate": "2024-05-20T03:00:00+03:00",
"OperationDate": "2024-05-20T03:00:00+03:00",
"ShippingDate": "2024-05-20T03:00:00+03:00",
"ToWarehouseCode": "B002",
"ToStoreCode": "B002",
"ShippingPostalAddressID": "23000F1B-38DA-4690-A85D-B091006509FA",
"DeliveryCompanyCode": "W4458A",
"Lines": [
{
"DispOrderLineID": "6E9B4DAB-5676-4F84-B70C-B0F900CC1DBC",
"Qty1": 1
}
]
},
"Created": "2024-05-17T16:48:32.542+03:00"
}
Worker ile ilgili bilgilerin console'a basılması için kullanılır. Herhangi bir veri dönüşü yoktur.
----------------------------------------------------------------------------------------------------------
DEXA Query Information
Function Key: FunctionTest1
Message Guid: 536183a2-3f10-4e06-9413-ffcffcfce487
Created: 2024-05-17T16:48:32.542+03:00
----------------------------------------------------------------------------------------------------------
SetResponse
Çalışan worker'ın işlemini tamamlamasının ardından ürettiği uygulama yanıtını sunucuya göndermesi için kullanılır. Parametre olarak verilen değer JSON formatına dönüştürülerek sorguyu başlatan kaynağa iletilir.
Dexa.Devoplus
Devoplus API'larına erişmek için kullanılır. API erişimi sağlamak için Devoplus Access Token değeri sağlanmalıdır. Headers helper'ından dönen Authorization header değeri kullanılarak kullanıcı adına işlem yapılabilir.
var devoplus = new dexa.Devoplus(dexa.headers().Authorization);
Opsiyonel olarak debugMode ve timeoutMs parametreleri sağlanabilir. debugMode true olarak gönderildiğinde Devoplus API'ın staging versiyonu kullanılır. timeoutMS değeri ile milisaniye cinsinden zaman aşımı süresi tanımlanabilir.
var devoplus = new dexa.Devoplus(dexa.headers().Authorization, true, 30000);
Get
Devoplus API'a HTTP GET isteği göndermek için kullanılır.
devoplus.get("User/Me", function (result, error) {
if (error == null) {
console.log(result);
} else {
console.log(result);
console.error(error);
}
});
Post, Put, Delete
Devoplus API'a HTTP POST, PUT ve DELETE istekleri göndermek için kullanılır.
var feedback = {
FeedbackType: 1,
Message: "Lorem ipsum dolor sit amet."
};
devoplus.post("Feedback", feedback, function (result, error) {
if (error == null) {
console.log(result);
} else {
console.log(result);
console.error(error);
}
});
Dexa.NebimV3Integrator
Nebim V3 Integrator'e erişmek için kullanılır. Token ya da kullanıcı adı - şifre ile oturum açılabilir. Başlamak için Integrator URL değeri sağlanmalıdır.
var integrator = new dexa.NebimV3Integrator("http://10.10.10.10/", 120000);
Connect
Nebim V3 Integrator'e kullanıdı adı - şifre ile oturum açmak için kullanılır.
integrator.connect("Devoplus", "001", "test", "******", function (connectionResult) {
console.log(connectionResult);
});
ConnectWithToken
Nebim V3 Integrator'e token ile oturum açmak için kullanılır.
integrator.connectWithToken("*****************", function (connectionResult) {
console.log(connectionResult);
});
Disconnect
Nebim V3 Integrator'de başlatılan oturumu sonlandırmak için kullanılır.
integrator.disconnect(function (disconnectResult) {
console.log(disconnectResult);
})
GetUserInfo
Connect ya da ConnectWithToken ile oturum başlatıldıktan sonra oturum açan kullanıcı bilgilerini almak için kullanılır. Bu metodu kullanarak oturumun doğrulaması da sağlanabilir.
integrator.getUserInfo(function (getUserInfoResult) {
console.log(getUserInfoResult);
});
Call
Nebim V3 Integrator'e istek göndermek için kullanılır.
var createPickingRequest = {
ModelType: 107,
CompanyCode: dexa.message().Parameters.CompanyCode,
OfficeCode: dexa.message().Parameters.OfficeCode,
WarehouseCode: dexa.message().Parameters.WarehouseCode,
PickingDate: dexa.message().Parameters.PickingDate,
ToWarehouseCode: dexa.message().Parameters.ToWarehouseCode,
ToStoreCode: dexa.message().Parameters.ToStoreCode,
IsCompleted: true,
Lines: dexa.message().Parameters.Lines
};
integrator.call("IntegratorService/POST", createPickingRequest, function (createPickingResult) {
console.log(createPickingResult);
dexa.setResponse(createPickingResult);
});
Dexa.HTTP
Worker üzerinden HTTP isteği göndermek için kullanılır. Gönderilecek istekler için timeout değeri sağlanmalıdır.
var http = new dexa.HTTP(30000);
Get
HTTP GET isteği göndermek için kullanılır. URL ve headers değerleri sağlanmalıdır.
http.get("https://jsonplaceholder.org/posts", { 'Accept': 'application/json', 'Content-Type': 'application/json' }, function (response) {
console.log(response);
});
Post, Put, Delete
HTTP POST isteği göndermek için kullanılır. URL, headers ve body değerleri sağlanmalıdır.
var body = {
Hello: "World"
};
http.post("https://postman-echo.com/post", { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body, function (response) {
console.log(response);
});