Xpoda Platformunda dilediğiniz yerlerde özel olarak geliştirdiğiniz kodları çalıştırmak isteyebilirsiniz. Bu maksatla geliştireceğiniz .NET Class Library'leri kullanabilirsiniz.
İşlem aksiyonların altındaki C# kütüphanesi olarak karşımıza çıkan yerden yapılmaktadır.
Xpoda'da Web Servis kullanımı ile ilgili genel bilgiler aşağıda verilmiştir.
- .dll dosyalarının Xpoda Client ekranlarında çalıştırmak için öncelikle oluşturulan dosyaların; Xpoda servisinin kurulu olduğu dizin altında “Addition\Web Service Communication” klasörüne kaydedilmesi gerekmektedir.
- Eğer Xpoda Service klasörü içerisinde Addition ve Web Servis Service Communication klasörleri yoksa kendiniz oluşturabilirsiniz.
- Xpoda C# kütüphanesinde çalıştırılacak tüm methodların geri dönüş tipleri ve parametre alımı Dictionary<string,object>() şeklinde olmak zorundadır.
- Geliştirilen kütüphane .NET Framework 4.8 versiyonu ile geliştirilmelidir. .NET Standard veya .NET Core desteklenmemektedir.
- .NET Class Library geliştirilirken NuGet vb metodlarla projenizde referans ettiğiniz kütüphaneleri de Publish çıktısından Addition\Web Service Communication altına taşımayı unutmayın.
Xpoda Github altındaki örnek projeyi inceleyebilirsiniz.
──────────────────────────────
Metin Kutusuna Değer Aktarımı
Bu örnekte bir butona tıklandığında iki tamsayının toplamını hesaplayacağız ve bunu bir metin kutusu kontrolünün metin değerine ayarlayacağız.
Rakam kutusuna yazılan iki değerin toplamının textboxa aktarımını gösteren Xpoda Studio ekran görüntüsü aşağıdaki gibidir.
Buton elemanına eklenen "When Clicked – Update Value" aksiyonu ile ekrandan alınan x ve y parametrelerinin toplamını alıp liste elemanına aktarmak için sorguda SELECT '$PDeger1$' AS 'x', '$PDeger2$' AS 'y' yazın ve Kitaplık, Sınıf ve Method'u seçin ve eylemi kaydedin.
Method aşağıdaki gibidir. Parametre alma ve döndürme değeri Dictionary <string, object> () olmalıdır.
public static Dictionary<string, object> SumOfValues(List<Dictionary<string, object>> parameters)
{
var result = new Dictionary<string, object>();
var List = new List<Dictionary<string, object>>();
result["Error"] = "";
try
{
var value = Convert.ToInt32(parameters[0]["x"]) +
Convert.ToInt32(parameters[1]["y"]);
List.Add(new Dictionary<string, object> { { "Result", value } });
result["List"] = List;
}
catch (Exception ex)
{
result["Error"] = ex.Message;
}
return result;
}
Gerekli işlemler yapıldıktan sonra uygulama kaydedilir ve Xpoda Client ekranında ilgili butona tıklanır, iki değerin toplamı dll yöntemi ile değer alanına (liste elemanı) aktarılır. Client ekran görüntüsü aşağıdaki gibidir.
──────────────────────────────
HAVA DURUMU DEĞERLERİNİ LİSTEYE AKTARMA
Geliştirilen kütüphanelerden dll sorgusundan dönen hava durumu sonuçlarını Liste aracının içerisine gönderebilirsiniz. Buton elemanına eklenen "When Clicked – Update Value" aksiyonu ile bu işlemi gerçekleştirelim. Kitaplık, Sınıf ve Method'u seçin ve eylemi kaydedin.
Butonun içerisinde yapılan değişiklikler
Client ekranında görünümü
Method aşağıdaki gibidir.
public static Dictionary<string, object> GetWeatherData(List<Dictionary<string, object>> parameters)
{
HttpClient _http = new HttpClient();
var result = new Dictionary<string, object>();
var List = new List<Dictionary<string, object>>();
result["Error"] = "";
var response = _http.GetFromJsonAsync<WeatherModel>(http://api.openweathermap.org/data/2.5/weather?q=London,uk&APPID=0000000000000000000).Result;
var dt = new DataTable();
dt.Clear();
dt.Columns.Add("KEY");
dt.Columns.Add("VALUE");
var row = dt.NewRow();
row["KEY"] = "lon";
row["VALUE"] = response.coord.lon.ToString();
dt.Rows.Add(row);
var row2 = dt.NewRow();
row2["KEY"] = "lat";
row2["VALUE"] = response.coord.lat.ToString();
dt.Rows.Add(row2);
var row3 = dt.NewRow();
row3["KEY"] = "name";
row3["VALUE"] = response.name;
dt.Rows.Add(row3);
var row4 = dt.NewRow();
row4["KEY"] = "weather_state";
row4["VALUE"] = response.weather[0].main;
dt.Rows.Add(row4);
var row5 = dt.NewRow();
row5["KEY"] = "weather_description";
row5["VALUE"] = response.weather[0].description;
dt.Rows.Add(row5);
foreach (DataRow dr in dt.Rows)
{
var rows = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
rows.Add(col.ColumnName, dr[col.ColumnName]);
List.Add(rows);
}
result["List"] = List;
return result;
}