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

Categories

0 votes
82 views
Bir formda, farklı bir sürece ait bir workitem'a link vermek istiyorum. Örn. A süreci formunda, bir alana B sürecindeki bir form numarasını yazmak ve bu numarayı yazdıktan sonra, ekranda o sürece bir link oluşturmak istiyorum.

Aşağıdaki kod parçasını (Xml Query olarak) A süreci formuna yazdığımda, bu sorgunun sadece A sürecine ait formların linklerini getirdiğini görüyorum.

Sorgunun B sürecine ait linki getirmesini nasıl sağlayabilirim?

let $instance := unordered(//Instance[Number=$eskiOlurNo])[last()]
let $fId := unordered($instance/WorkItems/WorkItem/Id)[last()]
return
<OlurBilgileri>
<EskiOlurLinkId>{$fId/text()}</EskiOlurLinkId>
</OlurBilgileri>
by Boba Fett (400 points)

3 Answers

0 votes

unordered(//Instance[Number=$eskiOlurNo])[last()] xpath ifadesi o an çalışmakta olan sürecin instance xmlleri için çalışır, diğer sürece ait veritabanı farlı bir xml database i içinde olduğundan bu verilere erişmeniz zordur. Ancak kaynak süreç üzerinde değişiklik yapma imkanınız varsa ilgili workitem id lerini domain xml veritabanına kaydetdikten sonra diğer süreç içerisinden erişebilirsiniz.

by Han Solo (1.7k points)
0 votes

Süreci değiştirmek istemezseniz eğer de o zaman, her ne kadar her sürecin baktığı kendi veritabanı olmasına rağmen başka süreçlerin veritabanlarına da erişebilirsiniz. Bunu iki farklı şekilde yapabilirsiniz:

  1. Çekmek istediğiniz sürecin bilgilerini, süreç id sini sorgunun başında belirterek alabilirsiniz. Bu yüzden db:open("b6f71b7d-bd10-46fc-8441-faaa95aa778a")/Instance  şeklinde yazarsanız istediğiniz sürecin veritabanına ulaşabilirsiniz. (Oradaki Id yerine siz verisini çekmek istediğiniz sürecin Id sinin yazacaksınız)
  2. Form üstünde bulunan Form Query sorgusuna tıklayıp XML ini açtığınızda Collection="" kısmına yine süreç Id sini yazarsanız, tüm sorgunuz o veritabanı içinde çalışmaya başlayacaktır.

Not: Süreç Id sine erişmek için, Emakin ana sayfasından süreci seçin. Düzenle butonunun olduğu ekranda, browser arama çubuğunda bulunan linkin en sonundaki Id, süreç id sidir.(Zaten Process yazısını da görebilirsiniz)

by Luke Skywalker (4.3k points)
0 votes

var pid = $Domain.HasProcess("Address Book");
$Xml.SetValue('Path/to/pid', pid);

Tırnak içindeki alana id'sini öğrenmek istediğiniz sürecin ismini yazabilirsiniz. Sunucuda o isimde bir süreç yoksa değer boş dönecektir.

bu değeri form xml'ine yazdıktan sonra sorgu parametresi olarak kullanabilirsiniz:

let $adrbook := db:open($pid)/Instance

by Han Solo (1.7k points)
...