OAF Region – Workflow İlişkisi
Merhaba,
Workflow bildirim mesajları içerisinde daha çok PL/SQL ile üretilmiş HTML dokümanlar veya direk olarak mesaj içeriğine yazımlar uygulanmaktadır. Bu yazıda ise az bilinen Oracle Workflow bildirim mesajları içerisine OAF Region ekleme işlemini örnekleyeceğim.
Öncelikle daha önceden yaptığımız OAF sayfa örneğini kopyalayıp ayrı bir Standalone Region haline getireceğiz. İlgili örneği yapmayanlar veya tekrar bakmak isteyenler buradan ulaşabilirler.
Bu örnek için aşağıdaki işlemler adım adım uygulanır;
1. JDeveloper açılır ve webui paketine sağ tıklanıp New seçilir.
2. Web Tier -> OA Components -> Region seçilerek OK tıklanır.
3. Yeni Region bilgileri aşağıdaki gibi girilir.
Name | Package | Style |
---|---|---|
XxTableDmlRN | xxntc.oracle.apps.per.aniltablo.dml.webui | stackLayout |
4. Region oluştuktan sonra aşağıdaki özellikleri değiştirilir. Controller Class yeni oluşturulur ve daha önceki örnekten kopyalanır.
Özellik | Değer |
---|---|
Controller Class | xxntc.oracle.apps.per.aniltablo.dml.webui.XxTableDmlRNCO |
AM Definition | xxntc.oracle.apps.per.aniltablo.dml.server.XxTableDmlAM |
Standalone | false |
Controller Class:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
/*===========================================================================+ | Copyright (c) 2001, 2005 Oracle Corporation, Redwood Shores, CA, USA | | All rights reserved. | +===========================================================================+ | HISTORY | +===========================================================================*/ package xxntc.oracle.apps.per.aniltablo.dml.webui; import oracle.apps.fnd.common.VersionInfo; import oracle.apps.fnd.framework.OAApplicationModule; import oracle.apps.fnd.framework.webui.OAControllerImpl; import oracle.apps.fnd.framework.webui.OAPageContext; import oracle.apps.fnd.framework.webui.OAWebBeanConstants; import oracle.apps.fnd.framework.webui.beans.OAWebBean; /** * Controller for ... */ public class XxTableDmlRNCO extends OAControllerImpl { public static final String RCS_ID="$Header$"; public static final boolean RCS_ID_RECORDED = VersionInfo.recordClassVersion(RCS_ID, "%packagename%"); /** * Layout and page setup logic for a region. * @param pageContext the current OA page context * @param webBean the web bean corresponding to the region */ public void processRequest(OAPageContext pageContext, OAWebBean webBean) { super.processRequest(pageContext, webBean); //pageLayout'a bağlanmış olan application module objesi çağrılır. OAApplicationModule am = pageContext.getApplicationModule(webBean); //application module içerisinde yer alan methodları çağırmak için am.invokeMethod yöntemi kullanılır. am.invokeMethod("executeOafAnilPersonelVO"); } /** * Procedure to handle form submissions for form elements in * a region. * @param pageContext the current OA page context * @param webBean the web bean corresponding to the region */ public void processFormRequest(OAPageContext pageContext, OAWebBean webBean) { super.processFormRequest(pageContext, webBean); //pageLayout'a bağlanmış olan application module objesi çağrılır. OAApplicationModule am = pageContext.getApplicationModule(webBean); //pageButtonBar bölümüne eklediğimiz Kaydet butonunun aksiyonu butonun ID'si ile yakalanır. Submit button ve normal button arasındaki fark budur. if (pageContext.getParameter("Apply") != null) { am.invokeMethod("apply"); } //tableActions bölümüne eklediğimiz AddNewRow ID'li NORMAL butonun event kısmında yazan olay ile aksiyon yakalanır. else if ("addNewRow".equals(pageContext.getParameter(OAWebBeanConstants.EVENT_PARAM))) { am.invokeMethod("addNewRow"); } else if ("deleteSelectedRows".equals(pageContext.getParameter(OAWebBeanConstants.EVENT_PARAM))) { am.invokeMethod("removeSelectedRows"); } } } |
5. Sayfa elementleri daha önce yapılan örnekte yer alan XxTableDmlPG sayfasından kopyalanır.
6. Proje derlenir. Sayfa aşağıdaki bat komutu ile veritabanına yüklenir. (Ben patch içerisinde bulunan C:\DemoOAF\jdevbin\oaext\bin dizininde bulunan import.bat kullandım)
1 2 3 |
import C:\DemoOAF\jdevhome\jdev\myprojects\xxntc\oracle\apps\per\aniltablo\dml\webui\XxTableDmlRN.xml -rootdir C:\DemoOAF\jdevhome\jdev\myprojects -username apps -password apps -dbconnection "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=demo)(PORT=1521))(CONNECT_DATA=(SID=VIS)))" |
7. Projenin class dosyaları ve bc4j xml dosyaları FTP ile sunucuya aktarılır.
8. EBS içerisinde ekran fonksiyonu tanımlanır.
Fonksiyon | Kullanıcı Adı Fonksiyonu | Tip | Web HTML |
---|---|---|---|
XX_DML_TABLE_RN | XX_DML_TABLE_RN | SSWA jsp fonksiyonu | OA.jsp?page=/xxntc/oracle/apps/per/aniltablo/dml/webui/XxTableDmlRN |
9. Workflow Builder açılır ve yeni bir Item Type oluşturulur.
Internal Name | Display Name | Description |
---|---|---|
XXOAFTST | XXOAFTST | XXOAFTST |
10. Yeni bir Process oluşturulur.
Internal Name | Display Name | Description |
---|---|---|
XXOAFTST_PRC | XXOAFTST_PRC | XXOAFTST_PRC |
11. Bir adet Performer Attribute yani bildirimin gideceği Role değerini SET edilecek değişken oluşturulur.
Internal Name | Display Name | Description | Type | Default Type | Default Value |
---|---|---|---|---|---|
XX_PERFORMER | XX_PERFORMER | XX_PERFORMER | Text | Constant | NTC_ANIL |
12. Bir adet mesaj oluşturulur.
Internal Name | Display Name | Description |
---|---|---|
XX_OAF_MSG | XX_OAF_MSG | XX_OAF_MSG |
13. Mesaj Altına yeni bir Attribute oluşturulur.
Internal Name | Display Name | Description | Type | Source | Frame Target | Default Type | Default Value |
---|---|---|---|---|---|---|---|
XX_OAF_REGION | XX_OAF_REGION | XX_OAF_REGION | Document | Respond | New Window | Constant | JSP:/OA_HTML/OA.jsp?OAFunc=XX_DML_TABLE_RN |
14. Mesaj Body ve Subject Bölümü değiştirilir.
15. Yeni bir Notification oluşturulur.
Internal Name | Display Name | Description | Result Type | Message | Performer Type | Performer Value |
---|---|---|---|---|---|---|
XX_OAF_NOTIF | XX_OAF_NOTIF | XX_OAF_NOTIF | <None> | XX_OAF_MSG | Item Attribute | XX_PERFORMER |
16. START ve END fonksiyonları aşağıdaki gibi oluşturulur.
17. Process aşağıdaki gibi çizilir.
18. Workflow veritabanına kaydedilir.
19. Aşağıdaki PL/SQL kodu ile Workflow başlatılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
declare l_item_key varchar2(30) := 'TEST-8'; l_item_type varchar2(10) := 'XXOAFTST'; l_process varchar2(30) := 'XXOAFTST_PRC'; begin wf_engine.createprocess (l_item_type, l_item_key, l_process, l_item_key); wf_engine.startprocess (l_item_type, l_item_key); commit; exception when others then dbms_output.put_line(sqlerrm); end; |
20. Sonuçlar test edilir ve bildirim içerisinde OAF region olduğu görülür. Ekleme, Çıkarma ve kaydetme işlemlerinin çalıştığı test edilir.
21. Test etmek için İş Akışı Yöneticisi Web Uygulamaları sorumluluğu altından Yönetici İş Akışı -> Statü İzleme açılır. Item Type ile arama yapılır ve başaltılan Workflow bildirimi açılır.