Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagexml
titleInstance Data
collapsetrue
<Instance>
  <Id>03252c09<Id>2fbeff56-32622574-46e74950-a56191b2-9ae6aeade420<11eec2c63586</Id>
  <Number>95<<Number>217</Number>
  <TestMode>True</TestMode>
  <Culture>en<<Culture>en-US</Culture>
  <State>Completed</State>
  <Start>2019-03-04T1114T11:2402:4209.62569571982068+03:00</Start>
  <End>2019-03-04T1114T11:2605:4101.67292735890176+03:00</End>
  <WorkItems>
    <WorkItem>
      <Id>dec1eb1e<Id>cd4d51a2-e2080ca0-4f804b2d-a4caaa5c-1eaa90ff4fea<a9d8de07243b</Id>
      <Name>Ayarlar<<Name>Expense Form</Name>
      <Caption>Expense <Caption>Ayarlar<Form</Caption>
      <State>Completed</State>
      <Start>2019-03-04T1114T11:2402:4209.62569571982068+03:00</Start>
      <End>2019-03-04T1114T11:2604:4122.43261518982862+03:00</End>
      <Duration>1<Duration>2.9801153233333333<2283346566666666</Duration>
      <SelectedActionId>aecd0dfe<SelectedActionId>05671ad9-f71465d9-430941f6-b770aa84-d7758634b327<20ce2a984676</SelectedActionId>
      <SelectedAction>Kaydet<<SelectedAction>Submit</SelectedAction>
      <IsDeadlined>False</IsDeadlined>
      <DeadlineDate/>
      <Previous/>
      <CompletedBy Caption="Bülent Yüksel">b8e60233-7fce-4d8d-a597-acd4fd90ce05</CompletedBy>
      <DataId>6e890fca<DataId>f2e38788-ac409dbc-4daf4e80-ba5b8c93-5080410c8ed6<0b9410c07642</DataId>
      <DataRoot>Ayarlar<<DataRoot>ExpenseForm</DataRoot>
    </WorkItem>
    <WorkItem>
  </WorkItems>
</Instance>

Form Data

Similar to the instance metadata, form content generated by the process also gets stored into process database and is enclosed within <form> tags. Every time a work item is completed, its existing XML form data gets updated to reflect the latest changes made on the form.

See below for an XML example of form data:

Code Block
languagexml
titleForm Data
collapsetrue
<form Id="59fb012d-9f9e-487a-8221-c22df25a07f2">
  <Data>
    <Baslatan>
      <Personel Caption="Merve Karakus" Type="User" Domain="c62eddc6-f22f-4ddd-8f92-62f419e67ec6">a762694d-f6bc-4325-bb17-0af06b683fde</Personel>    <Id>c026a945-b309-42ee-a335-eade87c79e23</Id>
      <Name>Expense Payment</Name>
      <Caption>Expense Payment</Caption>
      <State>Completed</State>
      <Start>2019-03-14T11:04:44.2056377+03:00</Start>
      <End>2019-03-14T11:04:53.2101814+03:00</End>
      <Duration>0.15007572833333332</Duration>
      <SelectedActionId>4e7a6cb3-b529-492f-b796-6764c86f9956</SelectedActionId>
      <SicilNo>1111<<SelectedAction>Completed</SicilNo>SelectedAction>
      <Departman><IsDeadlined>False</IsDeadlined>
      <DeadlineDate/>
    <Id>d37fae6c  <Previous>8c97b0af-29a94545-4d2649ed-b5079539-b0e601a194fa<f38ca3284953</Id>Previous>
      <CompletedBy  <Name>Satış</Name>Caption="Bülent Yüksel">b8e60233-7fce-4d8d-a597-acd4fd90ce05</CompletedBy>
      </Departman><DataId>f2e38788-9dbc-4e80-8c93-0b9410c07642</DataId>
      <Eposta>merve.karakus@6kare.com</Eposta><DataRoot>ExpenseForm</DataRoot>
    </WorkItem>
  <CepTel/>  <WorkItem>
  </Baslatan>     <Oneri>
      <Tarih>2019-01-28T12:04:02.5593491Z</Tarih><Id>7c91dc2c-69ad-4b95-b683-eaded3458934</Id>
      <Baslik>Satış<Name>Expense listelerinde esnekliği sağlayacak fiyat oranlarının olması</Baslik>Form Information</Name>
      <Kategoriler><Caption>Expense Form Information</Caption>
      <Id>0103ffd5-6877-420f-9c2c-837af44690ef</Id><State>Completed</State>
        <Name>Satış - Pazarlama</Name><Start>2019-03-14T11:04:53.2101814+03:00</Start>
      <End>2019-03-14T11:05:01.5835033+03:00</End>
      <<Duration>0.13955536500000001</Kategoriler>Duration>
      <Etiketler><SelectedActionId>6b124053-b249-441b-8e3f-ce114c073da2</SelectedActionId>
      <SelectedAction>Close</SelectedAction>
  <Etiket>    <IsDeadlined>False</IsDeadlined>
      <Id>775e0cc7-0a6b-40c0-b73b-4cb93d0442d1</Id><DeadlineDate/>
      <Previous>c026a945-b309-42ee-a335-eade87c79e23</Previous>
      <CompletedBy Caption="Bülent Yüksel">b8e60233-7fce-4d8d-a597-acd4fd90ce05</CompletedBy>
 <Name>Satış arttırma</Name>    <DataId>f2e38788-9dbc-4e80-8c93-0b9410c07642</DataId>
    </Etiket>  <DataRoot>ExpenseForm</DataRoot>
    </Etiketler>WorkItem>
    <WorkItem>
 <Onerenler>         <Id>K<<Id>8c97b0af-4545-49ed-9539-f38ca3284953</Id>
      <Name>Manager  <Name>Kişisel<Approval</Name>
      <Caption>Manager <Approval</Onerenler>Caption>
      <YayinSekli><State>Completed</State>
        <Id>A</Id><Start>2019-03-14T11:04:23.0425214+03:00</Start>
        <Name>Açık</Name><End>2019-03-14T11:04:44.2056377+03:00</End>
      <<Duration>0.352718605</YayinSekli>Duration>
      <Detay/><SelectedActionId>8ee3e1f2-6d82-4bf2-be00-e6263d8d61c4</SelectedActionId>
      <IlgiliDepartman Caption="Satış" Type="" Domain="">d37fae6c-29a9-4d26-b507-b0e601a194fa</IlgiliDepartman><SelectedAction>Approve</SelectedAction>
      <DigerOnerenler<IsDeadlined>False</>IsDeadlined>
      <OneriNo>ONR-46</OneriNo><DeadlineDate>2019-03-21T09:00:00+03:00</DeadlineDate>
      <OneriId>8051ab79<Previous>cd4d51a2-a37d0ca0-4a914b2d-adfaaa5c-3f300af9c02c<a9d8de07243b</OneriId>Previous>
      <CompletedBy  <AyinOnerisi/>Caption="Bülent Yüksel">b8e60233-7fce-4d8d-a597-acd4fd90ce05</CompletedBy>
      <PuanlamayiGecti>true</PuanlamayiGecti><DataId>f2e38788-9dbc-4e80-8c93-0b9410c07642</DataId>
      <Sahibi Caption="" Type="" Domain=""/><DataRoot>ExpenseForm</DataRoot>
    </WorkItem>
 <Donem>
        <Ay>
          <Id>01</Id>
          <Name>Ocak</Name>
        </Ay>
        <Yil> </WorkItems>
</Instance>

Form Data

Similar to the instance metadata, form content generated by the process also gets stored into process database and is enclosed within <form> tags. Every time a work item is completed, its existing XML form data gets updated to reflect the latest changes made on the form.

See below for an XML example of form data:

Code Block
languagexml
titleForm Data
collapsetrue
<form Id="f2e38788-9dbc-4e80-8c93-0b9410c07642">
  <ExpenseForm>
    <PersonnelInformation>
      <Owner Caption="Bülent Yüksel" Type="User" Domain="cadf027b-8cc3-41e1-b0e2-ed856a0579fa">b8e60233-7fce-4d8d-a597-acd4fd90ce05</Owner>
      <RegistryNumber>4444</RegistryNumber>
      <Department Caption="Research and Development">c647464d-3745-4373-8309-0cfa0a34ae70</Department>
      <Location Caption=""/>
    </PersonnelInformation>
    <AdvanceInfo>
      <Description/>
      <Amount/>
      <Unit/>
    </AdvanceInfo>
    <ExpenseInformation>
      <Date>2019-03-14T11:02:09.2821462+03:00</Date>
    </ExpenseInformation>
    <ExpenseList>
      <Expense>
        <Id/>
        <Date>2019-03-06T00:00:00+03:00</Date>
        <ExpenseTypeGroup Caption="Transport">16</ExpenseTypeGroup>
        <ExpenseType Caption="Highway">1601</ExpenseType>
        <CostArea/>
        <DocumentDate/>
        <Reason>taxi fare to customer</Reason>
        <DocumentNumber/>
        <DocumentTitle/>
        <DocumentTaxNumber/>
        <Amount>18.00</Amount>
        <Unit Caption="US Dollar">USD</Unit>
        <CrossRate>1.00</CrossRate>
        <ConvertedAmount>18</ConvertedAmount>
        <VAT Caption="8">8</VAT>
      </Expense>
    </ExpenseList>
    <Discussion>
      <ns1:Entries xmlns:ns1="http://schemas.emakin.com/forms/controls"/>
    </Discussion>
    <SetupCheck>
      <FirstManager>c0d262ef-afcb-4ec5-8cba-b402ef13727b</FirstManager>
      <Finance>126945af-5ff5-49ef-8f55-0b702ad06530</Finance>
    </SetupCheck>
  </ExpenseForm>
</form>

Domain Database

For every domain hosted on Emakin, a separate XML database is created. This database is reserved for only special use cases and Emakin does not store any data by default.

General usage examples are as follows

See below for an XML example of a custom settings data:

Code Block
languagexml
titleSettings Data
collapsetrue
<LRDictionary>
  <Definitions>
    <HRGroup Caption="Designer Specialist">439c9457-297e-47b4-b002-0e82ae1c94d0</HRGroup>
    <HRManager Caption="None"/>
    <LeaveTypes>
      <LeaveType>
        <Name>Annual</Name>
        <Code>A</Code>
        <SubLeaveTypes/>
        <Name_tr>Yıllık</Name_tr>
        <IncludeOnCalculation>True</IncludeOnCalculation>
        <HasSubTypes>false</HasSubTypes>
      </LeaveType>
      <LeaveType>
        <Name>Excuse</Name>
        <Code>E</Code>
        <SubLeaveTypes>
          <SubLeaveType>
            <Id>ac9572db-7045-4a37-a170-1781d56483d3</Id>
            <Name>Sickness</Name>
            <Name_tr>Hastalık</Name_tr>
          </SubLeaveType>
          <SubLeaveType>
            <Id>b2caff73-f308-4b01-979c-321dcb123056</Id>
            <Name>Paternity</Name>
            <Name_tr>Babalık</Name_tr>
          </SubLeaveType>
          <SubLeaveType>
            <Id>23cc603f-d037-4acc-90c9-8dc26aefb05a</Id>
            <Name>Death</Name>
            <Name_tr>Vefat</Name_tr>
          </SubLeaveType>
          <SubLeaveType>
            <Id>bc1f4fbc-1b81-4e92-9daa-b91ca39af77a</Id>
            <Name>Other</Name>
            <Name_tr>Diğer</Name_tr>
          </SubLeaveType>
        </SubLeaveTypes>
        <Name_tr>Mazeret</Name_tr>
        <IncludeOnCalculation/>
        <HasSubTypes>true</HasSubTypes>
      </LeaveType>
    </LeaveTypes>
    <Calculation>var today;
$Calendar2.GetToday('', function(newDate) {
    today = newDate;
});

var results = $Database.Get({
    Parameters: {
        TargetSchema: 'HR',
        TargetTable: 'Employee'
    },
    Columns: [{
            Name: 'Id'
        },
        {
            Name: 'StartDate'
        },
        {
            Name: 'LastAllowanceCalcDate'
        },
        {
            Name: 'RegistryNumber'
        }
    ],
    Where: {
        Criteria: [{
                Name: 'LastAllowanceCalcDate',
                Value: today,
                Comparison: 'LessThanOrEqualTo',
                Condition: 'Or'
            },
            {
                Name: 'LastAllowanceCalcDate',
                Value: null,
                Comparison: 'Equals'
            }
        ]
    }
});

var tempDate = DateTimeOffset.parse('2007.01.01');

console.warn('Script Calculation Started');

results.Each(function() {
    if ((this.RegistryNumber != null) &amp;&amp; (this.StartDate != null)) {

        var tickerDate;
				
        if  (this.LastAllowanceCalcDate == null) {
            this.LastAllowanceCalcDate = this.StartDate;
			console.warn("LastAllowanceCalcDate not found, using StartDate");
        }
				
        console.warn('Calculation started for ' + this.RegistryNumber + " - " + this.LastAllowanceCalcDate );
		
		console.warn('Last Calculation Date is ' + this.LastAllowanceCalcDate.getFullYear() + '.' + this.LastAllowanceCalcDate.getMonth() + '.' + this.LastAllowanceCalcDate.getDate());

        tickerDate = this.LastAllowanceCalcDate;
			
        while (tickerDate &lt; today) {
		
			console.warn('Ticker Date is ' + tickerDate.getFullYear() + '.' + tickerDate.getMonth() + '.' + tickerDate.getDate());
			
            var allowance = 0;

            if (this.StartDate.getMonth() == tickerDate.getMonth()) {

                var diff = tickerDate.getFullYear() - this.StartDate.getFullYear();

                if (this.RegistryNumber == '151917') {
                    allowance = 29;
                } else {
                  <Id>2019</Id>  if (this.StartDate &lt; tempDate) {
     <Name>2019</Name>         </Yil>       </Donem>   if (diff &gt;=  <SonucAciklama/>0 &amp;&amp; diff &lt;= 5) {
    </Oneri>     <Ciktilar>       <Cikti>         <Mevcut/>   allowance = 17;
   <Yeni/>       </Cikti>     </Ciktilar>     <Dokumanlar>    } else if (diff <Dokuman>&gt; 5 &amp;&amp; diff &lt;= 10) {
  <Id Caption="" Url=""/>         <Aciklama/>       </Dokuman>     </Dokumanlar>   allowance = <Form>22;
      <InstanceNo>342</InstanceNo>       <Id>8a2edd3d-5bc4-4335-9201-1e19c7027bb5</Id>           <LastWorkItemId>9e2e0618-b444-45ff-8941-a293cd20e830</LastWorkItemId>
      <State>Öneri Onaylandı</State>} else if (diff &gt; 10) {
        <TaskName>Öneri Değerlendirme</TaskName>       <Karar>Onay</Karar>     </Form>     <Puanlama/>  allowance = 27;
<Sorular>       <Soru>         <Soru>Mevcut durumu açıklayınız/tanımlayınız.</Soru>      }
  <Aciklama>Öneriniz ile ilgili detaylı bilgileri yazınız.</Aciklama>         <Cevap>Esnek fiyat politikası olmadığı için} müşteri kaybediyoruz.</Cevap>else {
      </Soru>       <Soru>         <Soru>Önerdiğiniz durumu veif çözümü açıklayınız/tanımlayınız.</Soru>
        <Aciklama>Öneriniz ile ilgili faydaları listeleyiniz.</Aciklama>(diff &gt;= 0 &amp;&amp; diff &lt;= 5) {
               <Cevap>Testt</Cevap>       </Soru>     </Sorular> allowance = 17;
 <Projelendirme>       <Karar>         <Id>G</Id>       } else <Name>Geliştirmeif (Yatırım gerektiren öneriler)</Name>
  diff &gt; 5 &amp;&amp; diff &lt;= 14) {
   </Karar>       <Yorum>Test</Yorum>       <BaslangicTarihi/>       <BitisTarihi/>    allowance </Projelendirme>= 22;
   <OnDegerlendirmeOnaylar>       <MerkezOnay>         <Durum>Uygun</Durum>     } else if (diff <Onayci Caption="Merve Karakus" Type="User" Domain="c62eddc6-f22f-4ddd-8f92-62f419e67ec6">a762694d-f6bc-4325-bb17-0af06b683fde</Onayci>&gt; 14) {
          <Tip>Merkez</Tip>         <WorkItemId>a872aa30-72fe-48d3-9bf0-f5d0812eac8a</WorkItemId>         <Yorum/>
allowance = 26;
     </MerkezOnay>       <FabrikaOnay>         <Durum>Uygun</Durum>   }
     <Onayci Caption="" Type="" Domain=""/>         <Tip>Fabrika</Tip>   }
     <WorkItemId>3a2031f8-900c-4ae0-9b19-988ec6f3fb93</WorkItemId>         <Yorum/>  }

   </FabrikaOnay>       <IsVisible>false</IsVisible>     </OnDegerlendirmeOnaylar> if  </Data>
</form>

Domain Database

For every domain hosted on Emakin, a separate XML database is created. This database is reserved for only special use cases and Emakin does not store any data by default.

General usage examples are as follows

See below for an XML example of a custom settings data:

Code Block
languagexml
titleSettings Data
collapsetrue
<OneriAyarlari>
  <Sorular>(allowance &gt;= 0) {     
          <Soru>       <Soru>Mevcut durumu açıklayınız/tanımlayınız.</Soru> var strDate = tickerDate.getFullYear() + '.' <Aciklama>Öneriniz ile ilgili detaylı bilgileri yazınız.</Aciklama>+ tickerDate.getMonth() + '.' + this.StartDate.getDate();
      <Cevap/>     </Soru>     <Soru>    var allowedDate  <Soru>Önerdiğiniz durumu ve çözümü açıklayınız/tanımlayınız.</Soru>
      <Aciklama>Öneriniz ile ilgili faydaları listeleyiniz.</Aciklama>= DateTimeOffset.parse(tickerDate.getFullYear() + '.' + tickerDate.getMonth() + '.' + this.StartDate.getDate());
             <Cevap/>     </Soru>   </Sorular>var allowanceForCurrentYear =  allowance <Kategoriler>
    <Kategori>- Math.round((allowance * (allowedDate.getMonth() / 12)));
      <Kategori>         <Id>4b82b4de-2af4-45ea-9f05-12306a5ed399</Id>     InsertNewAllowance(this.Id, allowance, strDate, allowanceForCurrentYear);
<Name>Çevre ve İSG</Name>       </Kategori>       <Ekipler>}
        <Ekip>    }

     <Ad>Çevre</Ad>       $Calendar2.GetStandardCalendar().AddMonths(tickerDate, 1, function(newDate) {
<Id Caption="Tuğçe Özoğul " Type="User" Domain="c62eddc6-f22f-4ddd-8f92-62f419e67ec6">814b376b-e82c-44cf-b033-eaf6c9867422</Id>         </Ekip>  tickerDate = newDate;
    <Ekip>        });
  <Ad>İSG</Ad>      }

   <Id Caption="Emre Mutlu" Type="User" Domain="c62eddc6-f22f-4ddd-8f92-62f419e67ec6">267060bc-58a0-4088-a77a-9029ce3eba08</Id>
   this.LastAllowanceCalcDate = today;

    </Ekip>    console.warn('Calculation ended for </Ekipler>' + this.RegistryNumber);

   <ProjeLideri Caption="Merve Karakus" Type="User" Domain="c62eddc6-f22f-4ddd-8f92-62f419e67ec6">a762694d-f6bc-4325-bb17-0af06b683fde</ProjeLideri>
    </Kategori>
    <Kategori>
      <Kategori>
        <Id>0103ffd5-6877-420f-9c2c-837af44690ef</Id> }else{
	console.warn("RegistryNumber Number or Employee Start Date not found");
	}

});

console.log('Script Calculation Ended');

results.Save();


function InsertNewAllowance(employeeId, daysGained, strAllowedDate, daysGainedForCurrentYear) {
        
   <Name>Satış -var Pazarlama</Name>allowedDate   = DateTimeOffset.parse(strAllowedDate);    </Kategori>

	var leaveResults = $Database.Get({
		Parameters: <Ekipler>{
			TargetSchema: 'HR',
			TargetTable: 'LeaveAllowance'
		},
		Columns: [{
 <Ekip>
          <Ad>Satış - Pazarlama</Ad>
          <Id Caption="Merve Karakus " Type="User" Domain="c62eddc6-f22f-4ddd-8f92-62f419e67ec6">a762694d-f6bc-4325-bb17-0af06b683fde</Id>				Name: 'Id'
			}
		],
		Where: {
			Criteria: [{
					Name: 'AllowedDate',
					Value: allowedDate,
					Comparison: 'Equals'
				},
				{
					Name: 'Employee',
					Value: employeeId,
					Comparison: 'Equals'
				}
			]
		}
	});
	
	if(leaveResults.RowCount() &lt;= 0) {
        
</Ekip>       </Ekipler>
      <ProjeLideri Caption="Tuğçe Özoğul" Type="User" Domain="c62eddc6-f22f-4ddd-8f92-62f419e67ec6">814b376b-e82c-44cf-b033-eaf6c9867422</ProjeLideri>
    </Kategori>
  </Kategoriler>
  <Etiketler> console.warn('New allowance detected for date : ' + strAllowedDate);
        
        var table = $Database.Empty({
          <Etiket>  Parameters: {
   <Id>2d8a50d9-5a3b-4559-bc5f-851a053ea63b</Id>       <Name>Yeni ürün/iş geliştirme</Name>     </Etiket>TargetSchema: 'HR',
    <Etiket>       <Id>cebfcf9b-949a-4258-8809-26a140c1f6cf</Id>     TargetTable: 'LeaveAllowance'
<Name>Ürün kalitesini arttırma</Name>     </Etiket>     <Etiket>}
      <Id>2ee54166-dcc7-4f3c-a6b6-69984f472d2c</Id>  });

   <Name>Enerji verimliliği</Name>     </Etiket>
 table.Add({
   <Etiket>       <Id>50bfde54-fce3-49a6-95de-e2f2c3969ddd</Id>  Id: Script.NewId(),
   <Name>Süreç  iyileştirme (Zaman tasarrufu)</Name>     </Etiket>
Employee: employeeId,
   <Etiket>       <Id>775e0cc7-0a6b-40c0-b73b-4cb93d0442d1</Id>  AllowedDate: allowedDate,
   <Name>Satış arttırma</Name>     </Etiket>   </Etiketler>
DaysGained: daysGained,
 <OneriKabulKurulu>     <Merkez>       <Uye Caption="Merve Karakus" Type="User" Domain="c62eddc6-f22f-4ddd-8f92-62f419e67ec6">a762694d-f6bc-4325-bb17-0af06b683fde</Uye>WorkItemId: $WorkItem.Id,
           <Uye Caption="Bülent Yüksel" Type="User" Domain="c62eddc6-f22f-4ddd-8f92-62f419e67ec6">47222678-1c72-42fc-91d8-7a379ff37b06</Uye>
    </Merkez> FormNo: $Instance.Number,
            DaysGainedForCurrentYear : daysGainedForCurrentYear
    <Fabrika>    });

 <Uye Caption="Merve Karakus" Type="User" Domain="c62eddc6-f22f-4ddd-8f92-62f419e67ec6">a762694d-f6bc-4325-bb17-0af06b683fde</Uye>   table.Save();    <Uye
Caption="Bülent Yüksel" Type="User" Domain="c62eddc6-f22f-4ddd-8f92-62f419e67ec6">47222678-1c72-42fc-91d8-7a379ff37b06</Uye>
    </Fabrika>
  </OneriKabulKurulu>
  <Puanlama> }
}</Calculation>
    <Manager2Approval/>
     <KategoriOnemKatsayisi>1.50</KategoriOnemKatsayisi><SecondManagerApprovalExcluded/>
    <PuanlamayiGecmeLimiti>5<<DayCountForWeek>5</PuanlamayiGecmeLimiti>DayCountForWeek>
  </Puanlama>Definitions>
</OneriAyarlari>LRDictionary>