Skip to content

Commit 8e6d250

Browse files
authored
Improve workflows (#3083)
* fix #3076 * addressing @ElDeveloper comments * adding workflows GUI * improve HTML * db changes and improvements * comment out new db changes * rm default_workflows from PluginHandler.get * improving workflows after deployment * fix error * clean up * minor fixes * improving html * comments from @justinshaffer * addressing @ElDeveloper comments
1 parent 44e9f69 commit 8e6d250

File tree

10 files changed

+391
-88
lines changed

10 files changed

+391
-88
lines changed

qiita_db/processing_job.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1974,7 +1974,7 @@ def from_default_workflow(cls, user, dflt_wf, req_params, name=None,
19741974
parent_ids.append(source_id)
19751975
# Get the connections between the job and the source
19761976
connections = data['connections'].connections
1977-
for out, in_param in connections:
1977+
for out, in_param, _ in connections:
19781978
# We take advantage of the fact the parameters are
19791979
# stored in JSON to encode the name of the output
19801980
# artifact from the previous job

qiita_db/software.py

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1803,12 +1803,13 @@ def connections(self):
18031803
the destination command.
18041804
"""
18051805
with qdb.sql_connection.TRN:
1806-
sql = """SELECT name, parameter_name
1806+
sql = """SELECT name, parameter_name, artifact_type
18071807
FROM qiita.default_workflow_edge_connections c
18081808
JOIN qiita.command_output o
18091809
ON c.parent_output_id = o.command_output_id
18101810
JOIN qiita.command_parameter p
18111811
ON c.child_input_id = p.command_parameter_id
1812+
LEFT JOIN qiita.artifact_type USING (artifact_type_id)
18121813
WHERE default_workflow_edge_id = %s"""
18131814
qdb.sql_connection.TRN.add(sql, [self.id])
18141815
return qdb.sql_connection.TRN.execute_fetchindex()
@@ -1852,8 +1853,8 @@ def iter(cls, active=True):
18521853
def active(self):
18531854
"""Retrieves active status of the default workflow
18541855
1855-
Retruns
1856-
----------
1856+
Returns
1857+
-------
18571858
active : bool
18581859
active value
18591860
"""
@@ -1886,9 +1887,38 @@ def name(self):
18861887
qdb.sql_connection.TRN.add(sql, [self.id])
18871888
return qdb.sql_connection.TRN.execute_fetchlast()
18881889

1890+
@property
1891+
def description(self):
1892+
"""Retrieves the description of the default workflow
1893+
1894+
Returns
1895+
-------
1896+
str
1897+
description value
1898+
"""
1899+
with qdb.sql_connection.TRN:
1900+
sql = """SELECT description
1901+
FROM qiita.default_workflow
1902+
WHERE default_workflow_id = %s"""
1903+
qdb.sql_connection.TRN.add(sql, [self.id])
1904+
return qdb.sql_connection.TRN.execute_fetchlast()
1905+
1906+
@description.setter
1907+
def description(self, description):
1908+
"""Changes the description of the default workflow
1909+
1910+
Parameters
1911+
----------
1912+
description : str
1913+
New description value
1914+
"""
1915+
sql = """UPDATE qiita.default_workflow SET description = %s
1916+
WHERE default_workflow_id = %s"""
1917+
qdb.sql_connection.perform_as_transaction(sql, [description, self._id])
1918+
18891919
@property
18901920
def data_type(self):
1891-
"""Retrieves all the data_types the workflow accepts
1921+
"""Retrieves all the data_types accepted by the default workflow
18921922
18931923
Returns
18941924
----------
@@ -1917,7 +1947,8 @@ def graph(self):
19171947
# Retrieve all graph workflow nodes
19181948
sql = """SELECT default_workflow_node_id
19191949
FROM qiita.default_workflow_node
1920-
WHERE default_workflow_id = %s"""
1950+
WHERE default_workflow_id = %s
1951+
ORDER BY default_workflow_node_id"""
19211952
qdb.sql_connection.TRN.add(sql, [self.id])
19221953
db_nodes = qdb.sql_connection.TRN.execute_fetchflatten()
19231954

@@ -1930,7 +1961,8 @@ def graph(self):
19301961
JOIN qiita.default_workflow_node n
19311962
ON e.parent_id = n.default_workflow_node_id
19321963
OR e.child_id = n.default_workflow_node_id
1933-
WHERE default_workflow_id = %s"""
1964+
WHERE default_workflow_id = %s
1965+
ORDER BY default_workflow_edge_id"""
19341966
qdb.sql_connection.TRN.add(sql, [self.id])
19351967
db_edges = qdb.sql_connection.TRN.execute_fetchindex()
19361968

qiita_db/support_files/patches/81.sql

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ ALTER TABLE qiita.prep_template ADD modification_timestamp TIMESTAMP DEFAULT CUR
1010

1111
-- a. Removing software_id from qiita.default_workflow and replacing it by a
1212
-- table which will like different data_types with the default_workflow +
13-
-- adding an active flag in case we need to deprecate default_workflows
13+
-- adding an active flag in case we need to deprecate default_workflows +
14+
-- adding a description column
1415
ALTER TABLE qiita.default_workflow DROP software_id;
1516
CREATE TABLE qiita.default_workflow_data_type (
1617
default_workflow_id BIGINT NOT NULL,
@@ -20,6 +21,7 @@ CREATE TABLE qiita.default_workflow_data_type (
2021
PRIMARY KEY(default_workflow_id, data_type_id)
2122
);
2223
ALTER TABLE qiita.default_workflow ADD active BOOL DEFAULT TRUE;
24+
ALTER TABLE qiita.default_workflow ADD description TEXT;
2325

2426
-- b. Removing command_id from qiita.default_workflow_node and default_parameter_set as this information
2527
-- can be accessed via the default_parameter object (the info is duplicated)
@@ -37,3 +39,11 @@ INSERT INTO qiita.default_workflow_data_type (default_workflow_id, data_type_id)
3739
(1, 2),
3840
(2, 2),
3941
(3, 3);
42+
43+
-- d. adding descriptions
44+
UPDATE qiita.default_workflow
45+
SET description = 'This accepts html <a href="https://qiita.ucsd.edu">Qiita!</a><br/><br/><b>BYE!</b>'
46+
WHERE default_workflow_id = 1;
47+
UPDATE qiita.default_workflow
48+
SET description = 'This is another description'
49+
WHERE default_workflow_id = 2;

qiita_db/support_files/qiita-db.dbs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,7 @@
526526
<column name="default_workflow_id" type="bigserial" jt="-5" mandatory="y" />
527527
<column name="name" type="varchar" jt="12" mandatory="y" />
528528
<column name="active" type="boolean" jt="-7" />
529+
<column name="description" type="text" jt="12" />
529530
<index name="pk_default_workflow" unique="PRIMARY_KEY" >
530531
<column name="default_workflow_id" />
531532
</index>
@@ -1710,7 +1711,7 @@ Controlled Vocabulary]]></comment>
17101711
<entity schema="qiita" name="data_directory" color="B2CDF7" x="576" y="928" />
17111712
<entity schema="qiita" name="data_type" color="D0DEF5" x="704" y="1120" />
17121713
<entity schema="qiita" name="default_parameter_set" color="B2CDF7" x="2416" y="1104" />
1713-
<entity schema="qiita" name="default_workflow" color="B2CDF7" x="2672" y="1136" />
1714+
<entity schema="qiita" name="default_workflow" color="B2CDF7" x="2656" y="1120" />
17141715
<entity schema="qiita" name="default_workflow_data_type" color="C1D8EE" x="2640" y="1008" />
17151716
<entity schema="qiita" name="default_workflow_edge" color="B2CDF7" x="2656" y="1248" />
17161717
<entity schema="qiita" name="default_workflow_edge_connections" color="B2CDF7" x="2576" y="1408" />

qiita_db/support_files/qiita-db.html

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<!DOCTYPE html>
33
<html lang='en-us' xmlns='http://www.w3.org/1999/xhtml' >
44
<head>
5-
<title>qiita&#45;db</title>
5+
<title>qiita</title>
66
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
77
<meta name='viewport' content='width=device-width, initial-scale=1, shrink-to-fit=no' />
88
<link rel='shortcut icon' href='https://dbschema.com/images/favicon.ico'>
@@ -299,7 +299,7 @@
299299
<!-- == Legend == -->
300300
<g transform='translate(10,10)'>
301301
<rect x='10' y='10' width='230' height='56' rx='6' ry='6' style='fill:url(#legendGradient);filter:url(#shadow);'/>
302-
<text x='20' y='25' class='legendTitle' >qiita-db</text>
302+
<text x='20' y='25' class='legendTitle' >qiita</text>
303303
<a xlink:href='https://dbschema.com'><text x='20' y='39' class='legendSubTitle'><tspan>(c) DbSchema</tspan></text></a>
304304
<text x='20' y='53' class='legendSubTitle'><tspan>Hover columns to read the comments.</tspan></text>
305305
</g>
@@ -629,13 +629,13 @@
629629
default_parameter_set ref software_command ( command_id )</title></path>
630630
<text x='2445' y='1218' transform='rotate(90 2445,1218)' class='relName'>command_id</text>
631631
<!-- == Fk 'default_workflow_data_type_fk_default_workflow_id' == -->
632-
<path id='default_workflow_data_type_fk_default_workflow_id' onmouseover="hghl(['default_workflow_data_type_fk_default_workflow_id','qiita.default_workflow_data_type.default_workflow_id','qiita.default_workflow.default_workflow_id'])" onmouseout="uhghl(['default_workflow_data_type_fk_default_workflow_id','qiita.default_workflow_data_type.default_workflow_id','qiita.default_workflow.default_workflow_id'])" transform='translate(8,0)' class='scene' d='M 2688,1088L 2688,1120' >
632+
<path id='default_workflow_data_type_fk_default_workflow_id' onmouseover="hghl(['default_workflow_data_type_fk_default_workflow_id','qiita.default_workflow_data_type.default_workflow_id','qiita.default_workflow.default_workflow_id'])" onmouseout="uhghl(['default_workflow_data_type_fk_default_workflow_id','qiita.default_workflow_data_type.default_workflow_id','qiita.default_workflow.default_workflow_id'])" transform='translate(8,0)' class='scene' d='M 2672,1088L 2672,1104' >
633633
<title>Fk fk_default_workflow_id
634634
default_workflow_data_type ref default_workflow ( default_workflow_id )</title>
635635
</path>
636-
<path transform='translate(8,0)' marker-start='url(#foot1p)' marker-end='url(#arrow1)' d='M 2688,1088L 2688,1120' ><title>Fk fk_default_workflow_id
636+
<path transform='translate(8,0)' marker-start='url(#foot1p)' marker-end='url(#arrow1)' d='M 2672,1088L 2672,1104' ><title>Fk fk_default_workflow_id
637637
default_workflow_data_type ref default_workflow ( default_workflow_id )</title></path>
638-
<text x='2701' y='1090' transform='rotate(90 2701,1090)' class='relName'>default_workflow_id</text>
638+
<text x='2685' y='1090' transform='rotate(90 2685,1090)' class='relName'>default_workflow_id</text>
639639
<!-- == Fk 'default_workflow_edge_fk_default_workflow_edge' == -->
640640
<path id='default_workflow_edge_fk_default_workflow_edge' onmouseover="hghl(['default_workflow_edge_fk_default_workflow_edge','qiita.default_workflow_edge.parent_id','qiita.default_workflow_node.default_workflow_node_id'])" onmouseout="uhghl(['default_workflow_edge_fk_default_workflow_edge','qiita.default_workflow_edge.parent_id','qiita.default_workflow_node.default_workflow_node_id'])" transform='translate(8,0)' class='scene' d='M 2640,1280L 2624,1280' >
641641
<title>Fk fk_default_workflow_edge
@@ -1481,12 +1481,12 @@
14811481
<path d='M 704 1140 L 704 1120 Q 704 1112 712 1112 L 824 1112 Q 832 1112 832 1120 L 832 1140 L704 1140 ' style='fill:url(#tbg_D0DEF5);stroke:1;stroke-opacity:0.1;' />
14821482
<rect class='entity' x='704' y='1112' width='128' height='80' rx='8' ry='8' style='fill:none;stroke:#27282C'/>
14831483
<a xlink:href='#qiita.data_type'><text x='732' y='1131' >data_type</text><title>Table qiita.data_type</title></a>
1484-
<use id='nn' x='706' y='1149' xlink:href='#nn'/><use id='pk' x='706' y='1148' xlink:href='#pk'><title>Pk pk_data_type ( data_type_id ) </title></use><a xlink:href='#qiita.data_type_data_type_id'><text id='qiita.data_type.data_type_id' x='723' y='1159' onmouseover="hghl(['analysis_filepath_fk_analysis_filepath_1','qiita.analysis_filepath.data_type_id','artifact_fk_artifact_data_type','qiita.artifact.data_type_id','prep_template_fk_prep_template_data_type','qiita.prep_template.data_type_id','default_workflow_data_type_fk_data_type_id','qiita.default_workflow_data_type.data_type_id'])" onmouseout="uhghl(['analysis_filepath_fk_analysis_filepath_1','qiita.analysis_filepath.data_type_id','artifact_fk_artifact_data_type','qiita.artifact.data_type_id','prep_template_fk_prep_template_data_type','qiita.prep_template.data_type_id','default_workflow_data_type_fk_data_type_id','qiita.default_workflow_data_type.data_type_id'])">data_type_id</text><title>data_type_id
1484+
<use id='nn' x='706' y='1149' xlink:href='#nn'/><use id='pk' x='706' y='1148' xlink:href='#pk'><title>Pk pk_data_type ( data_type_id ) </title></use><a xlink:href='#qiita.data_type_data_type_id'><text id='qiita.data_type.data_type_id' x='723' y='1159' onmouseover="hghl(['analysis_filepath_fk_analysis_filepath_1','qiita.analysis_filepath.data_type_id','artifact_fk_artifact_data_type','qiita.artifact.data_type_id','default_workflow_data_type_fk_data_type_id','qiita.default_workflow_data_type.data_type_id','prep_template_fk_prep_template_data_type','qiita.prep_template.data_type_id'])" onmouseout="uhghl(['analysis_filepath_fk_analysis_filepath_1','qiita.analysis_filepath.data_type_id','artifact_fk_artifact_data_type','qiita.artifact.data_type_id','default_workflow_data_type_fk_data_type_id','qiita.default_workflow_data_type.data_type_id','prep_template_fk_prep_template_data_type','qiita.prep_template.data_type_id'])">data_type_id</text><title>data_type_id
14851485
* bigserial</title></a>
14861486
<a xlink:href='#qiita.data_type.data_type_id'><use id='ref' x='820' y='1148' xlink:href='#ref'/><title>Referred by analysis_filepath ( data_type_id )
14871487
Referred by artifact ( data_type_id )
1488-
Referred by prep_template ( data_type_id )
1489-
Referred by default_workflow_data_type ( data_type_id ) </title></a>
1488+
Referred by default_workflow_data_type ( data_type_id )
1489+
Referred by prep_template ( data_type_id ) </title></a>
14901490
<use id='nn' x='706' y='1165' xlink:href='#nn'/><use id='unq' x='706' y='1164' xlink:href='#unq'><title>Unq idx_data_type ( data_type ) </title></use><a xlink:href='#qiita.data_type_data_type'><text id='qiita.data_type.data_type' x='723' y='1175'>data_type</text><title>data_type
14911491
* varchar
14921492
Data type (16S, metabolome, etc) the job will use</title></a>
@@ -1509,19 +1509,21 @@
15091509
This is a varchar here - but is of type JSON in postgresql.</title></a>
15101510
<text x='2621' y='1188' text-anchor='end' class='colType'>t</text>
15111511
<!-- == Table 'default_workflow' == -->
1512-
<rect class='entity' style='stroke:none;' x='2672' y='1128' width='176' height='96' rx='8' ry='8' />
1513-
<path d='M 2672 1156 L 2672 1136 Q 2672 1128 2680 1128 L 2840 1128 Q 2848 1128 2848 1136 L 2848 1156 L2672 1156 ' style='fill:url(#tbg_B2CDF7);stroke:1;stroke-opacity:0.1;' />
1514-
<rect class='entity' x='2672' y='1128' width='176' height='96' rx='8' ry='8' style='fill:none;stroke:#27282C'/>
1515-
<a xlink:href='#qiita.default_workflow'><text x='2701' y='1147' >default_workflow</text><title>Table qiita.default_workflow</title></a>
1516-
<use id='nn' x='2674' y='1165' xlink:href='#nn'/><use id='pk' x='2674' y='1164' xlink:href='#pk'><title>Pk pk_default_workflow ( default_workflow_id ) </title></use><a xlink:href='#qiita.default_workflow_default_workflow_id'><text id='qiita.default_workflow.default_workflow_id' x='2691' y='1175' onmouseover="hghl(['default_workflow_node_fk_default_workflow_command_1','qiita.default_workflow_node.default_workflow_id','default_workflow_data_type_fk_default_workflow_id','qiita.default_workflow_data_type.default_workflow_id'])" onmouseout="uhghl(['default_workflow_node_fk_default_workflow_command_1','qiita.default_workflow_node.default_workflow_id','default_workflow_data_type_fk_default_workflow_id','qiita.default_workflow_data_type.default_workflow_id'])">default_workflow_id</text><title>default_workflow_id
1512+
<rect class='entity' style='stroke:none;' x='2656' y='1112' width='176' height='112' rx='8' ry='8' />
1513+
<path d='M 2656 1140 L 2656 1120 Q 2656 1112 2664 1112 L 2824 1112 Q 2832 1112 2832 1120 L 2832 1140 L2656 1140 ' style='fill:url(#tbg_B2CDF7);stroke:1;stroke-opacity:0.1;' />
1514+
<rect class='entity' x='2656' y='1112' width='176' height='112' rx='8' ry='8' style='fill:none;stroke:#27282C'/>
1515+
<a xlink:href='#qiita.default_workflow'><text x='2685' y='1131' >default_workflow</text><title>Table qiita.default_workflow</title></a>
1516+
<use id='nn' x='2658' y='1149' xlink:href='#nn'/><use id='pk' x='2658' y='1148' xlink:href='#pk'><title>Pk pk_default_workflow ( default_workflow_id ) </title></use><a xlink:href='#qiita.default_workflow_default_workflow_id'><text id='qiita.default_workflow.default_workflow_id' x='2675' y='1159' onmouseover="hghl(['default_workflow_data_type_fk_default_workflow_id','qiita.default_workflow_data_type.default_workflow_id','default_workflow_node_fk_default_workflow_command_1','qiita.default_workflow_node.default_workflow_id'])" onmouseout="uhghl(['default_workflow_data_type_fk_default_workflow_id','qiita.default_workflow_data_type.default_workflow_id','default_workflow_node_fk_default_workflow_command_1','qiita.default_workflow_node.default_workflow_id'])">default_workflow_id</text><title>default_workflow_id
15171517
* bigserial</title></a>
1518-
<a xlink:href='#qiita.default_workflow.default_workflow_id'><use id='ref' x='2836' y='1164' xlink:href='#ref'/><title>Referred by default_workflow_node ( default_workflow_id )
1519-
Referred by default_workflow_data_type ( default_workflow_id ) </title></a>
1520-
<use id='nn' x='2674' y='1181' xlink:href='#nn'/><use id='unq' x='2674' y='1180' xlink:href='#unq'><title>Unq idx_default_workflow ( name ) </title></use><a xlink:href='#qiita.default_workflow_name'><text id='qiita.default_workflow.name' x='2691' y='1191'>name</text><title>name
1518+
<a xlink:href='#qiita.default_workflow.default_workflow_id'><use id='ref' x='2820' y='1148' xlink:href='#ref'/><title>Referred by default_workflow_data_type ( default_workflow_id )
1519+
Referred by default_workflow_node ( default_workflow_id ) </title></a>
1520+
<use id='nn' x='2658' y='1165' xlink:href='#nn'/><use id='unq' x='2658' y='1164' xlink:href='#unq'><title>Unq idx_default_workflow ( name ) </title></use><a xlink:href='#qiita.default_workflow_name'><text id='qiita.default_workflow.name' x='2675' y='1175'>name</text><title>name
15211521
* varchar</title></a>
1522-
<text x='2845' y='1188' text-anchor='end' class='colType'>t</text> <a xlink:href='#qiita.default_workflow_active'><text id='qiita.default_workflow.active' x='2691' y='1207'>active</text><title>active
1522+
<text x='2829' y='1172' text-anchor='end' class='colType'>t</text> <a xlink:href='#qiita.default_workflow_active'><text id='qiita.default_workflow.active' x='2675' y='1191'>active</text><title>active
15231523
boolean</title></a>
1524-
<text x='2845' y='1204' text-anchor='end' class='colType'>b</text>
1524+
<text x='2829' y='1188' text-anchor='end' class='colType'>b</text> <a xlink:href='#qiita.default_workflow_description'><text id='qiita.default_workflow.description' x='2675' y='1207'>description</text><title>description
1525+
text</title></a>
1526+
<text x='2829' y='1204' text-anchor='end' class='colType'>t</text>
15251527
<!-- == Table 'default_workflow_data_type' == -->
15261528
<rect class='entity' style='stroke:none;' x='2640' y='1000' width='208' height='80' rx='8' ry='8' />
15271529
<path d='M 2640 1028 L 2640 1008 Q 2640 1000 2648 1000 L 2840 1000 Q 2848 1000 2848 1008 L 2848 1028 L2640 1028 ' style='fill:url(#tbg_C1D8EE);stroke:1;stroke-opacity:0.1;' />
@@ -3696,7 +3698,7 @@
36963698
</table></div></div>
36973699

36983700
<br><br>
3699-
<div class='card'><div class='card-body'><a name='qiita.default_workflow' onclick='window.scrollTo(2472, 1136);return false;' style='cursor:pointer;'><h5 class='card-title'>Table default_workflow</h5></a>
3701+
<div class='card'><div class='card-body'><a name='qiita.default_workflow' onclick='window.scrollTo(2456, 1120);return false;' style='cursor:pointer;'><h5 class='card-title'>Table default_workflow</h5></a>
37003702
<table class='table table-sm table-bordered small' style='table-layout: fixed; word-wrap: break-word;'>
37013703
<thead>
37023704
<tr><th style='width:5%'>Idx</th><th style='width:40%'>Field Name</th><th>Data Type</th></tr>
@@ -3717,6 +3719,11 @@
37173719
<td><a name='qiita.default_workflow_active'>active</a></td>
37183720
<td> boolean </td>
37193721
</tr>
3722+
<tr>
3723+
<td>&nbsp;</td>
3724+
<td><a name='qiita.default_workflow_description'>description</a></td>
3725+
<td> text </td>
3726+
</tr>
37203727
<tr><th colspan='3'>Indexes</th></tr>
37213728
<tr> <td><svg width='14' height='14'><use xlink:href='#pk'/></svg></td><td>pk&#95;default&#95;workflow</td>
37223729
<td> ON default&#95;workflow&#95;id</td>

0 commit comments

Comments
 (0)