E-posta hesabı ve ilgili sürece karar verdikten sonra ilk olarak EBI Servis Shell config dosyasında aşağıdaki değişiklikleri uyguluyoruz.
1--config içerisine yeni bir section eklediğimiz için section bölümüne bu alanı eklememiz gerekiyor.
<section name="mailReader" type="EBI.EBIFlow.MailReader.Server.Configuration.Section,EBI.EBIFlow.MailReader.Server"/>
2. E-postadan okuma için yeni bir uygulama başlatılacağı için applications altına application bilgisini eklememiz gerekiyor.
<application namespace="EBI.EBIFlow.MailReader.Server.Application" type="EBI.EBIFlow.MailReader.Server.ApplicationFactory,EBI.EBIFlow.MailReader.Server" />
3-Mail yoluyla başlatmak istediğiniz süreci wflProcesses tablosundan Id sini not almanız gerekmekte, örnek süreç uygulama dizinin de \Assemblies\SampleProcesses\Mail Receiver.process bulunmaktadır.Biz burada örnek süreci kulanarak anlatım yapacağız.
4-mailReader içinde ilgili alanları konfigure etmeden önce sahip olduğu özellikleri
Özellikler
Adı | Açıklama | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
interval | E-posta okuma süresini saniye cinsenden belirlemek için kullanılır ve varsayılan değeri 60 saniyedir | |||||||||||||||||||||||||||||||
sessionUser | EBIFlow web uygulamasına giriş yapacak kullanıcı ismini belirler. | |||||||||||||||||||||||||||||||
sessionPassword | EBIFlow web uygulamasına giriş yapacak kullanıcı şifresini belirler. | |||||||||||||||||||||||||||||||
logonProvider | EBIFlow uygulamasına giriş yapacak kullanıcı için kullanılacak logon sistemini belirler ve varsıylan değeri Dummy dir.
| |||||||||||||||||||||||||||||||
defaultProcess | mailReader içersine birden fazla server eklemesi yapılabilir ve eklenen server lara başlatılacağı süreç set edilmediğinde bu bölümdeki süreci kullanır. | |||||||||||||||||||||||||||||||
servers | Birden çok server sistemi burada barındırılır. | |||||||||||||||||||||||||||||||
server | E-posta bilgilerini tutar
|
5-Özellikler bölümünde detaylı olarak açıklanan alanlarla oluşturulmuş örnek konfigurasyon aşağıdadır. Burada john.wick EBIFlow kullanıcısı ECZACIBASI domainine bağlı john.wick e-posta adresine gelmiş e-posta sonrası process bölümünde verilmiş Id ye sahip süreci wflProcess tablosundan bularak süreci başlatacak.Eğer process e süreç Id si verilmeseydi defaultProcess de bulunan süreç çalıştırılacaktı.
<mailReader interval="60" sessionUser="john.wick" defaultProcess="82B6D98B-D29D-4DF7-9DF5-F0A1D39C3F13"> <servers> <server url="https://owa.sirketdomain.com.tr/EWS/Exchange.asmx" autoDiscoverUrl="" type="Exchange2007_SP1" user="john.wick" password="epostasifresi" domain="ECZACIBASI" timeout="0" process="82B6D98B-D29D-4DF7-9DF5-F0A1D39C3F13" maxitems="5" requestedHeaders="X-Originating-IP;Return-Path;X-MS-Exchange-Organization-AuthSource"/> </servers> </mailReader>
6-Tüm ayarları tamamladık. Örnek mail atıyoruz
7-Atılan e-posta sonrası ilgili mailReader uygulaması bizim belirttiğimiz değer olan 60 saniyede bir servisi kontrol edecek sonrasında atılan mail e ulaşıp süreci başlatıyor.
Süreç içerisinde ulaşılabilecek bilgiler
- Alıcı ismi
- Alıcı ile birlikte eklenen diğer kişilerin bilgileri
- Gönderen bilgisi
- Header bilgileri
- Konu
- İçerik bilgisi de html olarak gönderilip süreç içerisinde html olarak görüntülenecek.
- Ek dosya aynı isim ve formatta sisteme eklenmiş olarak görüntülenecek.
Süreç içerisine serviceData xml yolunu içersine ilgili bilgilerin geleceği yapı aşağıdaki gibidir.
<serviceData> <email> <sender /> <recepients> <recepient /> </recepients> <infos/> <headers> <header> <name /> <value/> </header> </headers> <subject /> <body /> </email> <FileUploadInfo> <File> <FileName /> <Id /> <WorkItemId /> <Owner /> <Hash /> <Hash256 /> <Date /> <ContentType /> </File> </FileUploadInfo> </serviceData>
Dönen veri özellikleri
Ad | Özellik | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
e-posta içerik bilgilerinin tutulduğu bölümdür.
| ||||||||||||||||||||
FileUploadInfo | Ek dosya bilgilerinin tutulduğu bölümdür.File yolu altında tutar.
|
Kullandığımız örnek süreçte bulunan test maili için gelen veri xml aşağıdaki gibidir.
<serviceData> <email> <sender>john.wick@eczacibasi.com.tr</sender> <recepients> <recepient>john.wick@eczacibasi.com.tr</recepient> </recepients> <infos/> <headers> <header> <name>X-Originating-IP</name> <value>[10.10.10.10]</value> </header> <header> <name>Return-Path</name> <value>null</value> </header> <header> <name>X-MS-Exchange-Organization-AuthSource</name> <value>TAT13MBX01.eczacibasi.com.tr</value> </header> </headers> <subject>Merhaba bu bir testtir</subject> <body> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="Generator" content="Microsoft Word 15 (filtered medium)" /> </head> <body lang="TR" link="#0563C1" vlink="#954F72"> <div class="WordSection1"> <p class="MsoNormal"> <span style="color:#1F497D;mso-fareast-language:TR"> Merhaba,<o:p></o:p> </span> </p> <p class="MsoNormal"> <span style="color:#1F497D;mso-fareast-language:TR"> <o:p> </o:p> </span> </p> <p class="MsoNormal"> <span style="color:#1F497D;mso-fareast-language:TR"> Bu bir testtir. <o:p></o:p> </span> </p> </p> </div> </body> </body> </email> <FileUploadInfo> <File> <FileName>EmailMessage.eml</FileName> <Id>2db442cb-c4f5-44e3-9a6e-1be1a2a6a9d1</Id> <WorkItemId>7bdc9cb4-8496-47c7-939a-97bf34a4b5c4</WorkItemId> <Owner display="JOHN WICK">d93094cf-efc2-43e5-af4f-5841bd06872b</Owner> <Hash>m/EPDgGCWMwshiTk2aQwJ8pVTEI=</Hash> <Hash256>EnHpvlFTGPH7D0ECwj9VpUDwgnwf/bAoWffJ72pynDA=</Hash256> <Date>2017-03-11 21:16:15Z</Date> <ContentType>message/rfc822</ContentType> </File> <File> <FileName>Ekli Dsya.pptx</FileName> <Id>cbac7b2a-1252-41b8-a3e7-3556e63268e2</Id> <WorkItemId>7bdc9cb4-8496-47c7-939a-97bf34a4b5c4</WorkItemId> <Owner display="JOHN WICK">d93094cf-efc2-43e5-af4f-5841bd06872b</Owner> <Hash>40SwGiVxqA8Zx7iqMKrAs6c5z2o=</Hash> <Hash256>DHYsheglT+OXYzYsflHMA6ZymdpFKXDJpR6IU5vj0PI=</Hash256> <Date>2017-03-11 21:16:16Z</Date> <ContentType>application/vnd.openxmlformats-officedocument.presentationml.presentation</ContentType> </File> </FileUploadInfo> </serviceData>
Gelen verileri süreç içerisinde kullanımı için hazırlanan örnek süreç scriptleri aşağıdaki gibidir.
<If> <Then> <Condition> <Not> <IsEmpty> <Value Culture="" Target="None">eval::/*/serviceData/email</Value> </IsEmpty> </Not> </Condition> <Perform> <Set Node="/*/Mail/From"> <Value Culture="" Target="None">eval::/*/serviceData/email/sender</Value> </Set> <Set Node="/*/Mail/Subject"> <Value Culture="" Target="None">eval::/*/serviceData/email/subject</Value> </Set> <Set Node="/*/Mail/Body"> <Value Culture="" Target="None">eval::/*/serviceData/email/body</Value> </Set> <ForEach Node="/*/serviceData/email/recepients/recepient"> <Insert Into="/*/Mail/Recepient/Data">::/*/Mail/Recepient/Template</Insert> <Set Node="/*/Mail/Recepient/Data/Template[last()]/email"> <Value Culture="" Target="None">eval::.</Value> </Set> </ForEach> <ForEach Node="/*/serviceData/email/headers/header"> <Insert Into="/*/Mail/Header/Data">::/*/Mail/Header/Template</Insert> <Set Node="/*/Mail/Header/Data/Template[last()]/Name"> <Value Culture="" Target="None">eval::./name</Value> </Set> <Set Node="/*/Mail/Header/Data/Template[last()]/Value"> <Value Culture="" Target="None">eval::./value</Value> </Set> </ForEach> <ForEach Node="/*/serviceData/FileUploadInfo/File"> <SetVariable Name="$(Hash)"> <Value Culture="" Target="None">eval::./Hash</Value> </SetVariable> <SetVariable Name="$(Hash256)"> <Value Culture="" Target="None">eval::./Hash256</Value> </SetVariable> <SetVariable Name="$(FileName)"> <Value Culture="" Target="None">eval::./FileName</Value> </SetVariable> <SetVariable Name="$(ContentType)"> <Value Culture="" Target="None">eval::./ContentType</Value> </SetVariable> <SetVariable Name="$(Id)"> <Value Culture="" Target="None">eval::./Id</Value> </SetVariable> <SetVariable Name="$(WorkItemId)"> <Value Culture="" Target="None">eval::./WorkItemId</Value> </SetVariable> <SetVariable Name="$(OwnerId)"> <Value Culture="" Target="None">eval::./Owner</Value> </SetVariable> <SetVariable Name="$(OwnerName)"> <Value Culture="" Target="None">eval::./Owner/@display</Value> </SetVariable> <SetVariable Name="$(Date)"> <Value Culture="" Target="None">eval::./Date</Value> </SetVariable> <SetVariable Name="$(TemplateId)"> <Value Culture="" Target="None">NewGuid</Value> </SetVariable> <Insert Into="/*/Mail/Attachments/Details"><Template guid="$(TemplateId)"> <WorkItemId>$(WorkItemId)</WorkItemId> <Owner display="$(OwnerName)">$(OwnerId)</Owner> <Date>$(Date)</Date> <FileName>$(FileName)</FileName> <Id>$(Id)</Id> <ContentType>$(ContentType)</ContentType> <Hash>$(Hash)</Hash> <Hash256>$(Hash256)</Hash256> </Template></Insert> </ForEach> </Perform> </Then> </If>
Tüm bu işlemlerin sonunda başlatma adımı Onayla aksiyonu ile ilerletilerek sonraki adıma düşecektir. Burada onayla adımından sonra bir modül tanımlanarak içerisinde farklı yollar için yönetim yapılabilir.