- 14 Apr 2022
- 1 Minute to read
- DarkLight
Makro Aktivitesinde Akış Ekindeki Dosya Kartı Belgelerini Kabinete Taşıma
- Updated on 14 Apr 2022
- 1 Minute to read
- DarkLight
Makro aktivitesinde akış ekinde bulunan dosya kartı kaydına bağlı klasörlerin ve bu klasörler içindeki belgelerin Müşteri Kodu değerine göre belirlenen kabinet altında müşteri kodunun 2 basamaklı değerine göre alt klasörlerin oluşturulması ve en son klasörün müşteri kodunun tamamıyla oluşturulan bir klasör içerisinde belgelerin dosya kartında bulundukları klasörlerle beraber taşıması işlemini gerçekleştirilecek kod örneği aşağıda paylaşılacaktır.
Senaryomuz gereği Müşteri kodumuz 0654321 olsun.
Dosya Kartında bu müşteri numarasına ait iki adet belge olsun. Dosya Kartında birinci belge Resmi Belgeler isimli klasörde diğeri de Yazışmalar isimli klasör içinde bulunsun.
Hedef Kabinet ismi "Müşteri" olarak belirlendi.
Makro çalıştığında belgeler Müşteri Kabineti içerisinde aşağıdaki gibi görülecektir.
Bu işlemi gerçekleştiren kod aşağıdaki gibidir.
try
{
Log(string.Format("Belgelerin kabinetlere dağılması makrosu başladı.workflowId : {0} , attachment Id : {1} ",WorkflowId,AttachmentId));
LoadObject();
LoadAttachment();
Log("Kart getiriliyor.");
Log("object ıd : " + (string)AttachmentData.getAttribute("OBJECT_ID"));
a_Card card2 = Server.productivity.rCard.GetCard(new ObjectID((string)AttachmentData.Get("OBJECT_ID")), true);
Log("1");
ObjectID obid;
Log("object id : " + (string)AttachmentData.getAttribute("OBJECT_ID"));
string targetPath = string.Empty;
string customerID = string.Empty;
Log("Kart bilgileri alınıyor.");
foreach (a_SeperatorInfo item in card2.CardSeperator.Seperators)
{
Log("Seperatör bilgileri yükleniyor.");
Log("İşlem yapılan seperatör:" +item.SeperatorName);
obid = item.SeperatorId;
Log("Kart oluştu, object Id : "+ obid.ToString());
a_NavigationInfo getFolderFile =Server.productivity.rNavigation.GetFolderFiles(string.Empty, obid, true,2,1,
string.Empty,string.Empty,string.Empty,string.Empty,
string.Empty,string.Empty);
foreach (PW_SYSOBJECT obj in getFolderFile.folderObjects)
{
ObjectID fileObjectId = new ObjectID(obj.OBJECT_ID);
customerID = ((string)AttachmentData.getAttribute("MUSTERI_KODU")).PadLeft(7,"0"[0]);
Log("İşlem yapılan belge: {0}"+ obj.OBJECT_NAME);
Log("Taşınan belgenin nesne numarası "+ fileObjectId);
StringBuilder sb = new StringBuilder(@"Kabinetler\Müşteri");
string strA = customerID;
string[] split = new string[strA.Length / 2 + (strA.Length % 2 == 0 ? 0 : 1)];
for (int i = 0; i < split.Length - 1; i++)
{
sb.Append("\\");
sb.Append(strA.Substring(i * 2, i * 2 + 2 > strA.Length ? 1 : 2));
}
sb.Append("\\");
sb.Append(customerID);
string targetPath2 = string.Format(sb.ToString() + "\\Müşteri Resmi Evrakları\\{0}",item.SeperatorName);
Log("Hedef kabinet:"+targetPath2);
a_PathInfo pi1 = Server.productivity.rNavigation.CreateFolderByPath(targetPath2, new ObjectID((string)AttachmentData.getAttribute("ACL_ID")), false);
if (pi1.ErrorCode != 0) throw new Exception(string.Format("Kabinet yolu yaratılamadı!"));
ObjectID targetFolderId = new ObjectID(pi1.ObjectList[pi1.ObjectList.Count - 1]);
ObjectID currentFolderId = new ObjectID(obj.OBJECT_ID);
Server.productivity.rNavigation.MoveObject(fileObjectId, targetFolderId, 1);
}
}
SaveObject();
}
catch(Exception ex)
{
Log("Hata:"+ex.Message+ "-" + WorkflowId);
var hata = string.Empty;
hata=ex.Message;
if(hata=="Object reference not set to an instance of an object."){
FormData.Set("MAKRO_HATASI",hata + "-" + WorkflowId + " Nolu Akış Ekinde Dosya Kartı Bulunamadı!...");
FormData.Set("MAKRO_DURUMU","Hata");
}
else
{
FormData.Set("MAKRO_HATASI",hata);
FormData.Set("MAKRO_DURUMU","Hata");
}
SaveObject();
return true;
}
Örnek bir çalışmanın videosu aşağıda paylaşılmıştır.