امکان تبدیل اپلیکیشن ماژول به وب سرویس REST
امکان تبدیل اپلیکیشن ماژول برنامه نوشته شده در ADF به وب سرویس REST به jdeveloper نسخه 12.2.1 اضافه شده است.
منبع :
http://www.awasthiashish.com/2015/12/create-rest-web-service-with.html
امکان تبدیل اپلیکیشن ماژول برنامه نوشته شده در ADF به وب سرویس REST به jdeveloper نسخه 12.2.1 اضافه شده است.
منبع :
http://www.awasthiashish.com/2015/12/create-rest-web-service-with.html
Accessing an ADF Operation binding programmatically
Developing an ADF application, it sometimes comes out we need to invoke programmatically (e.g. from a Managed Bean) a method exposed as operation binding in a ADF Data Control. To do this, we need to access the current binding container:
OperationBinding searchOp = ADFUtils.findOperation("searchBusinessUnits");
The ADFUtils.findOperation() method has the following definition:
public static OperationBinding findOperation(String operationName) {
OperationBinding op = getDCBindingContainer().getOperationBinding(operationName);
if (op == null) {
throw new RuntimeException("Operation '" + operationName +"' not found");
}
return op;
}
Unfortunately, when the previous code is executed in a method action invoked at page load time through an invokeAction binding, it happens that the reference to the binding container is null at this point. In this case, we need to access the binding container in a different way, using EL:
import oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding;
[. . .]
FacesCtrlActionBinding searchOp = null;
searchOp = (FacesCtrlActionBinding)JSFUtils.resolveExpression("#{data.portal_peoplefinder_resultsPageDef.searchBusinessUnits}");
Map opParams = searchOp.getParamsMap();
opParams.put("searchTermarchString);
Object result = searchOp.execute();
The pageDef excerpt of the page (or page fragment) containing the binding I need to access (in this case peopleFinder_resultsPageDef.xml ):
[...]
DataControl="ContentServicesDC" RequiresUpdateModel="true" Action="invokeMethod" MethodName="searchBusinessUnits" IsViewObjectMethod="false" ReturnName="data.ContentServicesDC.methodResults.searchBusinessUnits_ContentServicesDC_dataProvider_searchBusinessUnits_result"/> [...] And the line of DataBindings.cpx regarding this binding: path="oracle.webcenter.portalapp.pagefragments.peoplefinder_resultsPageDef"/> IMPORTANT: the EL expression we are using to retrieve the binding must be complying with the following format: [“data”] + [id of the corresponding منبع : https://matteoformica.wordpress.com/2011/11/05/accessing-an-adf-operation-binding-programmatically/
RowSet rowSet = (RowSet)row.getAttribute("GuaranteeLOV1");
rowSet.setNamedWhereClauseParam("Bind_CustomerId", new Number(customerId));
منبع : AdfTips.com (نویسنده : مورالی پاپانا)
نکات مربوط به این فرم عبارتند از :
1.پیاده سازی متدها در VO مربوطه بجای AM برای کوچک تر شدن سایز AM
2.پیاده سازی LOV های مرتبط (cascade lov) , با استفاده از راهنمایی وبلاگ آرامامو
3.گرفتن confirmedId از instance قراردادی که از روی defenition مربوطه در کنسول حرفه ای وبلاجیک ایجاد شده است.
4.در اپلیکیشن نوع A که اینترفیس آن فاقد بی پی ام می باشد,پارامتر ورودی (confirmedId) بصورت دستی مقداردهی میشود.
5.در اپلیکیشن نوع B که اینترفیس آن مبتنی بی پی ام می باشد,پارامتر ورودی (confirmedId) از payload دریافت میشود.
UI اولیه مربوط به فرم قرارداد بصورت زیر می باشد:



af:outputText value="#{vs.index+1}" id="ot19"
DCIteratorBinding iter = ADFUtils.findIterator("NAME");
2.از Iterator , ویو آبجکت مربوطه را دریافت میکنیم
ViewObject voTableData = iter.getViewObject();
3.از ویو آبجکت , سطر جاری را دریافت میکنیم.
Row rowSelected = voTableData.getCurrentRow();
4.از ویو آبجکت , مقدار ویژگی مورد نظر را دریافت میکنیم.
Object xyz = rowSelected.getAttribute("NAME");
منبع :
سایت رسمی آقای John Brunswick
سناریو :
یک پیج اصلی داریم که داخل آن داریم دیتا رو مشاهده می کنیم (browse) و از داخل آن یک پیج دیگر را صدا میزنیم که بر اساس پارامتری که بهش پاس داده میشود , عملیات اضافه کردن (add) و یا ویرایش کردن (edit) رو انجام می دهیم. عملیات حذف (delete) شبیه به عملیات ویرایش می باشد.




ویژگی columnStretching را متناسب با هر ستونی که دوست داریم بصورت استرچ نمایش داده
شود را تنظیم می کنیم.
منبع : وبلاگ TangHao
1.این روش در وبلاگ آقای Jobinesh و توسط آقای کامران کاشانیان مطرح شده است .
2.این روش در وبلاگ Oracle ADF Code Corner معرفی شده است.
Set Default Run Target to TaskFlow Activity
و دوست دارید این رویه رو تغییر بدین تا با کلیک بر روی این دکمه پروژه سریعاً اجرا بشه.
به وبلاگ maybe-interesting مراجعه کنید و مطابق مراحل گفته شده عمل کنید تا مشکل برطرف شود.
No credential mapper entry found for password indirection user
مراحلی که در لینک زیر گفته شده است را دنبال کنید تا خطا برطرف شود:
برای استفاده از این ابزار در ادیتور jdeveloper11g از منوی Tools گزینه External Tools را انتخاب کرده و Attesoro را بعنوان یک ابزار جدید به jdeveloper11g معرفی میکنیم که به صورت زیر اجرا می شود :
|
Program Executable |
C:\Program Files (x86)\Java\jdk1.7.0\bin\java.exe |
|
Arguments |
-jar C:\13\attesoro.1.8.01.jar ${file.path} |
پس از اینکه این ابزار را به ادیتور jdeveloper11g معرفی کردیم میتوانیم با راست کلیک بر روی فایل های با پسوند properties نسبت به ویرایش راحتتر آنها با کمک ابزار Attesoro اقدام کنیم.
با تشکر از جناب آقای پدرام پارچه بافیه
برای دریافت یک کتاب خوب در زمینه OracleADF که شامل تصویر و آموزش قدم به قدم می باشد , لطفاً بر روی لینک زیر کلیک کنید :
Oracle JDeveloper 11g Handbook.rar