استخدام خدمة الويب لتكامل محمل بيانات HCM

يمكنك استخدام خدمة ويب HCM Data Loader SOAP لاستيراد ملفات البيانات التي يتم تخزينها مؤقتًا في خادم WebCenter Content وتحميلها. يمكنك معالجة ملفات البيانات هذه يدويًا من صفحة استيراد البيانات وتحميلها في واجهة مستخدم Oracle Cloud HCM.

يجب أولاً تثبيت Oracle JDeveloper 11.1.1.9، للحصول على المكتبات المطلوبة لاستدعاء خدمات ويب SOAP من Oracle Cloud HCM.

حول HCM Data Loader Integration Service

يمكنك استخدام خدمة ويب SOAP لـ Oracle Cloud HCM لتحميل الملفات باستخدام واجهة برمجة تطبيقات SOAP.

يمكنك الحصول على تفاصيل خدمة الويب Data Loader Service من Oracle Fusion Cloud Human Resources في ارتباط اتصال المطور، ضمن أدوات في قائمة المستكشف، تمامًا مثل أي خدمة ويب SOAP أخرى.

يمكنك استدعاء خدمة ويب SOAP بعد وضع ملف ZIP الذي يحتوي على ملفات DAT على خادم WebCenter Content. ثم يمكنك تأمينه باستخدام حساب hcm/dataloader/import. يمكن استخدام خدمة الويب هذه لاستيراد البيانات وتحميلها في Oracle Cloud HCM.

حول ظروف SOAP لاستدعاء محمل بيانات HCM

عند استدعاء خدمة ويب HCM Data Loader SOAP، يتم إرسال مظروف الطلب والاستجابة واستلامها.
يمكنك استخدام هذه المظاريف لتقديم طلبات إلى خدمة ويب HCMDataLoader SOAP:
http://{Host}/hcmCommonDataLoader/HCMDataLoader

حول أسلوب importAndLoadData

يبدأ الأسلوب importAndLoadData معالجة ملف بيانات مستضاف على خادم WebCenter المحتوى. وهي مهمة غير متزامنة تعرض ProcessId فقط للعملية التي تم تنفيذها.

استخدم هذا المظروف لإجراء استدعاء لدالة importAndLoadData في خدمة ويب SOAP.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns1:importAndLoadData xmlns:ns1="http://xmlns.oracle.com/apps/hcm/common/dataLoader/core/dataLoaderIntegrationService/types/">
            <ns1:ContentId></ns1:ContentId>
            <ns1:Parameters></ns1:Parameters>
        </ns1:importAndLoadData>
    </soap:Envelope>

معلمات أسلوب importAndLoadData التي يتم إرسالها مع المظروف هي:

ContentId: معرف محتوى الملف على خادم WebCenter Content (نفس قيمة معلمة dDocName في استدعاء WebCenter Content Java).

المعلمات: أزواج الاسم-القيمة. تتوفر أسماء المعلمات التالية، ولكنها ليست إلزامية:

  • ImportMaximumErrors: نسبة سطور الملفات التي بها خطأ والتي يمكن حدوثها لوحدة العمل قبل إيقاف عملية الاستيراد.

  • LoadMaximumErrors: نسبة طبعات وحدات الأعمال التي بها خطأ والتي يمكن حدوثها في وحدة العمل قبل إيقاف عمليتي المراجعة والتحميل.

  • LoadConcurrentThreads: عدد سلاسل العمليات المتزامنة عند المراجعة أو التحميل.

  • LoadGroupSize: عدد كائنات الأعمال التي تمت معالجتها كوحدة عمل فردية بواسطة سلسلة عمليات متزامنة.

  • FileEncryption: نوع تشفير الملف. على سبيل المثال، التشفير المستند إلى كلمة السر (PBE).

  • DeleteSourceFile: القيمة Y أو N. في حالة التعيين إلى Y أو تركه فارغًا، يتم حذف الملف المصدر من خادم WebCenter Content بعد نقل محتوى الملف إلى جداول مراحل محمل بيانات HCM ولم يعد مطلوبًا.

على سبيل المثال، يمكن أن تحتوي علامة <ns1:Parameters> على أزواج الاسم والقيمة التالية:<ns1:Parameters>ImportMaximumErrors=100,LoadMaximumErrors=100,LoadConcurrentThreads=4,FileEncryption=PGPSIGNED,DeleteSourceFile=N</ns1:Parameters>

يستجيب الخادم لهذا المظروف:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
	<env:Header> <wsa:To>http://www.w3.org/2005/08/addressing/anonymous</wsa:To> 
	  <wsa:Action>http://xmlns.oracle.com/apps/hcm/common/dataLoader/core/dataLoaderIntegrationService/HCMDataLoader/importAndLoadDataResponse</wsa:Action>
	   <wsa:MessageID>urn:uuid:ab36195f-775b-4688-a0e4-8a4e531e904c</wsa:MessageID>
	   <wsa:RelatesTo>urn:uuid:74c7b631-c20a-4d49-bf36-1f483f3dc43e</wsa:RelatesTo>
   </env:Header> 
	<env:Body> <ns0:importAndLoadDataResponse xmlns:ns0="http://xmlns.oracle.com/apps/hcm/common/dataLoader/core/dataLoaderIntegrationService/types/"> <result xmlns="http://xmlns.oracle.com/apps/hcm/common/dataLoader/core/dataLoaderIntegrationService/types/">7958</result> </ns0:importAndLoadDataResponse> 
	</env:Body> 
</env:Envelope>

حول الأسلوب getDataSetStatus

يرجع الأسلوب getDataSetStatus الحالة الحالية لملف البيانات المحدد.

استخدم هذا المظروف لإجراء استدعاء لدالة getDataSetStatus في خدمة ويب SOAP.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns1:getDataSetStatus xmlns:ns1="http://xmlns.oracle.com/apps/hcm/common/dataLoader/core/dataLoaderIntegrationService/types/">
             <ns1:Parameters></ns1:Parameters>
        </ns1:getDataSetStatus>
    </soap:Envelope>

معلمات أسلوب getDataSetStatus التي يتم إرسالها مع المظروف هي:

ContentId: معرف محتوى الملف على خادم WebCenter Content (نفس قيمة معلمة dDocName في استدعاء WebCenter Content Java).

ProcessId: معرف العملية التي تم بدؤها وإرجاعها بواسطة الأسلوب importAndLoadData.

تكوين كلاس Proxy لاستدعاء HCM DataLoader

أحد خيارات استدعاء خدمة ويب Oracle Cloud HCM SOAP هو استخدام طبقات الوكيل المنشأة.

يمكنك إنشاء فئات الوكيل عن طريق توفير عنوان URL لملف WSDL للخدمة إلى المنشئ الذي تختاره. يتم استخدام فئات الوكيل هذه لاستدعاء خدمة الويب.

ملاحظة:

تتم حماية خدمات ويب Oracle Cloud HCM SOAP بواسطة سياسات تأمين Oracle Web Services Manager (OWSM).
  1. سجل الدخول إلى Oracle Cloud HCM.
  2. من قائمة المستكشف، حدد موقع عنوان الأدوات، ثم انقر على اتصال المطور.
  3. في مربع البحث بحث، اكتب Data Loader، ثم انقر على أيقونة البحث.
  4. انقر على خدمة محمِّل البيانات. يتم عرض الصفحة ملخص للخدمة.
    تعرض صفحة الملخص المعلومات المرتبطة بخدمة ويب SOAP، مثل موقع ملف WSDL.
  5. افتح موجه أوامر ثم قم بتشغيل الأمر wsimport المتاح في $JAVA_HOME/bin:
    wsimport -s <Provide the folder where the generated files need to be placed> -d <Provide the folder where the generated files need to be placed> <The HCM Data Loader Integration Service URL>

    في الأمر، المعلمة الأولى هي المجلد الذي يجب وضع الملفات التي تم إنشاؤها فيه. المعلمة الثانية هي أيضًا المجلد الذي يجب وضع الملفات التي تم إنشاؤها فيه. المعلمة الثالثة هي عنوان URL WSDL لمحمل بيانات HCM. على سبيل المثال:

    wsimport -s "D:\HCMDataLoader" -d "D:\ HCMDataLoader" https://{host}/hcmCommonDataLoader/HCMDataLoader?wsdl

    يتم وضع الملفات التي تم إنشاؤها في المجلدين التاليين:

    • com

    • sdo

  6. إضافة الرمز الذي تم إنشاؤه إلى ملف JAR:
    zip loaderIntegrationProxy.jar -r * -

حول تأثيرات الأمان عند استخدام محمل بيانات HCM

عندما يقوم العميل باستدعاء خدمة ويب HCM Data Loader SOAP، يجب أن يفي الأخير بنظام حماية الرسائل للتأكد من نقل الحمولة بطريقة مشفرة أو عبر طبقة نقل SSL.

يتم تأمين خدمة الويب HCMDataLoader باستخدام سياسة Oracle Web Services Manager التالية: oracle/wss11_saml_or_username_token_with_message_protection_service_policy.

في جانب العميل، يمكنك استخدام نظام Oracle Web Services Manager التالي:oracle/wss11_username_token_with_message_protection_client_policy.

لاستخدام هذا النهج، يجب تشفير الرسالة باستخدام مفتاح عام يوفره الخادم. عندما تصل الرسالة إلى الخادوم، يمكن فك تعمية الرسالة بواسطة المفتاح الخاص للخادوم. يمكنك تكوين KeyStore لاستيراد الشهادة المقدمة في ملف WSDL للخدمة، ولكن لأسباب أمنية يجب مطالبة المستخدم بكلمة سر Oracle Cloud HCM عند تشغيل التعليمة البرمجية.

يمكنك إنشاء ملف نص خصائص يمكن تحليله في التعليمات البرمجية للوصول إلى معلومات Keystore، على سبيل المثال:

FUSION_USERNAME=<Your Oracle Global Human Resources Cloud User Name>
DATAPATH=C:\\My\\Assets\\cloud.asset.hcm.java-dataload-example\\data\\
HCM_DATA_LOADER_SERVICE_WSDL_LOCATION=https://<<FusionURL>/hcmCommonDataLoader/HCMDataLoader?wsdl
UCM_IDC_WEBSERVICE_LOCATION=https://<FusionURL>/idcws/GenericSoapPort
KEYSTORE_LOCATION=<Your Keystore trust location>
KEYSTORE_PASSWORD=<YourTrustPassword>
KEYSTORE_ALIAS=orakey
GETDATASETSTATUS_DELAY=5
OK=OK
ERROR=Error
WARNING=Warning
CSV_FILE_ENCODING=UTF-8
DATA_SEPERATOR=;

طالب المستخدم بصلاحيات Oracle Cloud HCM الخاصة به باستخدام ما يلي:

// Accept password from user
Scanner scanReader = new Scanner(System.in);  // Reading from System.in
System.out.println("Enter password for user "+propertiesFile.getProperty("FUSION_USERNAME")+" :");
fusionUserPass= scanReader.next(); // Scans the next token of the input as an int.
scanReader.close();

في المثال، fusionUserPass هو متغير يمكن استخدامه لتخزين كلمة سر Oracle Cloud HCM الخاصة بالمستخدم، ثم تمريره إلى خدمة ويب HCM Data Loader SOAP.

استدعاء خدمة ويب HCM DataLoader SOAP

يمكنك تحميل البيانات من ملف ZIP إلى Oracle Cloud HCM باستخدام خدمة ويب HCM Data Loader SOAP من فئة Java.

قم أولاً بتكوين ملف ZIP وتحميله إلى خادم WebCenter Content إما يدويًا أو برمجيًا. ثم يمكنك تحميل البيانات باستخدام خدمة الويب importAndLoadData.

ملاحظة:

تم اختبار عينات التعليمات البرمجية المتوفرة في هذا الحل باستخدام الإصدار 8 من JDK لاستدعاء خدمات الويب على Oracle WebLogic Server 12c. للاستخدام مع إصدارات JDK وOracle WebLogic Server الأخرى، اختبر التعليمات البرمجية باستخدام مكتبات خاصة بالإصدارات المطلوبة.

  1. تكوين كلاس عميل في المجلد: /com/oracle/xmlns/apps/hcm/common/dataloader/core/dataloaderintegrationservice/.
    لإنشاء الكلاس، يجب أن يكون لديك ملف JAR التالي:
    • بالنسبة إلى WebLogic Server 11g: ws.api_1.1.0.0.jar
    • بالنسبة إلى WebLogic Server 12c: wls-api.jar

    يتوفر ملف JAR هذا في الموقع التالي في مجلد تثبيت JDeveloper:

    • بالنسبة إلى WebLogic Server 11g: $MIDDLEWARE_HOME/modules
    • بالنسبة إلى WebLogic Server 12c: $MIDDLEWARE_HOME/wlserver/server/lib
  2. تأكد من استيراد مكتبات Java التالية في تعليمات Java البرمجية:
    import com.oracle.xmlns.apps.hcm.common.dataloader.core.dataloaderintegrationservice.HCMDataLoader;
    import com.oracle.xmlns.apps.hcm.common.dataloader.core.dataloaderintegrationservice.HCMDataLoader_Service;
    import com.oracle.xmlns.apps.hcm.common.dataloader.core.dataloaderintegrationservice.ServiceException;
    import javax.xml.ws.BindingProvider;
    import weblogic.wsee.jws.jaxws.owsm.SecurityPolicyFeature;
    
  3. أنشئ دالة تُرجع كائن HCMDataLoader وتستقبل url وusername وpassword وkeystore كمعلمات. على سبيل المثال:
    public static HCMDataLoader getHCMDataLoaderService(String url, String username, String password, String keystore)
    			throws MalformedURLException {
    		//The code in the next steps is placed within the function body
    }
  4. داخل نص الدالة، قم بتكوين كائن خدمة ويب SOAP.
    HCMDataLoader_Service webService = new HCMDataLoader_Service(new URL("/hcmCommonDataLoader/HCMDataLoader?wsdl));
    
    SecurityPolicyFeature[] securityFeatures = new SecurityPolicyFeature[] { 
    				new SecurityPolicyFeature("oracle/wss_username_token_over_ssl_client_policy") 
    }; 
    
    HCMDataLoader hcmDataLoader = webService.getHCMDataLoaderSoapHttpPort(securityFeatures);
    
  5. تكوين كائن BindingProvider وتعيين معلمات السياق الخاصة به.
    BindingProvider wsbp = (BindingProvider) hcmDataLoader;
    Map<String, Object> requestContext = wsbp.getRequestContext();
    requestContext.put(BindingProvider.USERNAME_PROPERTY, username);
    requestContext.put(BindingProvider.PASSWORD_PROPERTY, password);
    return hcmDataLoader;
  6. قم بتحميل البيانات إلى Oracle Cloud HCM باستخدام الوظيفة importAndLoadData.
    HCMDataLoader hcmDataLoaderService = HCMDataLoaderUtil.getHCMDataLoaderService(url, username, password,
    		keystore);
    
    String parameters = ""; // args[1];
    
    try {
    	String response = hcmDataLoaderService.importAndLoadData(contentId, parameters);
    
    	return response;
    } catch (ServiceException e) {
    	logger.severe("Error occurred during importAndLoad call  ..." + e.getLocalizedMessage());
    	throw e;
    }
  7. يمكنك تكوين وظيفة أخرى للحصول على الحالة من ملف البيانات الذي قمت بتحميله:
    public static String invokeGetDataSetStatus(String url, String username, String password, String keystore,
    			Long processId, String getDataSetStatusDelay)
    			throws ServiceException, ParserConfigurationException, SAXException, IOException, InterruptedException {
    				//The code in the next steps is placed within this function body
    }
  8. استرجاع استجابة الحالة باستخدام دالة getDataSetStatus:
    HCMDataLoader hcmLoaderService = getHCMDataLoaderService(url, username, password, keystore);
    String response = hcmLoaderService.getDataSetStatus("ProcessId=" + processId);
    String loadStatus = getLoadStatusFromResponse(response); // To save the status from the response to a String variable

    ينتج عن getDataSetStatus كائن XML يحتوي على تفاصيل حول عملية التحميل والاستيراد.

  9. تكوين دالة أخرى لتحليل استجابة XML لغويًا من استدعاء getDataSetStatus.
    public static String getLoadStatusFromResponse(String xmlResult)
    			throws ParserConfigurationException, SAXException, IOException {
    		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    		DocumentBuilder builder = factory.newDocumentBuilder();
    		Document document = builder.parse(new InputSource(new StringReader(xmlResult)));
    		NodeList flowList = document.getElementsByTagName("DATA_SET_STATUS");
    		NodeList childList;
    		for (int i = 0; i < flowList.getLength(); i++) {
    			childList = flowList.item(i).getChildNodes();
    			for (int j = 0; j < childList.getLength(); j++) {
    				Node childNode = childList.item(j);
    				if ("DATA_SET".equals(childNode.getNodeName())) {
    					NodeList dataSeteChildNodes = childNode.getChildNodes();
    					{
    						for (int k = 0; k < dataSeteChildNodes.getLength(); k++) {
    							{
    								Node childDSNode = dataSeteChildNodes.item(k);
    								if ("STATUS".equals(childDSNode.getNodeName())) {
    									String status = dataSeteChildNodes.item(k).getTextContent().trim();
    									System.out.println("Current Status of the Data Set "
    											+ dataSeteChildNodes.item(k).getTextContent().trim());
    									return status;
    								}
    							}
    						}
    					}
    				}
    			}
    		}
    		return "ERROR";
    	}
    
  10. بمجرد اكتمال تعليمة Java البرمجية، جمّعها باستخدام الأمر javac:
    • بالنسبة إلى WebLogic Server 11g:
      javac -classpath path of the folder where with generated JAX-WS files;location of ws.api_1.1.0.0.jar HCMDataLoaderServiceSoapHttpPortClient.java
    • بالنسبة إلى WebLogic Server 12c:
      javac -classpath path of the folder where with generated JAX-WS files;location of wls-api.jar HCMDataLoaderServiceSoapHttpPortClient.java
  11. قم بتشغيل كلاس HCMDataLoaderServiceSoapHttpPortClient لاستدعاء خدمة تكامل محمل بيانات HCM، باستخدام الأمر java:
    • بالنسبة إلى WebLogic Server 11g:
      java -classpath path of the folder where with generated JAX-WS files;location of weblogic.jar;location of jrf.jar com.oracle.xmlns.apps.hcm.common.dataloader.core.dataloaderintegrationservice.HCMDataLoaderServiceSoapHttpPortClient ContentId Parameters
    • بالنسبة إلى WebLogic Server 12c:
      java -classpath path of the folder where with generated JAX-WS files;location of wlthint3client.jar;location of wls-api.jar com.oracle.xmlns.apps.hcm.common.dataloader.core.dataloaderintegrationservice.HCMDataLoaderServiceSoapHttpPortClient ContentId Parameters