it-swarm-eu.dev

Intuitivní rozhraní pro tvorbu logické logiky?

Zajímalo by mě, jak lidé mají nebo by vytvořili rozhraní, které zjednodušuje vytváření logických booleovských podmínek? (Ano, je to tvůrce databázových dotazů) Podle mého špatného rozhraní je zadává mnoho AND, NOT IN, OR klíčová slova atd.) Nebo má milión rozbalovacích polí.

Zajímalo by mě, jestli má někdo dobrý příklad, ze kterého bych mohl získat nápady? Nebo nějaké návrhy?

V tuto chvíli uvažuji o rozdělení obrazovky s mřížkou pro sestavení dotazu a plátna pro zobrazení vizuální reprezentace sad podmínek a jejich překrývání atd. Jako Vennův diagram. To mi stále přináší problém s použitelností/intuitivností ovládacích prvků v síti.

ÚPRAVA: Velmi mě zajímají nápady, které ji zjednodušují pro méně technické uživatele. Nápady na verzi uživatelského rozhraní pro pokročilé uživatele jsou však také velmi užitečné.

134
Edward Williams

Viz také iTunes 9 nebo novější. Přidává možnost "vnořených" AND/OR) výrazů, podobných tomu, jak by to programátor dělal v závorkách:

alt text

59
Hisham

Hlavním problémem netechnických uživatelů s logickou logikou je pochopení rozdílu mezi AND a OR, protože to vždy neodpovídá přirozenému jazyku (např. „Zobrazit objednávky z New Yorku a New Jersey“ téměř rozhodně znamená Location = NY OR Location = NJ). Uživatelé mají často tendenci interpretovat „nebo“ jako výhradní NEBO. Pak je tu otázka ztráty stopy vnořených závorek.

Jedním z řešení, které se vyhýbá oběma těmto problémům, je grafická reprezentace logiky s instalatérskou nebo elektrickou metaforou. Při tomto přístupu bylo vykonáno několik linií práce:

Shneiderman, B (1991). Vizuální uživatelská rozhraní pro průzkum informací. Sborník z 54. výročního zasedání Americké společnosti pro informační vědy, 28., 379-384.

Murray NS, Paton NW, Goble CA, Bryce J (2000) Kaleidoquery - vizuální jazyk založený na toku a jeho vyhodnocení. Journal of Visual Languages ​​& Computing, 11 (2), 151-189.

Tvůrci dotazů jsou jedním z mála míst, kde má smysl mít oddělené režimy Basic a Advanced. Pravděpodobně zjistíte, že 90% dotazů vašich uživatelů vyhovuje pouze několika vzorům (např. „Zákazníci se jménem začínajícím na Xxxx“, „Účty, za které nesu odpovědnost s vynikajícími účty,“ „Objednávky provedené mezi datem a a b “). Dává to smysl mít tyto konzervované nebo polokonzervované dotazy, které lze snadno vybírat a specifikovat, a zároveň dávat něco jako Kaleidoquery pod Advanced pro vzácnější ad hoc dotazování.

45
Michael Zuschlag

Tento testován dobře s technickými i netechnickými uživateli a může generovat téměř jakýkoli možný databázový dotaz ...

db query builder

Výhodou je, že je to velmi jasné a uživatel může drag and drop ( nebo smazat ) jakýkoli výraz nebo skupina výrazů ve stromu.

Nevýhodou je, kolik místa spotřebuje.

43
DaveAlger

K tomu je k dispozici modul jQuery nazvaný QueryBuilder, který to dělá zajímavým způsobem: http://mistic100.github.io/jQuery-QueryBuilder/

Jquery QueryBuilder Screenshot

14
dryobs

Líbí se mi způsob, jak Apple Mail pravidla fungují:

screenshot

10

Je zde několik dobrých nápadů/odkazů, zejména na některé stávající přístupy. Často, i když ne vždy, je Apple přístup dobrým místem pro začátek - ale možná ve vašem případě to nemusí být. Mám dojem (i když jste to vlastně neřekli), že pracujete s ohromným množstvím dat složených z mnoha polí/proměnných.

Souhlasím s tím, že pokus o nalezení způsobu, jak jej zjednodušit pro méně technické uživatele, je dobrý nápad, pokud očekáváte, že systém bude používat méně technických uživatelů. Jinak může být vývoj méně komplikovaného rozhraní pro malý zisk hodně práce. Také se mi líbí myšlenka Vennova diagramu - bylo by zajímavé vidět, jak to dopadne.

Pokud však jde o skutečné návrhy, jak to zjednodušit, dalším přístupem by bylo pouze vytvoření jakéhokoli procesu „průvodce“, který uživatele provede procesem s kombinací přirozeného jazyka a známého „webového“ vzhledu a pocitu. Níže je znázorněno, jak by to mohlo fungovat, na příkladu databáze motorových vozidel:

enter image description here

Výše uvedené ukazuje, jak by mohl krok 1 fungovat, a uživatelům nabídne řadu možností, které si mohou vybrat zaškrtnutím příslušného políčka. Mohou vybrat jedno nebo více zaškrtávacích políček podle potřeby (nebo možná ne ?!). Pokud zaškrtnou políčko u možnosti, která vyžaduje další informace, jsou příslušná slova hypertextově propojena. Kliknutím na hypertextová slova se uživateli zobrazí něco jako níže uvedený příklad:

enter image description here

Výše uvedený příklad tedy ukazuje, co uživatel může vidět, pokud vybral zaškrtávací políčko „Vozidlo je vyrobeno konkrétními výrobci“ a poté klikl na text s hypertextovým odkazem, aby vybral výrobce, kteří chtějí zahrnout do výsledků vyhledávání. Váš přístup se samozřejmě může lišit v závislosti na tom, zda by měli vidět volné textové pole, rozevírací seznam možností atd.

Nyní, abyste se vypořádali s „výjimkami“ z vyhledávacích kritérií, v podstatě byste znovu vytvořili první okno, ale s jiným zněním, jako například:

enter image description here

Takže po výběru výše uvedené výjimky pro palivo uživatel klikne na hypertextově propojená slova „konkrétní palivo“ a zvolí výjimku takto:

enter image description here

Znovu se může jednat o rozevírací seznam, přepínače atd. V závislosti na tom, co nejlépe vyhovuje danému stavu. Stejným postupem by také vybrali zemi, ve které nechtěli, aby bylo vozidlo vyrobeno.

Samozřejmě vidím tento „Průvodce“ přístup pro méně technické uživatele. Také byste nabídli možnost „Upřesnit“ uživatelům, kteří mají pohodlnější přístup se složitějším přístupem, který může být ve srovnání s přístupem Wizard) jednodušší.

[~ # ~] dodatek [~ # ~]

Dobře, to mě včera v noci udržovalo. Ve skutečnosti vidím tento Wizard přístup) jako docela dobrý způsob, jak jít, takže si myslel, že stojí za to se vrátit ke zlepšení mé odpovědi, protože to může pomoci někomu jinému, pokud ne vy.

Aktualizoval jsem výše uvedené makety a chtěl jsem rozšířit vaši představu o použití rozdělené obrazovky.

Původně jsem si myslel, že po dokončení posledního kroku by pak bylo možné něco jako váš nápad Vennovho diagramu použít k vizuálnímu označení toho, co si uživatel vybral. Ale pak jsem přemýšlel o svém původním tvrzení, že by měl existovat také způsob, jak by se uživatel mohl pohybovat tam a zpět a měnit svá kritéria. Takže teď přemýšlím, že pomocí rozdělené obrazovky můžete dosáhnout obou. Níže je nový obrázek pro ilustraci toho, co si myslím:

Split screen view

Výše uvedené je příkladem toho, co by se mohlo objevit ve druhé části rozdělené obrazovky. Jakmile uživatel vybere svá kritéria, aktualizuje se, aby naznačil, jaký byl jejich výběr. Tento přístup také používá známý webový vzhled a pocit zvýraznění jejich výběru pomocí hypertextových odkazů, a pokud by to chtěli, mohli by změnit svá kritéria kliknutím na hypertextové odkazy na této obrazovce, místo aby se museli přepínat mezi obrazovkami zpět a vpřed kroky. Samozřejmě, pokud by chtěli vybrat nový stav, museli by se možná vrátit k příslušnému kroku. Ale dostanete představu.

Jedinou další věcí, kterou bych chtěl zmínit, je, že bez znalosti složitosti vašich údajů budete možná muset upřesnit tento přístup Wizard). Moje jednoduchá databáze vozidel potřebuje pouze dva kroky, ale komplikovanou jeden může potřebovat více kroků. Smysl tohoto přístupu však není tolik v počtu kroků, ale ve skutečnosti, že Wizard 'mluví' lidi skrze kroky používající přirozený jazyk jako co nejvíce.

V každém případě doufám, že vám toto spolu s dalšími poskytnutými odpověďmi dá něco k zamyšlení. A možná i jiní. Toto je dobré téma a myslím si, že bude relevantní pro mnoho uživatelů.

Hodně štěstí!

10
Monomeeth

Závisí to na úrovni sofistikovanosti vašich uživatelů. Máme něco podobného v současné verzi rozhraní jsme vynechali seskupení a opravili spojení mezi termíny k OR. Každý termín lze negovat. Většina uživatelů je s tímto druhem dotazování v pořádku a většina z nich by nebyla schopna správně formulovat pokročilejší dotazy. Nyní implementujeme dvoustupňový proces, ve kterém lze výsledek dotazu použít k omezení počtu obyvatel v následujícím dotazu (stále se v uživatelském rozhraní nevynechává explicitní seskupení).

Uživatelské rozhraní je základní seznam omezení, která lze přidat, odstranit, aktivovat a deaktivovat a negovat. To bylo dostačující pro většinu dotazů, které uživatelé chtějí vytvořit. Měli jsme design pro novou verzi, která byla založena na konceptu datových toků (silná inspirace z vistrails, viz níže), ale která se nikdy nevykonala. Vistrails je produkt, který lze použít k vytvoření potrubí VTK. Pokud chcete jít cestou mnoha kusů uživatelského rozhraní, dataflow pracuje pro formulaci dotazů, ale také pro formulaci výstupního formátování.

Podívejte se na inspiraci

9
Harald Scheirich

Na rozdíl od opakovaného použití kontingenčních tabulek, jak jsem dříve odpověděl , je to experimentální uživatelské rozhraní, o kterém jsem uvažoval, že zvládne opakující se potřebu psaní AND nebo OR.

Vychází z jednoho prvku, který se musí naučit, že ANDs jsou vodorovné a ORs jsou svislé. Dokáže se však vypořádat s poměrně složitou logickou logikou.

Přehled

Předpokládejme, že A, B, C, D a E jsou booleovské výrazy.

Pro testování je zde představa, jak byste nakreslili dvě různé strany standardní booleovské ekvivalence:

(A and B) or C === (A or C) and (B or C)

enter image description here

To se vztahuje na složitější dotazy:

((A and B and C) or D) and E

enter image description here

Skutečné uživatelské rozhraní

Pro tuto tabulku údajů:

enter image description here

Obrazovka je rozdělena na dvě části:

  1. Sada filtrů (skutečně AND dotazů)
  2. Kombinace filtrů

Nastavíte filtry (ty jsou zadány pouze se základním podmíněným protokolem) a poté je přetáhnete, aby se „sloučily“ s úplným dotazem.

enter image description here

Po přetažení nové sady filtrů se levá strana vrátí do nefiltrovaného seznamu a na pravé straně se zobrazí „sloučená“ sada dat:

enter image description here

Pak byste měli mít možnost přetahovat a upravovat výrazy na pravé straně - ale to vyžaduje mnohem více práce.

7
icc97

Microsoft Access měl rozumný pokus o jednoduché uživatelské rozhraní dotazu databáze vytvořením vizuální verze "Query by Example"

Má přirozenější jazyk, který zabraňuje potřebě vnořeného uživatelského rozhraní, na úkor občasně nadbytečných záznamů v řádcích.

mockup

stáhnout zdroj bmml - Drátové snímky vytvořené pomocí Balsamiq Mockups

6
Jason A.

Je to stará otázka, ale myslel jsem, že přispívám v případě, že by někdo měl zájem. Přestože již bylo poskytnuto mnoho zajímavých odpovědí, pro naši aplikaci jsem navrhl následující:

enter image description here

Zpočátku existuje pouze první skupinový výraz a jedno pravidlo. Kliknutím na „Přidat podmínku“ se nad ní přidá nová podmínka, zatímco „Přidat skupinu“ přidá novou skupinu přímo pod ni; další skupiny z nadřazené skupiny jsou sourozenci, zatímco můžete vytvořit nekonečné vnoření pomocí tlačítka 'Přidat skupinu' z vnořené skupiny.

Na mobilních zařízeních se hromada podmínek spolu s akčním tlačítkem „odebrat“, které nyní změní svůj text na „Odstranit podmínku“.

enter image description here

Design funguje dobře, vypadá dobře, je citlivý a nezabírá příliš mnoho místa.

Přidaný bonus: Nad skupinou zobrazuje jeden řádek konečný stav, např

[Datum větší než XXX AND (jméno se rovná Nicku)]

edit: Aby to bylo přístupnější pro netechnické lidi, sledoval bych, co v tomto vláknu řekli ostatní - sledujte cestu Apple. Místo AND/OR bych použil ALL/ANY + kontext.

6
scooterlord

Pokud jsou vaši uživatelé dostatečně pokročilí, aby znali hierarchii dotazu, jakékoli grafické rozhraní, které jim dáte, musí být natolik plynulé, aby se jim nedostalo do cesty. Myslím si, že rozhraní založené na přetahování prvků za účelem vytvoření implicitní hierarchie je ideální. Zde je rozšířený anotovaný vizuální příklad toho, jak může uživatel sestavit dotaz (A and B) or ((not C) or D):

 Drop A na panel. 
 + --- + 
 | A | 
 + --- + 
 
 Drop "a" za A. 
 + --------------- ---- + 
 | + --- + + ----- + | 
 | | A | a | ... | 
 | + --- + + ----- + | 
 + ------------------- + 
 
 Drop B na "...". 
 + ----------------- + 
 | + --- + + --- + | 
 | | A | a | B | 
 | + --- + + --- + | 
 + ----------------- + 
 
 Přetáhněte "nebo" po "a". 
 + -------------------------------- + 
 | + ----------------- + | 
 | | + --- + + --- + | + ----- + | 
 | | | A | a | B | | nebo | ... | 
 | | + --- + + --- + | + ----- + | 
 | + ----------------- + | 
 + ------------------------ -------- + 
 
 Drop C na "...". 
 + ---------------- -------------- + 
 | + ----------------- + | 
 | | + --- + + --- + | + --- + | 
 | | | A | a | B | | nebo | C | 
 | | + --- + + --- + | + --- + | 
 | + ----------------- + | 
 + ------------------------ ------ + 
 
 Přetáhněte „ne“ na C. 
 + -------------------- ------------------ + 
 | + ----------------- + + ----------- + | 
 | | + --- + + --- + | | + --- + | 
 | | | A | a | B | | nebo | ne | C | | 
 | | + --- + + --- + | | + --- + | 
 | + ----------------- + + ----------- + | 
 + ----------- --------------------------- + 
 
 Drop "nebo" za "not C". 
 + ---------------------------------------------- ------- + 
 | + -------------------------- + | 
 | + ----------------- + | + ----------- + | 
 | | + --- + + --- + | | | + --- + | + ----- + | 
 | | | A | a | B | | nebo | | ne | C | | nebo | ... | | 
 | | + --- + + --- + | | | + --- + | + ----- + | 
 | + ----------------- + | + ----------- + | 
 | + -------------------------- + | 
 + --------------- -------------------------------------- + + 
 
 Drop D na „...“. 
 + ------------------------------------ --------------- + 
 | + ------------------------ + | 
 | + ----------------- + | + ----------- + | 
 | | + --- + + --- + | | | + --- + | + --- + | 
 | | | A | a | B | | nebo | | ne | C | | nebo | D | | 
 | | + --- + + --- + | | | + --- + | + --- + | 
 | + ----------------- + | + ----------- + | 
 | + ------------------------ + | 
 + ----------------- ---------------------------------- + 

Jednotlivé prvky dotazu (A, B atd.) Jsou konstruovány před tím, než jsou upuštěny do panelu, pomocí rozbalovacích polí nebo podle potřeby. Malé okraje a střídavé barvy by to mohly učinit velmi dobře čitelnými, stejně jako pravidla zobrazení, která například na jedné úrovni zobrazují řetězec ors:

 + ------------------------- + 
 | + --- + + --- + + --- + | 
 | | A | nebo | B | nebo | C | 
 | + --- + + --- + + --- + | 
 + ------------------------- + 

Prvky dotazu by přirozeně mohly být rozšířeny, sbaleny, znovu uspořádány a upraveny poté, co byly spadnuty do skládacího panelu.

Neříkám, že je to nejjednodušší způsob, jak vytvořit systém pro tento účel. Ve skutečnosti je to z pohledu vývoje asi tak obtížné, jak to může být. Ale je to nejúčinnější a nejintuitivnější věc, se kterou mohu přijít, a v každém případě je to v podstatě pouze klon uživatelského rozhraní Apple Mail Rule UI), ale s větším důrazem na hierarchii.

Doufám, že to bude užitečné při hledání toho, co je správné.

6
Jon Purdy

CognitoForms má nejintuitivnější AND/OR řešení, na které jsem narazil enter image description here

4
leahg

Zde je rozhraní pro vytváření logické logiky.

Interface for composing boolean logic

Několik myšlenek

  • Rozhraní začíná jednoduše
  • Pokud se to zkomplikuje, je to proto, že jej uživatel vytvořil krok za krokem
  • Žádné úpravy ani přetažení - pouze vytváření a mazání větví
  • Podmínky jsou v tomto příkladu jednoduchým rozevíracím seznamem, ale mohly by být komplikovanější nebo možná negativnější

dvojznačnost

Kromě toho jsem se také zabýval nejednoznačností „ukázat mi červené a modré“ košile, protože uživatel by mohl technicky znamenat „červené nebo modré "košile.

Myslím, že pokud je požádáte, aby popsali singulární verzi („košili“), pak je problém poněkud omezen. Například, oni by neřekli "Ukaž mi červené a modré tričko", pokud znamenají "červené nebo modré".

4
bendytree

Přidání příkladu z aplikace ticketing , kterou jsme vyvinuli.

Místo seskupení „A/NEBO“ jsme se rozhodli nahoře na rozbalovacím seznamu „vše/žádné/žádné“. Přesně kvůli výše uvedenému příkladu: když netechničtí lidé říkají „gimme objednávky z New Yorku a New Jersey“, tit skutečně znamená „logický NEBO“.

enter image description here

Rozhodli jsme se také proti seskupování více komplexních kombinací AND/OR, protože lidé byli zmatení. Místo toho jim nabízíme „rekurzi“ a nabídneme „spuštění jiného pravidla“ (ve spodní části obrazovky).

2
Alex

Pracuji na redesignu webové aplikace, která používá Boolean, a níže uvedený obrázek ukazuje, jak se v současné době provádí. Uživatel může odstranit závorky tam, kde je to potřeba, nebo je přidat zpět. Snažím se najít lepší způsob, jak toho dosáhnout, takže může nakonec zůstat v této části, kterou uživatelé podle všeho používají, docela dobře.

UI boolean

2
Gueda

Moje oblíbené uživatelské rozhraní pro vytváření pravidel je server scénáře ATG . Koukni na tohle:

alt text

2
Julian H

Pro vytváření relativně složitých dotazů jedné tabulky jsou velmi užitečné kontingenční tabulky .

Dobré věci

  1. Můžete získat SUM, AVG a GROUP s relativně malými znalostmi.
  2. Rozdělením polí mezi sloupce vs řádky získáte AND dotazy
  3. Součty vám dávají OR dotazy
  4. Můžete správně sestavovat dotazy - tj. Rychle uvidíte hlavní sadu, poté přidejte řádky/sloupce a poté přidejte filtry, které vám ukáže, která data jsou k dispozici pro odfiltrování

Špatné věci

  1. Myslím, že překonáte limity, pokud se pokusíte kombinovat více než jednu tabulku/datovou sadu.
  2. V závislosti na tom, jak hluboce vnoříte, můžete mít své dotazy AND/OR.

Ale alespoň nemáte spoustu combo boxů a combo boxy, které máte, jsou intelnější.

Tady je jedna, kterou jsem udělal dříve, s několika krásnými fantasy fotbalovými statistikami, abych s tím šel.

enter image description here

2
icc97

Je obtížné přesně určit, co je intuitivní pro něco, s čím se tradičně zabývali techničtí uživatelé (nemusí nutně najít rozhraní více uživatelsky přívětivější než příkazové příkazy). Pro tuto účinnost existuje zvláštní důvod, protože dotazy lze jednoznačně zadávat a provádět v příkazovém řádku příkazového řádku. Pravděpodobně také nikoho nepřekvapí, že tradiční návrh rozhraní se pravděpodobně zlomí, pokud jde o složitější dotazy.

Přesto si myslím, že je pravděpodobně bezpečné říci, že pokud jde o logickou logiku, nejběžnějším/nejznámějším tématem musí být Vennův diagram. Otázkou tedy může být, jak provést přesná prohlášení databázových dotazů a kombinovat je s jednoduchostí Vennova diagramu, jako je rozhraní?

Koncepčně se domnívám, že možným řešením by bylo zkombinovat jak prostorové uspořádání s uživatelskými interakcemi, které odrážejí povahu prováděných operací. Tímto způsobem získáte koncept Venn diagramu pro uživatele a zároveň učiníte operace „intuitivní“ tak, abyste jim porozuměli. To znamená, že efektivně přijímá to, co @bendytree a @sboye navrhly pro provedení skutečného zadávání dat, a také vydává výsledek těchto operací ve formě Venn diagramu, takže uživatel může okamžitě vidět, zda provedl správný typ booleovské operace . Možná však budete chtít, aby byl vstup ještě snazší implementací nějakého drag'n'drop pro booleovské operátory a datové sady/pole, které chcete zobrazit, přičemž se inspirujete některými z interaktivních Vennových diagramů, které můžete najít ve vyhledávání Google.

1
Michael Lai

Pokud je mobilní, použijte tlačítko pro každou operaci, které jej jednoduše vloží do textového pole. Poskytněte odkaz na pomoc při booleovské algebře a podobně. To by bylo snadné a flexibilní.

0
timseal