Welcome to Emakin Q&A, where you can ask questions and receive answers from other members of the community.

Categories

0 votes
67 views

Merhaba,
Ben İlk taskın iş sonrasında SQL de tablo oluşturup onu kaydedebiliyorum. Mesela ilk adımda sürecin içerisine Durum adında bir veriyi kaydediyorum. Yalnız bir sonraki adımda o Durumu sql tablosunda güncelleyerek kaydetmek istiyorum. Bunu nasıl yapabilirm?
İlk yazılan durum: "başladı" olarak kayıt edildi
ikinci tasktan sonra durum: başladı yerine "devam ediyor" olarak kaydedilmeli.

İlk kullandığım kod aşağıdadır. Aynı kodu sıradaki taskta kullanınca tabloda yeni satırlar oluşuyor.

$Database.ImportFromXml({

Parameters : {                                                              
    TargetSchema : 'HSR',
    TargetTable : 'HSRT'       
},
Columns : [                                                                
    { Name : 'Id' },
    { Name : 'Statu' },
    { Name : 'Durum' },
    { Name : 'FormNo' },
    { Name : 'WorkItemId' },
    { Name : 'GecenSure' },
    { Name : 'TebligatTarihi' },   
    { Name : 'BitisTarihi' }
],
XPath : '.',

Map : function(node) {                                                      
    this.Column('FormNo', node.Evaluate('General/FormNo'));
    this.Column('WorkItemId', node.Evaluate('General/WorkItemId'));       
    this.Column('TebligatTarihi', node.Evaluate('General/TebligatTarihi'));
    this.Column('Durum', node.Evaluate('General/Durum'));

}

});

by Han Solo (1.1k points)

1 Answer

+2 votes
 
Best answer

Merhaba;

Id değerini veritabanına geçmediğin için bu kod her çalıştığında yeni bir Id alanını otomatik olarak oluşturuyor. Dolayısıyla Map fonksiyonunun içine ilgili akış için değişmeyecek bir Id değeri geçersen yeterli olur. Ben örnek olması açısından işe ait Id alanını nasıl kullanacağını aşağıda belirttim. İlla böyle yapmak zorunda değilsin. Senin için başka bir değer Veritabanında tekillik sağlıyorsa onu da gönderebilirsin.

Map : function(node) {

this.Column('Id', $Instance.Id);                                  
this.Column('FormNo', node.Evaluate('General/FormNo'));
this.Column('WorkItemId', node.Evaluate('General/WorkItemId'));       
this.Column('TebligatTarihi', node.Evaluate('General/TebligatTarihi'));
this.Column('Durum', node.Evaluate('General/Durum'));

}

by Luke Skywalker (4.2k points)
selected by

Teşekkürler cevabınız için peki
Id tanımlamasını ilk adımda mı yoksa her adımda mı yapmalıyım?

Veritabanına yazma ihtiyacı duyduğunuz her adımda Id bilgisini geçmeniz doğru olur. Böylece sistem, bu Id'ye bakarak veritabanında bir kayıt yoksa yeni oluşturur varsa da ilgili kaydı günceller.

Çoook teşekkürlerr :)

...