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 168aadbebb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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:
task.form_ui_schema = ui_form_contents
elif task.type == "Manual Task":
if task.properties and task.data:
if task.properties["instructionsForEndUser"]:
task.properties["instructionsForEndUser"] = render_jinja_template(
task.properties["instructionsForEndUser"], task.data
)
if task.properties and task.data and "instructionsForEndUser" in task.properties:
print(f"task.properties['instructionsForEndUser']: {task.properties['instructionsForEndUser']}")
if task.properties["instructionsForEndUser"]:
task.properties["instructionsForEndUser"] = render_jinja_template(
task.properties["instructionsForEndUser"], task.data
)
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) {
setPerformingXmlUpdates(true);
const modeling = diagramModeler.get('modeling');
onLaunchScriptEditor(element, modeling);
onLaunchScriptEditor(element, script, scriptType, eventBus, modeling);
}
}
@ -199,12 +204,12 @@ export default function ReactDiagramEditor({
setDiagramModelerState(diagramModeler);
diagramModeler.on('launch.script.editor', (event: any) => {
const { error, element } = event;
diagramModeler.on('script.editor.launch', (event: any) => {
const { error, element, scriptType, script, eventBus } = event;
if (error) {
console.log(error);
}
handleLaunchScriptEditor(element);
handleLaunchScriptEditor(element, script, scriptType, eventBus);
});
// 'element.hover',

View File

@ -18,7 +18,9 @@ export default function ProcessModelEditDiagram() {
const [showFileNameEditor, setShowFileNameEditor] = useState(false);
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 [scriptElement, setScriptElement] = useState(null);
const [showScriptEditor, setShowScriptEditor] = useState(false);
@ -275,25 +277,39 @@ export default function ProcessModelEditDiagram() {
}
};
const onLaunchScriptEditor = (element: any, modeling: any) => {
setScriptText(element.businessObject.script || '');
const onLaunchScriptEditor = (
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);
setScriptText(script || '');
setScriptType(scriptTypeString);
setScriptEventBus(eventBus);
setScriptElement(element);
setScriptUnitTestElementWithIndex(0, element);
handleShowScriptEditor();
};
const handleScriptEditorClose = () => {
scriptEventBus.fire('script.editor.update', {
scriptType,
script: scriptText,
element: scriptElement,
});
resetUnitTextResult();
setShowScriptEditor(false);
};
const handleEditorScriptChange = (value: any) => {
setScriptText(value);
(scriptModeling as any).updateProperties(scriptElement, {
scriptFormat: 'python',
script: value,
});
};
const handleEditorScriptTestUnitInputChange = (value: any) => {

View File

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