alfresco
वेब लिपियों
खोज…
परिचय
अल्फ़्रेस्को में वेबस्क्रिप्स कार्यात्मक मॉड्यूल हैं, जो अल्फ़को (इन जैसे रन वर्कफ़्लो, फ़ाइलों, उपयोगकर्ताओं, समूहों या अन्य संस्थाओं के साथ काम करते हुए) के अंदर कुछ संकेत दिखा सकते हैं या कुछ चीज़ें बना सकते हैं।
हर वेबसाइट में दो मुख्य भाग होते हैं- कोड (.js, .java) और फ्रीमेकर टेम्पलेट (.ftl)
Webscript में अतिरिक्त .properties फ़ाइल भी हो सकती है जिसमें टेक्स्ट स्ट्रिंग्स का उपयोग किया जाता है। भागों को Reference.xml फ़ाइल (स्प्रिंग फ्रेमवर्क लॉजिक) में रखा जाता है।
यह इस फ़ाइल में वर्णित किसी भी URL से जुड़ा हुआ है।
हैलो वर्ल्ड वेब स्क्रिप्ट
चलो एक हैलो वर्ल्ड वेब स्क्रिप्ट बनाते हैं। वेब स्क्रिप्ट में एक डिस्क्रिप्टर, एक नियंत्रक और, वैकल्पिक रूप से, एक दृश्य होता है। इन फ़ाइलों को एक नामकरण सम्मेलन का पालन करना चाहिए।
इस डिस्क्रिप्टर का नाम helloworld.get.desc.xml है।
<webscript>
<shortname>Hello World</shortname>
<description>Hello world web script</description>
<url>/example/helloworld?name={nameArgument}</url>
<authentication>user</authentication>
</webscript>
आप देख सकते हैं कि डिस्क्रिप्टर घोषित करता है कि इस वेब स्क्रिप्ट को एक URL, "/ example / helloworld" पर मैप किया जाएगा, और इसके लिए उपयोगकर्ता प्रमाणीकरण की आवश्यकता है। विवरणक एक तर्क भी घोषित करता है जिसे नाम कहा जाता है।
यहाँ नियंत्रक है। इसे हेलोवर्ल्ड.गेट.जेएस नाम दिया गया है।
model.foo = "bar";
यह नियंत्रक जावास्क्रिप्ट में लिखा गया है, लेकिन नियंत्रकों को जावा में भी लिखा जा सकता है। थोड़े और काम के साथ आप अन्य भाषाओं में भी कंट्रोलर लिख सकते हैं।
यह नियंत्रक बहुत कुछ नहीं करता है। यह सिर्फ "फू" नामक मॉडल में एक नया चर जोड़ता है और इसे "बार" का मान देता है।
आपके नियंत्रक के पास विभिन्न प्रकार के रूट स्कॉप्ड वैरिएबल तक पहुंच है जो सभी आधिकारिक दस्तावेज में प्रलेखित हैं ।
अंत में, आइए देखें। इसका नाम helloworld.get.html.ftl रखा गया है
<html>
<body>
<p>Hello, ${args.name!"name not specified"}!</p>
<p>Foo: ${foo}</p>
</body>
</html>
आप इस नाम से देख सकते हैं कि यह दृश्य एक फ्रीडमर टेम्पलेट के रूप में कार्यान्वित किया गया है और HTML को आउटपुट करता है। यह दृश्य मॉडल से "फू" के मूल्य को पकड़ लेता है और यह वेब नाम के लिए पारित किए गए नाम तर्क को भी पकड़ लेता है। यदि एक नाम तर्क निर्दिष्ट नहीं है, तो टेम्पलेट कुछ डिफ़ॉल्ट पाठ प्रदान करता है।
यदि आप इसके बजाय XML या JSON का उत्पादन करना चाहते थे - बस नाम बदलें, तो तदनुसार अपने टेम्पलेट कार्यान्वयन को अपडेट करें।
तैनाती
वेब स्क्रिप्ट को क्लासपाथ पर तैनात किया जा सकता है या रिपॉजिटरी में अपलोड किया जा सकता है। उदाहरण के लिए, रिपॉजिटरी पर अपलोड करके इस वेब स्क्रिप्ट को तैनात करने के लिए, इन चरणों का पालन करें:
- इन तीन फाइलों को डेटा डिक्शनरी / वेब लिपियों एक्सटेंशन में अपलोड करें
- Http: // localhost: 8080 / alfresco / s / index पर जाकर और "रिफ्रेश वेब स्क्रिप्ट्स" पर क्लिक करके वेब स्क्रिप्ट को रिफ्रेश करें।
- Http: // localhost: 8080 / alfresco / s / example / helloworld? Name = Jeff पर जाकर वेब स्क्रिप्ट पर नेविगेट करें।
फ़ोल्डर निर्माता: एक वेब स्क्रिप्ट जो POST को संभालती है
हैलो वर्ल्ड वेब स्क्रिप्ट HTTP HTTP तरीकों को संभालती है। लेकिन क्या होगा अगर आप सर्वर पर डेटा बनाना चाहते हैं? इसके लिए आपकी वेब स्क्रिप्ट को POST को संभालना चाहिए।
यहाँ एक सरल उदाहरण है जो कंपनी होम में नए फ़ोल्डर बनाता है। यह एक JSON बॉडी के साथ एक POST कॉल करके लागू किया जाता है जो दिखता है:
{'name':'testfolder'}
वैकल्पिक रूप से, आप एक शीर्षक या फ़ोल्डर के विवरण को शरीर के किसी हिस्से में पास करके जोड़ सकते हैं, जैसे:
{
'name':'testfolder',
'title':'test title',
'description':'test description'
}
वर्णनकर्ता को फ़ोल्डरमेकर। Post.desc.xml कहा जाता है:
<webscript>
<shortname>Folder Maker</shortname>
<description>Creates folders</description>
<family>Examples</family>
<url>/example/folders</url>
<format default="json"></format>
<authentication>user</authentication>
</webscript>
वैकल्पिक "परिवार" तत्व वेब स्क्रिप्ट इंडेक्स में वेब स्क्रिप्ट को समूहित करने का एक सुविधाजनक तरीका है। "प्रारूप" तत्व घोषित करता है कि यह वेब स्क्रिप्ट JSON देता है।
नियंत्रक को foldermaker.post.json.js कहा जाता है:
var name = title = desc = null;
var name = json.get('name');
try {
title = json.get('title');
} catch (err) {}
try {
desc = json.get('description');
} catch (err) {}
var folder = companyhome.createFolder(name);
var needsSave = false;
if (title != null) {
folder.properties['cm:title'] = title;
needsSave = true;
}
if (desc != null) {
folder.properties['cm:description'] = desc;
needsSave = true;
}
if (needsSave) {
folder.save();
}
model.id = folder.nodeRef.toString();
model.name = name;
model.title = title;
model.description = desc;
ध्यान दें कि इस नियंत्रक के नाम में "json" है। यह अल्फ्रेस्को को JSON पेलोड की उम्मीद करता है। अल्फ्रेस्को स्वचालित रूप से JSON को पार्स कर देगा और इसे "json" नामक रूट चर में डाल देगा।
नियंत्रक JSON से नाम, शीर्षक और विवरण को पकड़ लेता है और "कंपनीहोम" नामक रूट स्कोप चर का उपयोग करके फ़ोल्डर बनाता है।
यदि उन गुणों में एक शीर्षक या विवरण पारित किया जाता है तो वे बच जाते हैं।
मान जो नियंत्रण में पारित किए गए थे और नए फ़ोल्डर के नोड संदर्भ को देखने पर नियंत्रण सौंपने से पहले मॉडल पर सेट हो जाते हैं।
दृश्य का नाम foldermaker.post.json.ftl है:
{
<#if title??>
"title": "${title}",
</#if>
<#if description??>
"description": "${description}",
</#if>
"id": "${id}",
"name": "${name}"
}
यह फ्रीमार्कर मॉडल पर JSON के रूप में सेट किए गए मानों को प्रतिध्वनित करता है। शीर्षक और विवरण हमेशा मौजूद नहीं हो सकता है, इसलिए यह दृश्य एक फ्री स्टेटर नल चेक इन बिल्ट-इन का उपयोग करता है यदि वे सेट नहीं थे, तो वापस लौटने से बचें।
इस वेब स्क्रिप्ट का परीक्षण करने के लिए किसी भी HTTP क्लाइंट का उपयोग किया जा सकता है। यहाँ यह कर्ल का उपयोग करके कैसा दिखेगा:
jpotts$ curl -uadmin:admin -H "content-type: application/json" -X POST "http://localhost:8080/alfresco/s/example/folders" -d "{'name':'testfolder','title':'test title', 'description':'test desc'}"
{
"title": "test title",
"description": "test desc"
"id": "workspace://SpacesStore/cc26a12f-306b-41f1-a859-668f11fc2a54",
"name": "testfolder"
}
ध्यान दें कि कर्ल मूल स्थिति क्रेडेंशियल में गुजर रहा है। इस मामले में यह "व्यवस्थापक" का उपयोग कर रहा है। क्योंकि यह उदाहरण कंपनी होम में आइटम बनाता है, तो आपको उस उपयोगकर्ता का उपयोग करना होगा जिसके पास उपयुक्त अनुमतियाँ हैं।
इस वेब स्क्रिप्ट की कोई वास्तविक त्रुटि जाँच नहीं है। यदि आप एक नाम से नहीं गुजरते हैं या आप एक ऐसे नाम से गुजरते हैं जो पहले से ही इस्तेमाल किया जा चुका है तो आपको एक त्रुटि दिखाई देगी।