ExpressionScript Engine - Хурдан эхлэх гарын авлага
From LimeSurvey Manual
Хурдан эхлэх гарын авлага
LimeSurvey дотор та ExpressionScript (товчоор: ES)-ийг ашиглан судалгаагаа цаашид тохируулах боломжтой. Тайлбар: "ExpressionScript нь өмнөх хувилбаруудад Expression Manager (EM) гэж нэрлэгддэг байсан. Хэрэв та хаа нэгтээ Expression Manager гэж харвал энэ нь ES-ийн хуучин нэр юм."
ES-ийг дараах зүйлсийг тодорхойлоход ашиглаж болно:
- Навигаци/Салбарлалт - respondent-ийн хариултаас хамааран асуултуудыг харуулах дарааллыг өөрчлөх боломжийг олгоно;
- Тохируулга/Piping - асуултыг томъёолоход (жишээ нь өмнөх хариултуудыг дурдах, эсвэл судалгаанд оролцогчдын нас, хүйсээс хамааран өгүүлбэрийг хувиргах) эсвэл тусгайлсан тайлан (жишээ нь үнэлгээний оноо эсвэл тохирсон зөвлөгөө) гаргахад тусална;
- Баталгаажуулалт - хариултууд тодорхой шалгуурыг, тухайлбал хамгийн бага ба хамгийн их утга эсвэл оруулах тодорхой загварыг хангаж байгаа эсэхийг шалгана.
ES нь эдгээр боломж бүрийн логикийг тодорхойлох ойлгомжтой аргыг санал болгодог. Стандарт математик тэгшитгэл хэлбэрээр бичиж болох бараг бүх зүйл хүчинтэй илэрхийлэл болно.
ES одоогоор 70 функцэд хандах боломжийг олгодог бөгөөд илүү олныг дэмжихээр хялбархан өргөтгөх боломжтой. Мөн энэ нь хувьсагчдад SGQA нэрийн оронд хүнд ойлгомжтой хувьсагчийн нэрээр хандах боломжийг олгодог.
Дараагийн хэсгүүдэд ES-ийг голчлон хаана ашигладгийг үзүүлнэ.
Ач холбогдол (Навигаци/Салбарлалтыг удирдах)
Зарим судалгаа "Goto Logic"-ийг ашигладаг. Жишээ нь Question1-д C сонголтыг хариулбал таныг Question5 руу шилжүүлнэ. Энэ арга нь баталгаажуулахад хэцүү тул маш хязгаарлагдмал. Түүнчлэн асуултуудыг дахин эрэмбэлэх үед амархан алдаатай болдог. Харин ES нь асуулт хүчинтэй байж болох бүх нөхцөлийг тодорхойлохдоо Булийн холбогдох тэгшитгэлүүд-ийг ашигладаг. Хэрэв асуулт холбогдох бол асуултыг харуулна, үгүй бол энэ нь хамааралгүй болж, мэдээллийн санд "NULL" утга хадгалагдана.
Ач холбогдлын ойлголтыг илүү сайн ойлгохын тулд судалгаанд оролцогчдын биеийн жингийн индекс (BMI)-ийг тооцдог дараах судалгаанд анхаарлаа хандуулъя. Үүнийг татаж авахын тулд дараах холбоос дээр дарна уу: Биеийн жингийн индекс судалгааны жишээ.
Холбогдох тэгшитгэлийг доор хувьсагчийн нэрийн дараах Ач холбогдол баганад харуулсан. weight, weight_units, height, height_units-ийн ач холбогдлын утга бүгд 1 (үндсэн утга) бөгөөд энэ нь тэдгээр асуултууд үргэлж харагдана гэсэн үг. Харин BMI-ийн ач холбогдол нь {!is_empty(height) and !is_empty(weight)} бөгөөд энэ нь оролцогч өндөр, жин хоёулангийнх нь утгыг оруулсан тохиолдолд л BMI-ийг тооцно гэсэн үг (ингэснээр тэг дээр хуваах алдаа гарах эрсдэлээс сэргийлнэ). Мөн "Report" асуулт нь respondent дөрвөн үндсэн асуултын (height, heightunits, weight, weightunits) бүгдэд хариулсан тохиолдолд л харагдана.

Ач холбогдлыг дараах тохиолдолд харуулж, засах боломжтой:
- асуултын түвшний ач холбогдлыг харах/засах хүсэлтэй үед
- бүлгийн түвшний ач холбогдлыг харах/засах хүсэлтэй үед
Асуултын түвшний ач холбогдлыг харах / засах
Энэ тэгшитгэл нь биеийн жингийн индекс (BMI)-ийг тооцдог. Энэ асуултыг зөвхөн хүн өөрийн өндөр, жингээ оруулсан тохиолдолд л асууна.

Энэ бол "BMI" асуултын засварлах дэлгэц юм.

Холбогдох тэгшитгэл оруулахдаа kuдуруй хаалт ашигладаггүйг анхаарна уу.
Бүлгийн түвшний ач холбогдлыг харах / засах
Одоо өөр нэг жишээнд анхаарлаа хандуулъя - энгийн тооллогын судалгаа. Үүнийг татаж авахын тулд дараах холбоос дээр дарна уу: Тооллогын судалгааны жишээ.
Эхний хуудас нь тантай хэдэн хүн хамт амьдардгийг асууж, түүнийг "cohabs" хувьсагчид хадгална. Энэ хуудсыг тантай хамт амьдрагч хүн нэгээс олон байгаа тохиолдолд л харуулна (хоёр дахь хамт амьдрагч хүнд зориулж харуулна). Мөн p2name, p2age, p2sum нь тус бүрийн өмнөх асуултад хариулт байгаа тохиолдолд л харагдана.

Иймээс бүлэг нь мөн асуултын түвшний ач холбогдлын шалгууртай бөгөөд зарим асуулт нь өмнөх тодорхой асуултуудад хариулсан тохиолдолд л харагддаг (жишээ нь p2name-д хариулсан бол p2age харагдана). ES нь бүлгийн болон асуултын түвшний ач холбогдлыг таны өмнөөс нэгтгэдэг. Бүлэг доторх асуултуудыг зөвхөн бүлэг бүхэлдээ холбогдох тохиолдолд л асууна. Дараа нь бүлэг доторх асуултуудаас зөвхөн холбогдох дэд олонлогийг л асууна.
Энд Cohabitant 2-ийн бүлгийн түвшний ач холбогдлыг засах дэлгэцийн зураг байна:

Холбогдох тэгшитгэлийг оруулахдаа тайлбар хаалт (буржгар хаалт) ашиглахгүй гэдгийг анхаарна уу.
Тохируулга/Дамжуулалт (Tailoring/Piping)
ES нь энгийн болон нарийн төвөгтэй нөхцөлт тохируулгыг хялбархан хийх боломжийг олгодог. Заримдаа танд зүгээр л энгийн орлуулалт хэрэгтэй байдаг, жишээлбэл: "Та [Бүтээгдэхүүн] худалдан авсан гэж хариулсан. Үүний хамгийн их таалагдсан зүйл юу байсан бэ?". Заримдаа "[Ноён/Хатагтай] [Овог], та манай судалгааг бөглөхөд бэлэн байна уу?" гэх мэт нөхцөлт орлуулалт хэрэгтэй болдог. Энэ тохиолдолд хүний хүйсээс хамааран "Ноён эсвэл Хатагтай" гэснийг ашиглахыг хүсэж байна. Бусад үед (жишээлбэл математик тооцоололд суурилсан) бүр ч төвөгтэй орлуулалт шаардлагатай болно. ES нь эдгээр бүх төрлийн тохируулга/дамжуулалтыг дэмждэг.
Нөхцөлт тэгшитгэлүүд
Биеийн жингийн индексийн (BMI) жишээ нь хүн өөрийн өндөр, жингээ хоёр өөр нэгжээр (см ба инч, кг ба фунт) оруулсан ч BMI-г тооцоолох боломжийг харуулдаг:

Энэ тохиолдолд weightkg нь {if(weightunits == "kg", weight, weight * 0.453592)} байна. Энэ "if()" функц нь хэрэв хариулагч жингээ килограммаар оруулсан бол тэр утгыг ашиглана, үгүй бол оруулсан утгыг (өөр сонголт нь фунт) 0.453592-оор үржүүлж килограмм руу хөрвүүлнэ гэсэн үг юм. heightm хувьсагч нь мөн адил аргаар хүний өндрийг метрээр (см-ээр өгсөн өндөр/100) тооцоолдог, тэр өндрөө инчээр оруулсан байсан ч гэсэн (1 метр=3.28084 инч).
BMI-г дараах байдлаар тооцно: {weightkg / (heightm * heightm)}.
Эцэст нь, тайлан нь хариулагчид тэрээр юу оруулснаа хэлж, мессежийг нөхцөлт байдлаар тохируулдаг. (жишээлбэл, "Та 2 метр өндөр, 70 кг жинтэй гэж хариулсан.")
Доорх зурагт weightstatus нь хүнийг жингийн дутагдалтайгаас эхлээд хүнд тэнцвэргүй таргалалттай хүртэл ангилахдаа үүрлэсэн "if()" мэдэгдлүүдийг ашигладаг. Логикийг нь шалгаснаар түүний тэгшитгэлийг харж болно:

Энэ асуултын засах цонхоос та хоёр зүйлийг харж болно:
- Тохируулга нь илэрхийллүүдийг тайлбар хаалтаар (буржгар хаалтаар) хүрээлсэн байх ёстой
- Илэрхийллүүд нь олон мөрөнд байж болно, энэ тохиолдлынх шиг үүрлэсэн нөхцөлт логикийг уншихад хялбар болгохыг хүсвэл.

Тохируулсан асуулт, хариулт болон тайлан
BMI тайлан дараах байдалтай харагдана:

Энэ нь мөн асуултын засах цонх юм.

Буржгар хаалтан доторх бүх зүйлийг илэрхийлэл гэж үздэг бөгөөд өмнөх зурагт синтакс өнгөөр тодруулагдсан (өнгөөр кодлогдсон) байна. Хэрэв бичгийн алдаа (жишээлбэл буруу бичигдсэн эсвэл тодорхойлогдоогүй хувьсагч, функцийн нэр) гарвал ES алдаа харуулна. Доорх жишээнд:
- heightunit.shown нь тодорой бус хувьсах хэмжигдэхүүн (үнэндээ heightunits.shown байх ёстой) ба
- "rnd()" нь Тодорхойлогдоогүй функц (зөв функцийн нэр нь "round()").
Хоёр тохиолдолд алдаануудыг олж засахад хялбар болгохын тулд улаан хүрээнд харуулдаг.

Мөн оруулсан утгуудын хүснэгт эсвэл тохируулсан зөвлөгөө гэх мэт нарийн төвөгтэй тайланг хурдан үүсгэж болохыг харж болно.
Бүх тохируулгын илэрхийллийг буржгар хаалтаар хүрээлэх ёстой гэдгийг санаарай. Ингэснээр LimeSurvey асуултын аль хэсэг нь энгийн текст, аль хэсгийг нь ExpressionScript хөдөлгүүр боловсруулах ёстойг мэднэ.
Баталгаажуулалт
ES нь ихэнх нарийвчилсан асуултын сонголтууд хэрхэн ажиллахыг удирддаг. Эдгээр нь хариултын хамгийн бага/дээд тоо, нэг утгын хамгийн бага/дээд утга, нийлбэр утгын хамгийн бага/дээд утга, оруулсан утга заасан тэмдэгт мөрийн загвартай таарч байгаа эсэхийг шалгах зэрэг зүйлсийг хянадаг. Эдгээр талбар дахь аливаа утгыг илэрхийлэл гэж үздэг тул та бусад асуулттай нарийн төвөгтэй нөхцөлт харилцаатай хамгийн бага/дээд шалгуурыг тохируулж болно.
Эдгээр бүх тохиолдолд нарийвчилсан асуултын шинж чанарыг үргэлж илэрхийлэл гэж үздэг тул түүнийг зааж өгөхдөө буржгар хаалт ашигладаггүй.
Жишээ судалгаанууд хуудсанд төрөл бүрийн баталгаажуулалтын илэрхийллүүд агуулсан олон ажиллаж буй жишээг үзүүлсэн байдаг.
ExpressionScript - танилцуулга
ExpressionScript-ийн талаар болон судалгаагаа сайжруулахын тулд янз бүрийн илэрхийллийг хэрхэн ашиглах талаар илүү ихийг мэдэхийг хүсвэл дараах холбоос дээр дарна уу.