Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

E-posta atılınca süreç başlatılması istenen e-posta hesabı ve ilgili sürece karar verdikten sonra ilk önce 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. 

Config section bölümü
<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. 

Ayağa kaldırılması gereken uygulamalar buraya yazılır.
 <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
 intervalE-posta okuma süresini saniye cinsenden belirlemek için kullanılır ve varsayılan değeri 60 saniyedir
 sessionUserEBIFlow web uygulamasına giriş yapacak kullanıcı ismini belirler.
 sessionPasswordEBIFlow 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.

AdÖzellik
Dummyveritabanında kullanıcı ismi olması yeterlidir şifre değerine bakmadan kullanıcıyı sisteme giriş yapmasını sağlar.
Organization2veritabanında bulunan kullanıcı ismi ve şifresi ile sisteme giriş yapmasını sağlar
LDAPveritabanında bulunan kullanıcı ismi ile LDAP sistemine giriş yaparak kullanıcının sisteme giriş yapmasını sağlar.
  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

AdÖzellik
url

E-posta servisi için gerekli url burada tutulur.

Örn:https://owa.companyname.com.tr/EWS/Exchange.asmx

autoDiscover

E-posta üzerinden tespit edilebilecek bir e-posta sistemi kullanııyor sa buraya ilgili e-postaı yazmak yeterlidir.

Örn:ebiflow@eczacibasi.com.tr

type

E-posta servis tipini belirler.

Örn:Exchange_SP1

userE-posta servisine bağlanacak kullanıcı bilgisini belirler.
passwordE-posta servisine bağlanacak şifre bilgisini belirler.
domain

E-posta servisinin domain bilgisini tutar.

Örn:ECZACIBASI

timeoutE-posta servisi için zaman aşımı süresini belirler.
processE-posta içerisine atılacak mail sonrası başlatılacak olan süreci belirler bu bölüm Id değeri tutar ve wflProcess tablosunda ilgili sürece ait Id değeri ile doldurulması gereklidir.
maxitemsE-posta servisine her bir bağlantı sonucunda başlatacağı maximum süreç sayısını belirler. varsayılan değeri 20 dir.
requestedHeaders

E-posta servisinden daha fazla bilgi almak için kullılan bölümdür.

AdÖzellik
X-Originating-IPEğer servis sağlayıcısı IP değerini tutabiliyorsa gönderen kişinin IP değerini almak için bu özellik Header bilgisine eklenir.
Return-Path
Gönderen kişiye ait header bilgisi altında Replay-To veya Return-pAth bilgisi dolu ise bu bilgiyi almak için kulalnılır.
X-MS-Exchange-Organization-AuthSource

Exchange servis kullanan organizasyonların login kaynak bilgisini tutar.

ÖRN:TAT13MBX01.tatlises.com.tr

 

5-Özellikler bölümünde detaylı olarak açıklanan alanlarla oluşturulmuş örnek konfigurasyon aşağıdadır. Burada adnan.senses EBIFlow kullanıcısı TATLISES domainine bağlı ibrahim.tatlises 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ı. 

Örnek mailReader konfigürasyonu
<mailReader interval="60" sessionUser="adnan.senses" defaultProcess="82B6D98B-D29D-4DF7-9DF5-F0A1D39C3F13">
    <servers>
      <server url="https://owa.eczacibasi.com.tr/EWS/Exchange.asmx" autoDiscoverUrl="" type="Exchange2007_SP1" 
              user="ibrahim.tatlises" password="epostasifresi" domain="TATLISES" 
              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 bir mail atıyoruz tanımladığımız e-posta adresine burada ibrahim.tatlises adresni kullandığımız için mail atmamız gereken adres bu. 

 

7-Atılan e-posta sonrası ilgili mailReader ygulaması bizim belirttiğimiz değer olan 60 saniyede bir servisi kontrol edecek sonrasında atılan mail e ulaşıp süreci başlatacak.

 

Süreç içerisinde ulaşılabilecek bilgiler

  1. Alıcı ismi
  2. Alıcı ile birlikte eklenen diğer kişilerin bilgileri
  3. Gönderen bilgisi
  4. Header bilgileri
  5. Konu
  6. İçerik bilgisi de html olarak gönderilip süreç içerisinde html olarak görüntülenecek. 
  7. Ek dosya aynı isim ve formatta sisteme eklenmiş olarak görüntülenecek.

Bu bilgiler doğrultusunda süreç konusu, içeriği ve ek bilgileri gibi bilgilerle süreç farklı adımlara yönlendirilebilir. Bilgileri aldıktan sonra geriye kalan işlemler EBIFlow un zengin scriptleri ile şekil alacak.

 

Süreç içerisine serviceData xml yolunu içersine ilgili bilgilerin geleceği yapı aşağıdaki gibidir. 

Xml yapısı
 <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
 email

e-posta içerik bilgilerinin tutulduğu bölümdür.

Adözellik
sendergönderen kişi bilgisini tutar
recepientsAlıcı bilgilerini çoklu olarak tutar receipt yolu altında tutar.
infosbilgi verilerini info altında çoklu olarak tutar.
headersistediğimiz başlık bilgilerini header altında name ve value olacak şekilde çoklu olarak tutar
subjectkonu bilgisini tutar.
bodyiçerik bilgisini hmtl olarak tutar.
 FileUploadInfo

 Ek dosya bilgilerinin tutulduğu bölümdür.File yolu altında tutar.

AdÖzellik
FileNameDosya ismini tutan alandır
IdDosyanın veri tabanına bırakıldığı Id değeridir
WorkItemIdİlgili iş adımının Id değeridir
OwnerDosyayı yükleyen kişinin bilgisi burada tutulur
HashDosyanın Hash değeri
Hash256Dosyanın Hash256 değeri
DateDosya yüklenme tarihi
ContentTypeİçerik tipi

 

Kullandığımız örnek süreçte bulunan test maili için gelen veri xml aşağıdaki gibidir. 

<serviceData>
  <email>
    <sender>orhan.pamuk@pamuk.com.tr</sender>
    <recepients>
      <recepient>ibrahim.tatlises@tatlises.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.tatlises.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>&nbsp;</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="ORHAN PAMUK">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>Lahmacun Fiyatları.pptx</FileName>
      <Id>cbac7b2a-1252-41b8-a3e7-3556e63268e2</Id>
      <WorkItemId>7bdc9cb4-8496-47c7-939a-97bf34a4b5c4</WorkItemId>
      <Owner display="ORHAN PAMUK">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. 

Örnek süreç iş sonrası script
  <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. 

  • No labels