Merge pull request #12 from sartography/feature/pre_post_script_launch_button

using new bpmn-js-spiffworkflow for python scripts w/ burnettk danfunk
This commit is contained in:
Kevin Burnett 2022-10-31 20:58:28 +00:00 committed by GitHub
commit 4eae8bfbef
4 changed files with 41 additions and 19 deletions

View File

@ -1069,12 +1069,13 @@ def task_show(process_instance_id: int, task_id: str) -> flask.wrappers.Response
) )
if ui_form_contents: if ui_form_contents:
task.form_ui_schema = ui_form_contents task.form_ui_schema = ui_form_contents
elif task.type == "Manual Task":
if task.properties and task.data: if task.properties and task.data and "instructionsForEndUser" in task.properties:
if task.properties["instructionsForEndUser"]: print(f"task.properties['instructionsForEndUser']: {task.properties['instructionsForEndUser']}")
task.properties["instructionsForEndUser"] = render_jinja_template( if task.properties["instructionsForEndUser"]:
task.properties["instructionsForEndUser"], task.data task.properties["instructionsForEndUser"] = render_jinja_template(
) task.properties["instructionsForEndUser"], task.data
)
return make_response(jsonify(task), 200) return make_response(jsonify(task), 200)

View File

@ -177,11 +177,16 @@ export default function ReactDiagramEditor({
}); });
} }
function handleLaunchScriptEditor(element: any) { function handleLaunchScriptEditor(
element: any,
script: string,
scriptType: string,
eventBus: any
) {
if (onLaunchScriptEditor) { if (onLaunchScriptEditor) {
setPerformingXmlUpdates(true); setPerformingXmlUpdates(true);
const modeling = diagramModeler.get('modeling'); const modeling = diagramModeler.get('modeling');
onLaunchScriptEditor(element, modeling); onLaunchScriptEditor(element, script, scriptType, eventBus, modeling);
} }
} }
@ -199,12 +204,12 @@ export default function ReactDiagramEditor({
setDiagramModelerState(diagramModeler); setDiagramModelerState(diagramModeler);
diagramModeler.on('launch.script.editor', (event: any) => { diagramModeler.on('script.editor.launch', (event: any) => {
const { error, element } = event; const { error, element, scriptType, script, eventBus } = event;
if (error) { if (error) {
console.log(error); console.log(error);
} }
handleLaunchScriptEditor(element); handleLaunchScriptEditor(element, script, scriptType, eventBus);
}); });
// 'element.hover', // 'element.hover',

View File

@ -18,7 +18,9 @@ export default function ProcessModelEditDiagram() {
const [showFileNameEditor, setShowFileNameEditor] = useState(false); const [showFileNameEditor, setShowFileNameEditor] = useState(false);
const handleShowFileNameEditor = () => setShowFileNameEditor(true); const handleShowFileNameEditor = () => setShowFileNameEditor(true);
const [scriptText, setScriptText] = useState(''); const [scriptText, setScriptText] = useState<string>('');
const [scriptType, setScriptType] = useState<string>('');
const [scriptEventBus, setScriptEventBus] = useState<any>(null);
const [scriptModeling, setScriptModeling] = useState(null); const [scriptModeling, setScriptModeling] = useState(null);
const [scriptElement, setScriptElement] = useState(null); const [scriptElement, setScriptElement] = useState(null);
const [showScriptEditor, setShowScriptEditor] = useState(false); const [showScriptEditor, setShowScriptEditor] = useState(false);
@ -275,25 +277,39 @@ export default function ProcessModelEditDiagram() {
} }
}; };
const onLaunchScriptEditor = (element: any, modeling: any) => { const onLaunchScriptEditor = (
setScriptText(element.businessObject.script || ''); element: any,
script: string,
scriptTypeString: string,
eventBus: any,
modeling: any
) => {
// TODO: modeling is only needed for script unit tests.
// we should update this to act like updating scripts
// where we pass an event to bpmn-js
setScriptModeling(modeling); setScriptModeling(modeling);
setScriptText(script || '');
setScriptType(scriptTypeString);
setScriptEventBus(eventBus);
setScriptElement(element); setScriptElement(element);
setScriptUnitTestElementWithIndex(0, element); setScriptUnitTestElementWithIndex(0, element);
handleShowScriptEditor(); handleShowScriptEditor();
}; };
const handleScriptEditorClose = () => { const handleScriptEditorClose = () => {
scriptEventBus.fire('script.editor.update', {
scriptType,
script: scriptText,
element: scriptElement,
});
resetUnitTextResult(); resetUnitTextResult();
setShowScriptEditor(false); setShowScriptEditor(false);
}; };
const handleEditorScriptChange = (value: any) => { const handleEditorScriptChange = (value: any) => {
setScriptText(value); setScriptText(value);
(scriptModeling as any).updateProperties(scriptElement, {
scriptFormat: 'python',
script: value,
});
}; };
const handleEditorScriptTestUnitInputChange = (value: any) => { const handleEditorScriptTestUnitInputChange = (value: any) => {

View File

@ -144,7 +144,7 @@ export default function TaskShow() {
const instructionsElement = (taskToUse: any) => { const instructionsElement = (taskToUse: any) => {
let instructions = ''; let instructions = '';
if (taskToUse.type === 'Manual Task') { if (taskToUse.properties.instructionsForEndUser) {
instructions = taskToUse.properties.instructionsForEndUser; instructions = taskToUse.properties.instructionsForEndUser;
} }
return ( return (